1.聚合运算
(1)使用内置的聚合运算函数进行计算
1>内置的聚合运算函数
sum(),mean(),max(),min(),size(),describe()...等等
2>应用聚合运算函数进行计算
import numpy as np import pandas as pd #创建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) ''' data1 data2 key1 key2 0 3 4 a one 1 7 9 b two 2 5 7 c three 3 3 4 d one 4 8 7 a two 5 4 7 b three 6 8 9 c one 7 4 4 d two ''' #根据key1分组,进行sum()运算 df = df.groupby('key1').sum() print(df) ''' key1 a 12 10 b 8 5 c 8 11 d 16 13 ''' #内置的聚合函数 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()函数
#自定义聚合函数 #最大值-最小值 def peak_range(df): #返回数据范围差值 return df.max()**2 - df.min()**2 #agg() 可以将聚合计算的结果祖闯成一个dataframe对象返回 print(df.groupby('key1').agg(peak_range)) #lambda print(df.groupby('key1').agg(lambda df:df.max()-df.min()))
(3)应用多个聚合函数,默认列索引为函数名
#应用多个聚合函数,默认列索引为函数名 #通过元素重新命名列索引('列索引',函数) print(df.groupby('key1').agg(['sum','std','mean',('range',peak_range)])) ''' data1 data2 sum std mean range sum std mean range key1 a 10 2.828427 5.0 40 12 2.828427 6.0 48 b 10 5.656854 5.0 80 8 1.414214 4.0 16 c 6 1.414214 3.0 12 9 0.707107 4.5 9 d 15 0.707107 7.5 15 8 2.828427 4.0 32 '''
(4)指定每一列使用某个聚合运算函数
#指定每一列使用某个聚合运算函数 print(df.groupby('key1').agg({'data1':'mean','data2':'sum'})) ''' data1 data2 key1 a 5.0 12 b 5.0 8 c 3.0 9 d 7.5 8 '''
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) ''' data1 data2 key1 key2 0 1 5 a one 1 9 3 b two 2 3 6 c three 3 6 9 d one 4 8 4 a two 5 5 5 b three 6 9 6 c one 7 4 1 d two ''' #按照key1分组,进行sum()运算 #在运算结果的列索引前添加前缀 k1_sum = df.groupby('key1').sum().add_prefix('sum_') print(k1_sum) ''' sum_data1 sum_data2 key1 a 9 9 b 14 8 c 12 12 d 10 10 '''
(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) ''' data1 data2 key1 key2 0 1 5 a one 1 9 3 b two 2 3 6 c three 3 6 9 d one 4 8 4 a two 5 5 5 b three 6 9 6 c one 7 4 1 d two ''' #按照key1分组,进行sum()运算 #在运算结果的列索引前添加前缀 k1_sum = df.groupby('key1').sum().add_prefix('sum_') print(k1_sum) ''' sum_data1 sum_data2 key1 a 9 9 b 14 8 c 12 12 d 10 10 ''' #将运算结果和原始数据拼接到一起 #参数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) ''' data1 data2 key1 key2 0 1 5 a one 1 9 3 b two 2 3 6 c three 3 6 9 d one 4 8 4 a two 5 5 5 b three 6 9 6 c one 7 4 1 d two ''' #按照key1分组,进行sum()运算 #在运算结果的列索引前添加前缀 k1_sum = df.groupby('key1').sum().add_prefix('sum_') print(k1_sum) ''' sum_data1 sum_data2 key1 a 9 9 b 14 8 c 12 12 d 10 10 ''' #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) ''' data1 data2 key1 key2 sum_data1 sum_data2 sum_key2 0 5 4 a one 9 12 onetwo 1 3 3 b two 5 12 twothree 2 9 2 c three 14 9 threeone 3 6 5 d one 11 9 onetwo 4 4 8 a two 9 12 onetwo 5 2 9 b three 5 12 twothree 6 5 7 c one 14 9 threeone 7 5 4 d two 11 9 onetwo '''
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Pandas聚合运算和分组运算的实现示例”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2025年01月09日
2025年01月09日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]