pandas groupby()的使用小结
作者:m0_38093796
在数据分析中,经常会用到分组,可用函数pandas中的groupby(),本文就来介绍一下pandas groupby()的使用小结,具有一定的参考价值,感兴趣的可以了解一下
在数据分析中,经常会用到分组,可用函数 pandas 中的groupby()。
groupby()主要的分组统计方向:
1、分组汇总
2、分组描述性统计分析
3、分组计算均值等统计量
4、分组去重
5、分组排序取样本
6、分组汇总,然后再分组计算
Date Latitude Longitude Depth Type 01/02/1965 19.246 145.616 131.6 Earthquake 01/04/1965 1.863 127.352 80.0 Earthquake 01/05/1965 -20.579 -173.972 20.0 Earthquake 01/08/1965 -59.076 -23.557 15.0 Earthquake 01/09/1965 11.938 126.427 15.0 Earthquake
#1、分组统计组内个数 df.groupby(['date','Type']) .size() #2、分组统计计算‘Depth'的基本数据分布 df.groupby(['date','type'])['Depth'] .describe() #3、分组统计计算‘Latitude'的均值 df.groupby(['date','type']) .agg({'Latitude':'mean'}) #分组统计计算两列数据的均值 df.groupby(['date','type']) .agg(la_mean = ('Latitude','mean'), lo_mean = ('Longitude','mean'), la_range = ('depth',lambda x:x.max() - x.min())) #4、分组然后对每组去重,然后汇总去重后的个数 df.groupby('date') .apply(lambda x: x.drop_duplicates('Type')['Type'] .count()) #5、分组,然后按照‘Latitude'降序,并取出每组的前3个样本。 df.groupby(['date']) .apply(lambda x: x.sort_values('Latitude',ascending = False) .head(3)) #6、分组,然后汇总计算两列数据,再进行分组,取出每一组‘la_sum'的最大值 df.groupby(['date','type']) .agg(la_sum = ('Latitude','sum'), lo_sum = ('Longitude','sum')) .groupby(['date']) .apply(lambda x:x.sort_values('la_sum ',ascending = False).head(1)) #分组,然后按照type排序,再分组,取出前10汇总和后10汇总,然后再计算两者的比率 df.groupby('date') .apply(lambda x:x.sort_values('type')) .reset_index(drop = True).groupby('date') .agg(tail10 = ('depth',lambda x:x.head(10).sum()), top10 = ('depth',lambda x:x.tail(10).sum())) .apply(lambda x:x['top10']/x['tail10'],axis = 1)
groupby()结合agg()和apply(),可以解决很多复杂的分组计算问题。
到此这篇关于pandas groupby()的使用小结的文章就介绍到这了,更多相关pandas groupby()使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!