pandas聚合和分组运算之groupby

pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片、切块、摘要等操作。根据一个或多个键(可以是函数、数组或DataFrame列名)拆分pandas对象。计算分组摘要统计,如计数、平均值、标准差,或用户自定义函数。对DataFrame的列应用各种各样的函数。应用组内转换或其他运算,如规格化、线性回归、排名或选取子集等。计算透视表或交叉表。执行分位数分析以及其他分组分析。

1、首先来看看下面这个非常简单的表格型数据集(以DataFrame的形式):

import pandas as pd
import numpy as np
df = pd.DataFrame({‘key1‘:[‘a‘, ‘a‘, ‘b‘, ‘b‘, ‘a‘],
     ‘key2‘:[‘one‘, ‘two‘, ‘one‘, ‘two‘, ‘one‘],
     ‘data1‘:np.random.randn(5),
     ‘data2‘:np.random.randn(5)})
df

2.按key1进行分组,并计算data1列的平均值,我们可以访问data1,并根据key1调用groupby:

grouped = df[‘data1‘].groupby(df[‘key1‘])
grouped

变量grouped是一个GroupBy对象,它实际上还没有进行任何计算,只是含有一些有关分组键df[‘key1‘]的中间数据而已,然后我们可以调用GroupBy的mean方法来计算分组平均值:

grouped.mean()

说明:数据(Series)根据分组键进行了聚合,产生了一个新的Series,其索引为key1列中的唯一值。之所以结果中索引的名称为key1,是因为原始DataFrame的列df[‘key1‘]就叫这个名字

3、如果我们一次传入多个数组,就会得到不同的结果:

means = df[‘data1‘].groupby([df[‘key1‘], df[‘key2‘]]).mean()
means

通过两个键对数据进行了分组,得到的Series具有一个层次化索引(由唯一的键对组成):

然后我用unstack 把他的二阶索引摊开:

在上面这些示例中,分组键均为Series。实际上,分组键可以是任何长度适当的数组:

states = np.array([‘Ohio‘, ‘California‘, ‘California‘, ‘Ohio‘, ‘Ohio‘])
years = np.array([2005, 2005, 2006, 2005, 2006])
df[‘data1‘].groupby([states, years]).mean()

结果:
California      2005   -2.120793
                2006    0.642216
Ohio            2005    0.282230
                2006   -1.017495
dtype: float64

4、此外,你还可以将列名(可以是字符串、数字或其他Python对象)用作分组将:

df.groupby(‘key1‘).mean()

df.groupby([‘key1‘, ‘key2‘]).mean()

说明:在执行df.groupby(‘key1‘).mean()时,结果中没有key2列。这是因为df[‘key2‘]不是数值数据,所以被从结果中排除了。

默认情况下,所有数值列都会被聚合,虽然有时可能会被过滤为一个子集。

无论你准备拿groupby做什么,都有可能会用到GroupBy的size方法,它可以返回一个含有分组大小的Series:

df1=df.groupby([‘key1‘, ‘key2‘]).size()
print(df1)
print(type(df1))

注意:分组键中的任何缺失值都会被排除在结果之外。

区别于:

5、对分组进行迭代

GroupBy对象支持迭代,可以产生一组二元元组(由分组名和数据块组成)。看看下面这个简单的数据集:

for name, group in df.groupby(‘key2‘):
    print(name)
    print(group)

对于多重键的情况,元组的第一个元素将会是由键值组成的元组:

原文地址:https://www.cnblogs.com/wqbin/p/11723275.html

时间: 2024-07-29 09:45:49

pandas聚合和分组运算之groupby的相关文章

Python数据聚合和分组运算(1)-GroupBy Mechanics

前言 Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活.<Python for Data Analysis>这本书第9章详细的介绍了这方面的用法,但是有些细节不常用就容易忘记,遂打算把书中这部分内容总结在博客里,以便复习查看.根据书中的章节,这部分知识包括以下四部分: 1.GroupBy Mechanics(groupby技术) 2.Data Aggregation(数据聚合) 3.Group-wise Operation and Transformation(分组级运

Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4节 透视表和交叉表 第5节 时间序列 第6节 日期的规范.频率以及移动 第7节 时区处理 第8节 时期及算术运算 第9节 重采样及频率转换 第10节 时间序列绘图 groupby 技术 一.实验简介 Python 数据分析(二)需要同学们先行学完 Python 数据分析(一)的课程. 对数据集进行分

Python 数据分析—第九章 数据聚合与分组运算

打算从后往前来做笔记 第九章 数据聚合与分组运算 分组 #生成数据,五行四列 df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one','two','one','two','one'], 'data1':np.random.randn(5), 'data2':np.random.randn(5)}) df #可以按照key1分组计算data1的平均值 df.loc[:,'data1'].groupby(df.loc[:,'key

利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)

对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作. 关系型数据库和SQL能够如此流行的原因之一就是能够方便地对数据进行连接.过滤.转换和聚合.但是,像SQL这样的查询语言所能执行的分组运算的种类很有限.在本部分你将会看到,由Python和pandas强大的表达能力,我们可以执行复

《利用python进行数据分析》读书笔记--第九章 数据聚合与分组运算

对数据进行分组并对各组应用一个函数,是数据分析的重要环节.数据准备好之后,通常的任务就是计算分组统计或生成透视表.groupby函数能高效处理数据,对数据进行切片.切块.摘要等操作.可以看出这跟SQL关系密切,但是可用的函数有很多.在本章中,可以学到: 根据一个或多个键(可以是函数.数组或DataFrame列名)拆分pandas对象 计算分组摘要统计,如计数.平均值.标准差.,或自定义函数 对DataFrame的列应用各种各样的函数 应用组内转换或其他运算,如规格化.线性回归.排名或选取子集等

数据聚合与分组运算

一.GroupBy技术 分组运算的过程可以由拆分-应用-合并描述. 利用df.groupby()进行分组操作 1.对分组进行迭代 GroupBy对象支持迭代,可以产生一组二元元组(由分组名(可能为组合)和数据块组成).对分出的数据片段可以做任何操作,例如将其做成一个字典.groupby默认是在axis=0上进行分组的,通过设置可以在任何其他轴上进行分组,例如还可以根据dtypes对列进行分组. 2.选取一个或一组列 对于由DataFrame产生的GroupBy对象,如果用一个或一组列名对其进行索

Python数据聚合和分组运算(2)-Data Aggregation

在上一篇博客里我们讲解了在python里运用pandas对数据进行分组,这篇博客将接着讲解对分组后的数据进行聚合. 1.python 中经过优化的groupy方法 先读入本文要使用的数据集tips.csv tips=pd.read_csv('tips.csv') tips.head()

Pandas-数据聚合与分组运算

目录 图解“split-apply-combine” 数据的分类split: groupby() 以column进行分组 以index进行分组 分组遍历 数据的应用apply: aggregate() agg() 数据的转译tansformaton: transform() 数据的过滤filteration: filter() 数据透视表 pivot() pivot_table() crosstab()  图解“split-apply-combine”

python数据分组运算

摘要: pandas 的 GroupBy 功能可以方便地对数据进行分组.应用函数.转换和聚合等操作.   # 原作者:lionets GroupBy 分组运算有时也被称为 "split-apply-combine" 操作.其中的 "split" 便是借由 obj.groupby() 方法来实现的. .groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, sque