@创建于:20210813
@修改于:20210813
文章目录
1、【易百教程】Pandas分组(GroupBy)
# 语法顺序和逻辑执行顺序
df.groupby([Column1,Column2])[Condition1].agg({Column3: "mean",Column4:"sum"}).reset_index()
# https://blog.csdn.net/weixin_43618989/article/details/105585486
在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作:
聚合 - 计算汇总统计
转换 - 执行一些特定于组的操作
过滤 - 在某些情况下丢弃数据
将数据拆分成组Pandas对象可以分成任何对象。有多种方式来拆分对象,如:
obj.groupby(‘key’)
obj.groupby([‘key1’,’key2’])
obj.groupby(key,axis=1)
查看分组
df.groupby(‘Team’).groups
迭代遍历分组
使用groupby对象,可以遍历类似itertools.obj的对象。
for name,group in grouped:
print (name)
print (group)
选择一个分组
grouped.get_group(2014)
聚合:
聚合函数为每个组返回单个聚合值。当创建了分组(group by)对象,就可以对分组数据执行多个聚合操作。一个比较常用的是通过聚合或等效的agg方法聚合。
通过分组系列,还可以传递函数的列表或字典来进行聚合,并生成DataFrame作为输出 -
grouped[‘Points’].agg(np.mean)
grouped[‘Points’].agg([np.sum, np.mean, np.std]
转换:
分组或列上的转换返回索引大小与被分组的索引相同的对象。因此,转换应该返回与组块大小相同的结果。
grouped = df.groupby(‘Team’)
score = lambda x: (x - x.mean()) / x.std()*10
print (grouped.transform(score))
过滤:
过滤根据定义的标准过滤数据并返回数据的子集。filter()函数用于过滤数据。
df = pd.DataFrame(ipl_data)
filter = df.groupby(‘Team’).filter(lambda x: len(x) >= 3)