分组运算:split-apply-combine(拆分——应用,合并)
DataFrame可以在其行(轴=0)或列(轴=1)上进行分组。然后,将一个函数应用到各个分组并产生新值。最后,所有这些函数的执行结果会被合并到最终的结果对象中去。
GroupBy大小的方法可以返回一个含有分组大小的系列。
<强>对分组进行迭代强>
(k1, k2),集团在df.groupby ([' key1 ', ' key2 ']): 打印k1, k2 印刷组
<强>选取一个或一组列强>
df.groupby ([' key1 ', ' key2 ']) [[' data2 ']] .mean ()
通过字典或系列进行分组
只需将字典或系列传给groupby即可。
<强>通过函数分组强>
people.groupby (len) .sum() #根据人名的长度进行分组
<强>通过索引级别分组强>
层次化索引数据,根据索引级别进行聚合,通过水平关键字传入级别编号或名称。
df.groupby(水平=蕖?轴=1).count ()
经过优化的groupby方法
函数名 说明 数 分组中非NA值得数量 总和 非NA值的和 的意思是 非NA值的平均值 中位数 非NA值的算术平均数 性病,var 无偏(分母为n - 1)标准差和方差 最小、最大 非NA值的最小值和最大值 刺激 非NA值的积 第一,最后 第一个和最后一个非NA值
对于上述描述统计方法,可以将函数名以字符串的形式传入gg方法,例如:分组。gg([“的意思是”,“性病”])
<>强如果要使用自己的聚合函数,只需将其传入聚合或gg方法即可强>
def peak_to_peak (arr): 返回arr.max ()——arr.min () grouped.agg (peak_to_peak) >之前<>强面向列的多函数应用,强>可以对不同的列使用不同的聚合函数或者一次应用多个函数。
如果传入一组函数或函数名,得到的DataFrame的列就会以相应的函数命名
如果传入的是一个由(名称、函数)元组组成的列表,各个元组的第一个元素就会被用作DataFrame的列名。
不同的列使用不同的聚合函数也可以向gg传入一个从列名映射到函数的字典
分组。gg([“的意思是”,“性病”,peak_to_peak]) # 1 分组。gg ([(“foo”、“意思”)(“酒吧”,np.std)]) # 2 函数=[‘数’,‘意思’,‘麦克斯’) 结果=分组(“提示”、“法案”).agg(功能)# 3 分组。gg({“提示”:np。马克斯,“比尔”:'和'})# 4 >之前
变换会将一个函数应用到各个分组,然后将结果放置到适当的位置上。如果各个分组产生的是一个标量的值,则该值就会被广播出去。
一般性的“拆分——应用,合并”
tips.groupby(“烟民”)苹果(上)相当于前函数在DataFrame的各个片段上调用,然后结果由pandas.concat组装到一起,并以分组名称进行了标记,于是,最终结果就有了一个层次化索引,其内层索引值来自于原DataFrame。
禁止分组键:分组键会跟原始对象的索引共同构成结果对象中的层次化索引。将group_keys=False传入groupby即可禁止该效果.tips。groupby(“烟民”,group_keys=False)苹果(上)
在GroupBy对象上调用描述相当于f=λx: x.describe ();grouped.apply (f) .
根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域。
小费。pivot_table (tip_pct,指数=(“时间”、“大小”、“烟民”), 列='天',aggfunc=暗囊馑际恰?fill_value=https://www.yisu.com/zixun/0)参数名 说明 值 待聚合的列的名称。默认所有列 行 用于分组的列名或者其他分组键,出现在结果透视表的行 关口 用于分组的列名或者其他分组键,出现在结果透视表的列 aggfunc 聚合函数或函数列表,默认“的意思是”。可以是任何对groupby有效的函数 fill_value 用于替换结果表中缺失值 利润率 添加行/列小计和总计,默认为假
大熊猫数据分组和聚合操作方法