使用Pandas怎么实现聚合运算和分组运算
这篇文章给大家介绍使用Pandas怎么实现聚合运算和分组运算,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1.聚合运算
(1)使用内置的聚合运算函数进行计算
1>内置的聚合运算函数
sum(),mean(),max(),min(),size(),describe()...等等
2>应用聚合运算函数进行计算
importnumpyasnp importpandasaspd #创建df对象 dict_data={ 'key1':['a','b','c','d','a','b','c','d'], 'key2':['one','two','three','one','two','three','one','two'], 'data1':np.random.randint(1,10,8), 'data2':np.random.randint(1,10,8) } df=pd.DataFrame(dict_data) print(df) ''' data1data2key1key2 034aone 179btwo 257cthree 334done 487atwo 547bthree 689cone 744dtwo ''' #根据key1分组,进行sum()运算 df=df.groupby('key1').sum() print(df) ''' key1 a1210 b85 c811 d1613 ''' #内置的聚合函数 print(df.groupby('key1').sum()) print('*'*50) print(df.groupby('key1').max()) print('*'*50) print(df.groupby('key1').min()) print('*'*50) print(df.groupby('key1').mean()) print('*'*50) print(df.groupby('key1').size()) print('*'*50) #分组中非Nan数据的数量 print(df.groupby('key1').count()) print('*'*50) print(df.groupby('key1').describe())
(2)自定义聚合函数进行计算
在使用自定义聚合函数的时候,需要用到一个agg()函数
#自定义聚合函数 #最大值-最小值 defpeak_range(df): #返回数据范围差值 returndf.max()**2-df.min()**2 #agg()可以将聚合计算的结果祖闯成一个dataframe对象返回 print(df.groupby('key1').agg(peak_range)) #lambda print(df.groupby('key1').agg(lambdadf:df.max()-df.min()))
(3)应用多个聚合函数,默认列索引为函数名
#应用多个聚合函数,默认列索引为函数名 #通过元素重新命名列索引('列索引',函数) print(df.groupby('key1').agg(['sum','std','mean',('range',peak_range)])) ''' data1data2 sumstdmeanrangesumstdmeanrange key1 a102.8284275.040122.8284276.048 b105.6568545.08081.4142144.016 c61.4142143.01290.7071074.59 d150.7071077.51582.8284274.032 '''
(4)指定每一列使用某个聚合运算函数
#指定每一列使用某个聚合运算函数 print(df.groupby('key1').agg({'data1':'mean','data2':'sum'})) ''' data1data2 key1 a5.012 b5.08 c3.09 d7.58 '''
2.分组运算
(1)进行分组运算,并在运算后的结果列索引前加前缀
加前缀用到add_prefix('前缀')函数
#创建df对象 dict_data={ 'key1':['a','b','c','d','a','b','c','d'], 'key2':['one','two','three','one','two','three','one','two'], 'data1':np.random.randint(1,10,8), 'data2':np.random.randint(1,10,8) } df=pd.DataFrame(dict_data) print(df) ''' data1data2key1key2 015aone 193btwo 236cthree 369done 484atwo 555bthree 696cone 741dtwo ''' #按照key1分组,进行sum()运算 #在运算结果的列索引前添加前缀 k1_sum=df.groupby('key1').sum().add_prefix('sum_') print(k1_sum) ''' sum_data1sum_data2 key1 a99 b148 c1212 d1010 '''
(2)进行分组运算,并把原始数据和结果数据合并
#创建df对象 dict_data={ 'key1':['a','b','c','d','a','b','c','d'], 'key2':['one','two','three','one','two','three','one','two'], 'data1':np.random.randint(1,10,8), 'data2':np.random.randint(1,10,8) } df=pd.DataFrame(dict_data) print(df) ''' data1data2key1key2 015aone 193btwo 236cthree 369done 484atwo 555bthree 696cone 741dtwo ''' #按照key1分组,进行sum()运算 #在运算结果的列索引前添加前缀 k1_sum=df.groupby('key1').sum().add_prefix('sum_') print(k1_sum) ''' sum_data1sum_data2 key1 a99 b148 c1212 d1010 ''' #将运算结果和原始数据拼接到一起 #参数1:原始数据 #参数2:运算结果数据 pd.merge(df,k1_sum,left_on='key1',right_index=True)
(3)使用transform()函数,将计算结果按照原始数据排序成一个DataFrame对象
#创建df对象 dict_data={ 'key1':['a','b','c','d','a','b','c','d'], 'key2':['one','two','three','one','two','three','one','two'], 'data1':np.random.randint(1,10,8), 'data2':np.random.randint(1,10,8) } df=pd.DataFrame(dict_data) print(df) ''' data1data2key1key2 015aone 193btwo 236cthree 369done 484atwo 555bthree 696cone 741dtwo ''' #按照key1分组,进行sum()运算 #在运算结果的列索引前添加前缀 k1_sum=df.groupby('key1').sum().add_prefix('sum_') print(k1_sum) ''' sum_data1sum_data2 key1 a99 b148 c1212 d1010 ''' #transform()计算会将计算的结果按照原始数据的排序组装成一个dataframe对象 k1_sum_tf=df.groupby('key1').transform(np.sum).add_prefix('sum_') #print(k1_sum_tf.columns) #把运算结果数据拼接到原始数据后 df[k1_sum_tf.columns]=k1_sum_tf print(df) ''' data1data2key1key2sum_data1sum_data2sum_key2 054aone912onetwo 133btwo512twothree 292cthree149threeone 365done119onetwo 448atwo912onetwo 529bthree512twothree 657cone149threeone 754dtwo119onetwo '''
关于使用Pandas怎么实现聚合运算和分组运算就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
推荐阅读
-
用pandas库中的diff()函数处理非平稳的时间序列
-
pandas中的concat函数如何实现索引重置
pandas中的concat函数如何实现索引重置这篇文章将为大家详...
-
pandas中的concat函数如何实现指定索引
pandas中的concat函数如何实现指定索引这篇文章主要介绍了...
-
Pandas Apply怎么用
PandasApply怎么用这篇文章将为大家详细讲解有关Pand...
-
Pandas中如何实现行的条件选择
Pandas中如何实现行的条件选择这篇文章主要介绍了Pandas...
-
Pandas数据存储的示例分析
Pandas数据存储的示例分析这篇文章主要为大家展示了“Panda...
-
Pandas数据类型的用法
-
Pandas数据类型之category的用法
Pandas数据类型之category的用法创建category使用Series创建在创建Series的同时添加dty...
-
Python(Pandas,pandas.read_sql函数实例用法)
Python,Pandas,pandas.read_sql函数实例用法Pandas是基于NumPy的一种工具,该工具是为...
-
Python(Pandas,pandas.read_sql_query函数实例用法分析)
Python,Pandas,pandas.read_sql_query函数实例用法分析Pandas是基于NumPy的一种...