相关知识
groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False)
参数说明:
by是指分组依据(列表、字典、函数,元组,Series)
axis:是作用维度(0为行,1为列)
level:根据索引级别分组
sort:对groupby分组后新的dataframe中索引进行排序,sort=True为升序,
as_index:在groupby中使用的键是否成为新的dataframe中的索引,默认as_index=True
group_keys:在调用apply时,将group键添加到索引中以识别片段
squeeze :如果可能的话,减少返回类型的维数,否则返回一个一致的类型
grouping操作(split-apply-combine)
数据的分组&聚合 -- 什么是groupby 技术?
在数据分析中,我们往往需要在将数据拆分,在每一个特定的组里进行运算。比如根据教育水平和年龄段计算某个城市的工作人口的平均收入。
pandas中的groupby提供了一个高效的数据的分组运算。
我们通过一个或者多个分类变量将数据拆分,然后分别在拆分以后的数据上进行需要的计算
我们可以把上述过程理解为三部:
1.拆分数据(split)
2.应用某个函数(apply)
3.汇总计算结果(aggregate)
下面这个演示图展示了“分拆-应用-汇总”的groupby思想
上图所示,分解步骤:
Step1 :数据分组—— groupby 方法
Step2 :数据聚合:
使用内置函数——sum / mean / max / min / count等
使用自定义函数—— agg ( aggregate ) 方法
自定义更丰富的分组运算—— apply 方法
实操
1.打开终端模拟器,在命令行输入ipython notebook --ip='127.0.0.1',在浏览器中会打开界面点击New,在其下拉框中选择Python3.
2.新建一个ipynb文件,用于编写并执行代码。
3.创建一个数据帧df。
import numpy as np
import pandas as pd
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})
print(df)
4.通过A列对df进行分布操作。
5.通过A、B列对df进行分组操作。