pandas是什么意思,python中的pandas是什么意思

  pandas是什么意思,python中的pandas是什么意思

  官方网站:3359 pandas . py data.org/docs/reference/API/pandas.data frame.aggregate.html

  本文的主要路线是探索agg的基本用法和应用场景,最后简单搜索源代码层。

  1.agg参数介绍和演示的使用

  2.GroupBy的agg用例

  3.看下一位推导出agg的根本原理。

  1.引入agg参数,使用demo agg作为aggregate的别名。

  数据框.聚合http://www.Sina.com/

  该名称表示传输格式的功能,如func,用于汇总数据。对于函数,它必须在传递给DataFrame或DataFrame时工作。如果函数、str、list或dictionary [np.sum," mean "轴为0或" index ",则应用:将函数应用于每一列。对于1或列:将函数应用于所有行。{0或 index ,1或 columns},默认值01表示返回的数据类型通常有三种:标量(值)、序列和数据帧。

  可以对应使用。

  标量:用单个函数调用Series.agg。

  Series:用单个函数调用DataFrame.agg。

  DaFrame:使用多个函数调用DataFrame.agg

  (func=None, axis=0, args,kwargs)

  返回例子

  s_df=PD.series (1,2,3 ) ) print ) s _ df ) print ) s_df。AGG)总和)- return - s

  df=PD.data frame ([ 1,2,3 ]、[ 4,5,6 ]、[ 7,8,9 ]、[np.nan,np.nan,np)。Nan])、columns=[A (c)

  #打印每一行(df.agg ([ sum , min )]-return-ABC sum 12 . 015 . 018 . 0min 1 . 0 . 2 . 0 #列 max}-return-absum12.0nanmin1。

  importpandasaspddf=PD . data frame({ country :[ China , China , India , India , India , ameremeratid ) 10000、5000、5002、40000、50000、8000、5000], age:[5000、4321、1234、4010、250、250、4500、4321]}-return-age country income 0500

  df.groupby([Country])。apply(lambda x: print(x,type(x))-print-国家收入年龄4美国40000 250 class pandas . core . frame . data frame 国家收入年龄0中国10000 50001中国10000 43216中国8000 4500 class pandas . core . frame . data frame 国家收入年龄2印度5000 12343印度5002 40107印度5000 4321 class pandas。 core.frame.DataFrame 在这里其实很清楚,分组中的结果就是分组后的DataFrame。所以Groupby之后agg的用法就是DataFrame.agg的用法不说别的,还是以列表、字典的形式介绍。

  列表参数传输

  df_agg=df.groupby(Country )。agg([min , mean , max])print(df_agg) - print -收入年龄最小平均最大最小平均最大国家美国40000 40000 250 250 0000000 250中国8000 9333.333333 10000 4321 4607.000 00 5000印度5000 5000 6667 5000

  print(df.groupby(Country )。agg({Age:[min , mean , max], Income:[min , max ]})-打印年龄收入最小平均最大最小最大国家美国250 250 40000 40000中国4321 4607.0000000 5000 8000 10000印度1234 3188.3333333 4 4 21 5000 5002日本21

  3.看底层推导agg的路由原理。为什么要看这底层?主要是对传func时遇到的这几类传记感到好奇,想知道为什么能这样传下去,以便追根溯源。

  这些类型的引用是指:

  df=pd .DataFrame([[1,2,3],[4,5,6],[7,8,9],[np.nan,np.nan]],columns=[A , B , C])print(df.agg([sum, sum ,np .sum])-print-A B Csum 12.0 15.0 18.0 sum 12.0 15.0 18.0 sum 12.0 15.0 18.0 sum 18.0 sum,的作用效果一样,它们的表达形式不同。

  开始查阅底层代码

  1、agg=聚合,聚集是总计的别名,因为一开始底层代码就有这条赋值语句。

  2、agg其实就是调用应用函数,也就是应用函数能用的它也能用

  做个测试看看,返回的结果是一样的。

  print(df.apply([sum, sum ,NP。sum])-return-A B C sum 12.0 15.0 18.0 sum 12.0 15.0 18.0 sum 12.0 15.0 15.0 15.0 18.0 sum 3、所以sum,sum,np.sum重点是func传参解析的作用,而不是函数本身作用。

  找一下有关功能的注释

  功能:函数应用于每一列或每一行的函数。# 解释函数能用于行或列而已如果您只是应用一个NumPy减少功能,这将实现更好的性能。# 这儿就说如果用数组的函数,能有更好表现,可以说明np。总和与总额是调用不同模块的函数找了半天,虽然猜测是总和转为总额使用了,但是仍没找到,所以尝试一下这样子。

  4、尝试聚合字符串函数找到转化的原因!

  print(df.apply([sum, sum ,np.sum, np。sum ])-错误-.文件d:\ r \ anaconda 3 \ lib \ site-packages \ pandas \ core \ series。py ,第3688行,在聚合结果中,怎么=自己._aggregate(func,*args,**kwargs)文件d:\ r \ anaconda 3 \ lib \ site-packages \ pandas \ core \ base。py ,第477行,总计返回自我._aggregate_multiple_funcs(arg,_axis=_axis),None File D:\ r \ anaconda 3 \ lib \ site-packages \ pandas \ core \ base。py ,第507行,in _ aggregate _ multiple _ funcs new _ RES=colg。聚合(a)文件D:\ r \ anaconda 3 \ lib \ site-packages \ pandas \ core \ series。py ,第3688行,在聚合结果中,怎么=自己._aggregate(func,*args,**kwargs)文件d:\ r \ anaconda 3 \ lib \ site-packages \ pandas \ core \ base。py ,第311行,总计返回自我._ try _ aggregate _ string _ function(arg,*args,**kwargs),None File D:\ r \ anaconda 3 \ lib \ site-packages \ pandas \ core \ base。py ,第282行,in _ try _ aggregate _ string _ function f { arg } 不是" {类型(自我)"的有效函数_ _ name _ _ }“对象”属性错误:" np.sum "不是"系列"对象的有效函数重点看_ try _ aggregate _字符串_函数的报错。

  该函数如下

  def _ try _ aggregate _ string _ function(self,arg: str,*args,* args,*kwargs): 如果银是一个字符串,则尝试对它进行操作:-尝试在我们自己身上找到一个函数(或属性)-尝试找到一个数组函数- raise assert isinstance(arg,str) f=getattr(self,arg,None)#再这里转化的如果f不为无:如果可调用(f):返回f(*args,**kwargs) #人们可能会尝试在不可调用的属性上聚合#但不要让他们认为可以向其传递参数assert len(args)==0 assert len([kwargs中的kwarg for kwarg if kwarg not in[ axis ])==0 return f f=get attr(NP,arg,None)if f not None:if有attr(self, __array__): #特别是排除窗口return f(self,*args,* * kwargs)raise attribute _ _ name _ _ } object )转化的函数是这个f=getattr(np,arg,None),它能找到对应是否有函数,注释也有说,如果银是线格式,会去寻找它本身是否有这个函数,找不到再去寻找数组模块的,再找不到就报错。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: