如何从CSV读取数据后用pandas的groupby按年份分组DataFrame?
问题分析与解决
你的代码存在两个关键错误,导致分组操作未达到预期效果:
- 分组键错误:你需要按**年份(year)**分组,但代码中写的是
df.groupby('price'),误用了价格列作为分组依据 - 未执行聚合操作:
groupby()仅生成一个GroupBy分组容器,不会修改原DataFrame,也不会直接输出有效分组结果,必须配合聚合或遍历操作才能得到有意义的输出
正确实现方式
1. 分组+聚合统计(常用场景)
读取CSV后,按year分组,搭配聚合函数(如mean/sum/count)生成统计结果:
import pandas as pd # 读取CSV,仅保留price和year列 df = pd.read_csv('data.csv', usecols=['price', 'year']) # 按年份分组,计算每年的平均价格 yearly_avg_price = df.groupby('year')['price'].mean() print(yearly_avg_price) # 同时计算多个统计指标(总价格、数据条数、平均价格) yearly_stats = df.groupby('year')['price'].agg(['sum', 'count', 'mean']) print(yearly_stats)
2. 查看分组后的原始数据
如果需要查看每个年份对应的原始明细数据,可以遍历GroupBy对象:
import pandas as pd df = pd.read_csv('data.csv', usecols=['price', 'year']) # 遍历每个年份的分组数据 for year, group in df.groupby('year'): print(f"=== 年份: {year} ===") print(group)
内容的提问来源于stack exchange,提问作者user20637309
相关产品推荐
相关产品推荐

