pandas数据分组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas数据分组相关的知识,希望对你有一定的参考价值。
参考技术A 一、数据分组1、groups=df.groupby('列索引') #根据指定列对整体进行分组,返回值为一个DataFrame groupby对象,看不到值。
2、groups.size()方法查看分组后各组数量。
3、groups.groups方法查看分组情况。#groups方法后面不能跟括号。返回一个字典,键值为分组后的每个组名称,值为分组后的数据。
4、groups.get_group('分组后的一个组的名称') #根据分组后的名称筛选分组数据。
二、只对某一列数据分组
group=df['指定列索引'].groupby(df['分组依据列索引'] #其他同整体分组。
groups.get_group('分组后的一个组的名称') #这时得到的返回值只有指定列的数据。
三、分组数据统计
groups=df.groupby('列索引')
分组后的一个组的名称_group=groups.get_group('分组后的一个组的名称')
分组后的一个组的名称_mean=分组后的一个组的名称_group.mean()
分组后的一个组的名称_max=分组后的一个组的名称_group.max()
分组后的一个组的名称_min=分组后的一个组的名称_group.min()
分组后的一个组的名称_group.index.astype(int) #索引设置为int类型
四、对分组进行遍历
groups=df.groupby('列索引')
for group_name,group_data in groups:
print(group_name,group_data )
分组后的一个组的名称_mean=group_data['分组后的一个组的名称'].mean()
分组后的一个组的名称_max=group_data['分组后的一个组的名称'].max()
分组后的一个组的名称_min=group_data['分组后的一个组的名称'].min()
五、按多列进行分组
groups=df.groupby(['列索引1','列索引2']) #参数传入的是列索引列表
data=groups.size() #统计各种分组情况的数量,因为具有多层索引,要获取具体数据要一层一层拿。
result=data['列索引1分组后的一个组的名称'] ['列索引2分组后的一个组的名称']
print(result)
六、聚合函数agg(),把要调用的函数以字符串列表的形式传入。
groups=df.groupby('列索引')
for group_name,group_data in groups:
print(group_name,group_data )
result=group_data.agg(['max,'min','mean','sum'])
priint('第组的最大值是;第组的最大值是;第组的最大值是;第组的最大值是'.formatgroup_name,agg[0],agg[1],agg[2],agg[3])
以上是关于pandas数据分组的主要内容,如果未能解决你的问题,请参考以下文章
pandas 如何对上千万数据分组“快速”取第一行和最后一行
text [分组数据]将数据与特定条件分组。 #pandas
数据分析—Pandas 中的分组聚合Groupby 高阶操作
pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用size函数计算分组数据中每个分组样本的个数