pandas统计功能


1. 聚合

grouped=df.groupby(by='column name'), 是一个DataFrameGroupBy对象,可以迭代grouped中的每个元素是一个元组,元组里面的值是(索引(分组的值),分组之后的DataFrame对象)

1 dfs_002=dfs_001.groupby(by='Cabinet / ATO')

常见的DataFrameGroupBy对象经过优化的方法:

(1) count          分组中非Na值的数量

(2) sum            非NA值的和

(3) mean          非NA值的平均值

(4) median       非NA值的算数中位数

(5) std, var       无偏(分母为n-1)标准差和方差

(6) min, max    非NA值的最大和最小值

2. 分组

如果对df对象的所有列按照某个字段分组,分组的结果是DataFrameGroupBy,行索引是macd_flag。而且,当对df对象的所有列按照某个字段应用分组统计函数时,结果是一个dataframe对象。

dfs_macd_a.groupby(by='macd_flag')
dfs_macd_a.groupby(by='macd_flag').count()

考虑另外一个场景,假如要想统计在df数据集中两列元素出现次数也就是统计A、B两列的元素的出现情况,只要在groupby()中的by参数添加就可以。

dfs_macd_b.groupby(by=['A','B'])

使用.size()可得到<class 'pandas.core.series.Series'>结构的数据

dfs_macd_a.groupby(by='macd_flag').size()

对StarBucks国家和省份分布进行分组统计:可以在by=后面写列表。结果是个Series类型的数据,包含country和state/province两个索引列。因为需要对brand列进行统计,所以后面的统计条件需要使用df['country]和df['state/province]。

grouped=df["brand"].groupby(by=[df['country'],df['state/Province']]).count()

如果是对整个dataframe进行分组,统计条件直接使用country和state/province. 获取分组后的某一部分数据

grouped=df.groupby(by=['country','state/Province'])['country'].count()

如果需要返回Dataframe数据类型

grouped1=df[['brand']].groupby(by=[df['country'],df['state/Province']])['country'].count()
grouped2=groupby(by=[df['country'],df['state/Province']][['brand']].count()
grouped3=groupby(by=[df['country'],df['state/Province']].count()[['brand']]

 3. 平均值

rating_mean=df['Rating'].mean()

4. 获取某列中去掉重复值数据并转换成列表

Directer=df['directer'].unique()

5. 最大值

max_runtime=df['runtime'].max()

6. 获取最大值索引位置

参考:https://www.cnblogs.com/liulangmao/p/9211537.html

           https://baike.baidu.com/item/argmax/6034072?fr=aladdin

max_runtime=df['runtime'].argmax()

 7. 分组迭代

当对groupby的列只有单个时(示例根据hobby进行分组),可以 使用 key , value 形式 对分组后的数据进行迭代,其中key 是分组的名称,value是分组的数据;

1 group = frame['name'].groupby(frame['class'])
2 for key , data in group:
3  print(key)
4  print(data)

当对多个列进行分组迭代时,有多少列则需要指定多少个key与其对应,key可以是任何不重复的变量名称

1 group = frame['name'].groupby([frame['class'],frame['age']])
2 for (key1, key2) , data in group:
3  print(key1,key2)
4  print(data)

 8. size()和count()的区别

 

参考:https://blog.csdn.net/weixin_39874379/article/details/112288345?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM