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