Pandas数据聚合:探索groupby与agg/aggregate的强大功能

在数据分析与处理的广阔领域中,Pandas以其高效的数据处理能力和丰富的功能库成为了无数数据科学家和分析师的首选工具。其中,groupby结合agg或aggregate方法更是实现数据聚合分析的利器。本文将深入探讨Pandas中groupby与agg/aggregate的使用,帮助读者更好地理解和运用这一强大功能,从而在数据分析中事半功倍。

一、Pandas聚合简介

在Pandas中,数据聚合是指将数据按照特定条件(如某列的值)进行分组,并对每个分组内的数据进行汇总计算的过程。这一过程类似于SQL中的GROUP BY语句结合聚合函数的使用。Pandas通过groupby方法实现数据分组,并通过agg或aggregate方法应用聚合函数,从而得到每个分组的汇总统计结果。

二、groupby方法的基本使用

groupby方法是Pandas中实现数据分组的关键。它接受一个或多个列名作为参数,根据这些列中的值将数据分为不同的组。使用groupby后,返回一个GroupBy对象,该对象支持多种聚合操作。

python

import pandas as pd 


# 示例数据 

data = { 

    'Name': ['Alice', 'Bob', 'Carol', 'David', 'Emily', 'Bob', 'Carol'], 

    'Age': [25, 30, 35, 40, 45, 30, 35], 

    'City': ['Beijing', 'London', 'Paris', 'Tokyo', 'London', 'London', 'Paris'], 

    'Salary': [8000, 6000, 5500, 7000, 4500, 6000, 5500] 

df = pd.DataFrame(data) 


# 按照'City'列进行分组 

grouped = df.groupby('City') 


# 对分组后的数据进行迭代输出 

for city, group in grouped: 

    print(f"City: {city}") 

    print(group) 

    print()

三、agg/aggregate方法的聚合操作

agg和aggregate方法是Pandas中用于对分组后的数据进行聚合计算的函数,它们功能相似,但agg方法更常用且灵活。这两个方法可以接受多种形式的参数,包括内置聚合函数、其他库中的函数以及自定义函数。

1. 内置聚合函数

Pandas提供了丰富的内置聚合函数,如count、sum、mean、median、std(标准差)、var(方差)、min、max等。这些函数可以直接应用于agg或aggregate方法中。

python

# 使用内置函数进行聚合 

grouped_agg = df.groupby('City').agg({ 

    'Age': ['mean', 'min', 'max'], 

    'Salary': 'sum' 

}) 

print(grouped_agg)

2. 自定义函数

除了内置函数,用户还可以定义自己的聚合函数,并将其传递给agg或aggregate方法。这使得聚合操作更加灵活和强大。

python

def my_mean(values): 

    return sum(values) / len(values) 


grouped_custom = df.groupby('City').agg(my_mean_salary=('Salary', my_mean)) 

print(grouped_custom)

3. 传入多个函数

为了对同一个序列应用多个聚合函数,可以将这些函数放入一个列表中,然后将列表传递给agg方法。

python

grouped_multi = df.groupby('City')['Salary'].agg([np.mean, np.std, np.count_nonzero]) 

print(grouped_multi)

四、高级分组技巧

除了基于列值进行分组外,Pandas还支持基于计算结果的分组。这意味着可以首先对数据应用某个函数或表达式,然后根据其结果进行分组。

python

# 示例:基于年龄是否大于30分组 

def age_group(age): 

    return 'Over 30' if age > 30 else 'Under 30' 

http://zulin.china-bbs.com/news/0724.pdf

http://zulin.china-bbs.com/news/724.pdf

http://www.china-bbs.com/news/2354.pdf

http://www.china-bbs.com/news/1654.pdf

http://sh.news-618.cn/news/sh1.pdf

http://ss.news-618.cn/news/ss1.pdf

http://jd.news-618.cn/news/jd1.pdf

http://zf.news-618.cn/news/zf1.pdf

http://ls.news-618.cn/news/ls1.pdf

http://rk.news-618.cn/news/rk1.pdf

http://sk.news-618.cn/news/sk1.pdf

http://gx.news-618.cn/news/gx1.pdf

http://sd.news-618.cn/news/sd1.pdf

http://xx.news-618.cn/news/xx1.pdf

http://zhejiang.shtcxxw.cn/news/2.pdf

http://gx.news-618.cn/news/6.pdf

http://yuansen.hftcbmw.cn/news/1.pdf

http://mirui.zjtcbmw.cn/news/3.pdf

http://henan.jxtcbmw.cn/news/4.pdf

http://hunan.sctcbmw.cn/news/5.pdf

http://hntcxxw.cn/gushi/g5_20240226210443.pdf

http://hntcxxw.cn/gushi/5_20240227101146.pdf

https://bbs.tiancebbs.cn/

http://zulin.china-bbs.com/

http://www.china-bbs.com/

http://360.njtcbmw.cn/

http://shenma.sctcbmw.cn/

http://sogou.jxtcbmw.cn/

http://toutiao.lstcxxw.cn/

http://baidu.cqtcxxw.cn/

http://sina.tjtcbmw.cn/

http://douyin.shtcxxw.cn/

http://kuaishou.zjtcbmw.cn/

http://wz.cqtcxxw.cn/

http://mirui.zjtcbmw.cn/

http://fenglin.hftcbmw.cn/

http://suzhou.ahtcbmw.cn/

https://www.tiancebbs.cn/

https://bbs.tiancebbs.cn/sitemap.xml

http://zulin.china-bbs.com/sitemap.xml

http://www.china-bbs.com/sitemap.xml

http://360.njtcbmw.cn/sitemap.xml

http://shenma.sctcbmw.cn/sitemap.xml

http://sogou.jxtcbmw.cn/sitemap.xml

http://toutiao.lstcxxw.cn/sitemap.xml

http://baidu.cqtcxxw.cn/sitemap.xml

http://sina.tjtcbmw.cn/sitemap.xml

http://douyin.shtcxxw.cn/sitemap.xml

http://kuaishou.zjtcbmw.cn/sitemap.xml

http://wz.cqtcxxw.cn/sitemap.xml

http://mirui.zjtcbmw.cn/sitemap.xml

http://fenglin.hftcbmw.cn/sitemap.xml

http://suzhou.ahtcbmw.cn/sitemap.xml

http://xx.news-618.cn/sitemap.xml

http://sd.news-618.cn/sitemap.xml

http://gx.news-618.cn/sitemap.xml

http://sk.news-618.cn/sitemap.xml

http://rk.news-618.cn/sitemap.xml

http://ls.news-618.cn/sitemap.xml

http://zf.news-618.cn/sitemap.xml

http://ss.news-618.cn/sitemap.xml

http://jd.news-618.cn/sitemap.xml

http://sh.news-618.cn/sitemap.xml

http://www.news-618.cn/sitemap.xml

http://www.618xxw.cn/sitemap.xml

http://gs.ahtcbmw.cn/sitemap.xml

http://nx.ahtcbmw.cn/sitemap.xml

http://qh.ahtcbmw.cn/sitemap.xml

http://xj.ahtcbmw.cn/sitemap.xml

http://gz.ahtcbmw.cn/sitemap.xml

http://sd.tjtcbmw.cn/sitemap.xml

http://gd.zjtcbmw.cn/sitemap.xml

http://zhejiang.shtcxxw.cn/sitemap.xml

http://fujian.lstcxxw.cn/sitemap.xml

http://hebei.cqtcxxw.cn/sitemap.xml

http://henan.jxtcbmw.cn/sitemap.xml

http://hunan.sctcbmw.cn/sitemap.xml

http://njtcbmw.cn/sitemap.xml

http://hftcbmw.cn/sitemap.xml

http://www.ahtcbmw.cn/sitemap.xml

http://hztcbmw.cn/sitemap.xml

http://cd.ahtcbmw.cn/sitemap.xml

http://tianjin.hztcbmw.cn/sitemap.xml

http://beijing.hftcbmw.cn/sitemap.xml

http://xibai.hftcbmw.cn/sitemap.xml

http://yuansen.hftcbmw.cn/sitemap.xml

http://zhaohang.hftcbmw.cn/sitemap.xml

http://hanyu.hftcbmw.cn/sitemap.xml

http://jinyuana.njtcbmw.cn/sitemap.xml

http://kexing.hftcbmw.cn/sitemap.xml

http://defan.hftcbmw.cn/sitemap.xml

http://hlj.tjtcxxw.cn/sitemap.xml

http://yn.hntcxxw.cn/sitemap.xml

http://xz.xztcxxw.cn/sitemap.xml

http://nmg.jstcbmw.cn/sitemap.xml

http://shanxi.gstcxxw.cn/sitemap.xml

http://hubei.lztcxxw.cn/sitemap.xml

http://gx.lztcxxw.cn/sitemap.xml

http://hn.sytcxxw.cn/sitemap.xml

http://ah.hntcxxw.cn/sitemap.xml

https://www.tiancebbs.cn/fang/

https://www.tiancebbs.cn/swhf/

https://www.tiancebbs.cn/qdyc/

https://www.tiancebbs.cn/mayi-info.xml

https://www.tiancebbs.cn/mayi-category.xml

https://www.tiancebbs.cn/mayi-news.xml

https://www.tiancebbs.cn/mayi-store.xml

https://www.tiancebbs.cn/sitemap.xml

http://www.wooking.com.cn/topic/673

http://www.wooking.com.cn/topic/672

http://www.wooking.com.cn/topic/671

http://www.wooking.com.cn/topic/670

http://www.wooking.com.cn/topic/669

http://www.wooking.com.cn/topic/668

http://www.wooking.com.cn/topic/667

http://www.wooking.com.cn/topic/666

http://www.wooking.com.cn/topic/665

https://www.acfun.cn/a/ac45658824

https://www.acfun.cn/a/ac45658096

https://www.acfun.cn/a/ac45657610

https://www.acfun.cn/a/ac45657369

https://www.acfun.cn/a/ac45657192

https://www.acfun.cn/a/ac45657106

https://www.acfun.cn/a/ac45656932

https://www.acfun.cn/a/ac45656345

https://weibo.com/ttarticle/p/show?id=2309405061232716546279

https://weibo.com/ttarticle/p/show?id=2309405061228992266833

https://weibo.com/ttarticle/p/show?id=2309405061226018505703

https://weibo.com/ttarticle/p/show?id=2309405061224307229203

https://weibo.com/ttarticle/p/show?id=2309405061221266358463

https://weibo.com/ttarticle/p/show?id=2309405061218594587337

https://weibo.com/ttarticle/p/show?id=2309405061214647746579

https://weibo.com/ttarticle/p/show?id=2309405061206192030885

https://www.toutiao.com/item/7396688446414144051/

grouped_age = df.groupby(df['Age'].apply(age_group)) 

# 接下来可以进行聚合操作

五、

Pandas的groupby与agg/aggregate方法为实现复杂的数据聚合分析提供了强大的支持。通过灵活运用这些方法,可以轻松地处理各种数据分析任务,从简单的平均值计算到复杂的自定义聚合操作,无所不能。希望本文能够帮助读者更好地理解和应用这些功能,从而在数据分析的道路上越走越远。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容