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 如何对上千万数据分组“快速”取第一行和最后一行

pandas如何对value列数据进行分组groupby?

text [分组数据]将数据与特定条件分组。 #pandas

迭代 Pandas 分组数据框

数据分析—Pandas 中的分组聚合Groupby 高阶操作

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用size函数计算分组数据中每个分组样本的个数