【Python】分组统计GroupBy技术详解
摘要
进⾏数据分析时,GroupBy分组统计是⾮常常⽤的操作,也是⼗分重要的操作之⼀。基本上⼤部分的数据分析都会⽤到该操作,本⽂将对Python的GroupBy分组统计操作进⾏讲解。码字不易,喜欢请点赞,谢谢
1.GroupBy过程
⾸先看看分组聚合的过程,主要包括拆分(split)、应⽤(Apply)和合并(Combine)
2.创建DataFrame
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
df
3.将df按照Team列分组
分组之后的grouped是个DataFrameGroupBy对象
grouped = df.groupby('Team')
grouped
4.查看df按照Team分组之后结果
按照不同的Team值来分组
5.分组后的结果对Points求和
grouped['Points'].sum()
分组后常⽤操作包括:求和(sum)、平均值(mean)、计数(count)等等,如下图。
6.根据任意长度适当的数组分组
import numpy as np
key1 = np.array(list('abababbaaabb'))groupby分组
7.对分组进⾏迭代
GroupBy分组产⽣的是⼀组⼆元元组,有分组名和数据块组成。即(分组名、数据块)。
for name,group upby('Team'):
print(name)
print(group)
print('*******分隔符*********')
另外,对于多重建分组的情况,元组的第⼀个元素将是由元组组成。即((分组名1,分组名2)、数据块)。
for (name1,name2),group upby(['Team','Rank']):
print(name1)
print(name2)
print(group)
print('*******分隔符*********')
图⽚结果太长,只显⽰了部分。
8.在不同轴上分组
GroupBy默认是在axis=0轴上进⾏分组的,也可以在axis=1轴上进⾏分组聚合,不过⽤的相对较少。df.dtypes
grouped = df.groupby(df.dtypes, axis=1)
9.通过字典或Series进⾏分组
people = pd.DataFrame(np.random.randn(5, 5),
columns=['a', 'b', 'c', 'd', 'e'],
index=['Joe', 'Steve', 'Wes', 'Jim','Travis'])
people.iloc[2:3, [1, 2]] = np.nan
people

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。