Python
Pandas
这里,我们整理下pandas中关于groupby的使用,和SQL中一样,就是对数据进行聚合
可以参考官方:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html
http://pandas.pydata.org/pandas-docs/stable/groupby.html
1. groupby基本使用
|
|
|
|
我们现在,根据key1来groupby
我们可以看到,返回值是一个DataFrameGroupBy对象,这只是一个中间数据,还没有进行真正的聚合
这里有一个概念”split-apply-combine”,拆分-应用-合并,感觉和MapReduce的概念差不多,这个的groupby就是做了拆分
我们可以遍历DataFrameGroupBy,
这个就是将内容进行了拆分,当我们在调用统计函数时,才会执行应用和合并
我们可以按2个值进行聚合
默认的话,会将数值类型的字段做聚合,我们也可以选择
下面的写法也是同样的,前面我们是直接传入的列名,这里我们传入series也可以
上面我们传入的都是当前df的序列,这里也可以传入新的,这里只要长度符合就行了,感觉就是把它当成新列来处理
|
|
这个by参数,还可以接收一个dict,像这样:
这里,对于series也是一样的,series也有index,
更厉害的是,这里还可以使用函数进行分组,函数会在各个索引值上调用一次,然后根据返回值来用作分组名称
—————update at 2017-08-23
这里继续整理下pandas中groupby的使用
2. 面向列的多函数应用
上面,我们再对列做聚合的时候,都是使用使用统一的函数,比如sum(),count(),都是一起的,
在pandas中,我们可以同时调用多个函数,主要是使用agg
小栗子
上面,我们传入函数,默认会用我们的函数名来做列名,但,有时我们想要自定义,
我们通过传入一个(name,function)的列表
3. 已无索引形式返回聚合数据
前面,我们groupby之后,都是用聚合建来当做index,我们可以通过参数as_index=False,来取消
做了练习之后,这里发现,直接调用函数是好用的,但是,如果使用agg来调用,是不好用的这个参数