0.
对所有数据进行分组
然后对每一个组应用一个函数
之后进行分组统计或者生成透视
以上
pd有一个groupby功能 这是上述内容的核心 可以切片、切块、摘要
pd可以进行:
计算分组摘要统计 如计数、平均值、标准差、自定义函数
计算分组概述统计 如数量、平均值、标准差、自定义函数(这俩有啥区别。。)
应用组内转换或其它运算 如规格化、线性回归、排名、选取子集
计算透视表或交叉表
执行分位数分析以及其他统计分组分析
对事件序列数据的聚合 叫做重采样 (chong)
1.
groupby机制
在一个指定的轴上进行三步:拆分、应用、合并
特别的,拆分 是沿着一个轴把同样的放在一起 这就进行了分组
分组除了根据上边这个名字,还可以根据长度
如果是字典或是Series 可以按照待分组轴上的值 和分组名的对应关系
也可以用函数处理轴索引或索引中的各个标签
第一个是关键 后三个是快捷方式
1.5
按照key1进行分组 计算data1的平均值
这ged就是个groupby类型的对象
这是个Series 他根据data1的分组键a,b进行了聚合产生了新的Series
默认转的是最靠里的那行
所分组的可以不是df里边的内容
只要等长 其他内容也可以
可以直接出所有内容
key2 不是数值 被称为麻烦列 (我估计是直译的 名字是真的low。。)
这个是size()
可以返回一个 含有多少分组的Series
缺失值会被从结果中除去
叫不叫name group 不重要 都可以迭代
重要的是 会把这个groupby key1的 名字和内容 给分出来
也可以多个键
可以把一个groupby设成字典
可以通过k查v
也可以groupby dtype
然后出来的是一个可迭代的东西
for循环就可以挨个看到
df.groupby(['key1','key2])[['data2]].mean()
就看分组k1k2后data2的平均值
1.75
通过字典 对表头分组然后进行拆分
轴需要选择axis=1 不然就是空的了
也可以先转换成Series再进行这个拆分的操作
也可以groupby len #就这三个字母len就好了
也可以加一个keylist 然后groupby([len,keylist])
可以分级索引 level关键字传递级别序号或者名字
2.
前边有说在一个指定的轴上进行三步:拆分、应用、合并
这个应用 包括一个内容 叫做 聚合
聚合是指从数组产生的标量值的数据转换过程
包括但不限于mean count min sum
2.5
这里有一个新的quanlite 样本分位数 就是四分之一分位点那种
定义一个函数然后可以用agg方法 aggregate聚合
ged也可以describe ged是按照k1 groupby的
虽然describe不是聚合函数 但也可以做类似聚合函数的操作
3.
apply
df.groupby('d1').apply(函数)
这个函数会在df的各个片段调用 然后再由pd.concat组装在一起
apply(函数,函数中的参数n=。。。)
上边的describe()也是这个意思:
f=lambda x:x.describe()
grouped.apply ( lambda x:x.describe() )
3.5
分位数 quantile 四分之一分位点
桶分析 bucket 等量的数据
可以用qcut 就能取得样本分位数大小相等的桶
传入labels=False 就可以获得分位数的编号
3.75
用特定分组的值填充缺失值
4.
透视表叫 pivot table
df有一个pivot_table
pandas也可以添加顶级的pivot_table函数
margins是为分项进行小计
df.pivot_table(index=['d1','d2'])
就出现了这个透视表
然后左边的index是d1 d2 然后其他项都在column
df.pivot_table(['d1','d2'],index='k1',columns='k2')
最上边的column是d1d2 然后下一级是k2
k1是在左边
里边有两个参数
一个是margins 前边有提过
margins=True 就是求和 默认是不求的
aggfunc=len是可以得到有关分组大小的交叉表
还有其他参数
同样的参数 在每一个名字前边加上df的名字.
可以做出交叉表
pd.crosstab()