使用Pandas按CreationDate年份分组并聚合统计数据的需求
Pandas按年份分组统计解决方案
没问题,这就帮你实现按CreationDate年份分组,统计数据量并对Score和ViewCount求和的需求,步骤很清晰:
第一步:确保日期列是datetime类型
首先得把你的CreationDate列从字符串转换成Pandas的datetime类型,不然没法提取年份。如果你的数据已经是datetime类型可以跳过这步,但保险起见还是加上:
import pandas as pd # 假设你的数据已经读入DataFrame df里了,比如通过pd.read_csv()读取 df['CreationDate'] = pd.to_datetime(df['CreationDate'])
第二步:分组聚合计算
接下来直接按年份分组,同时完成三个统计任务:
- 每组的数据条数:用
size() Score列的总和:用sum()ViewCount列的总和:用sum()
完整代码如下:
# 分组并聚合 yearly_stats = df.groupby(df['CreationDate'].dt.year).agg( 数据数量=('Id', 'size'), 总Score=('Score', 'sum'), 总ViewCount=('ViewCount', 'sum') ).reset_index().rename(columns={'CreationDate': '年份'}) # 打印结果 print(yearly_stats)
输出示例
运行后你会得到类似这样的结构化结果:
| 年份 | 数据数量 | 总Score | 总ViewCount |
|---|---|---|---|
| 2011 | 150 | 890 | 125000 |
| 2012 | 230 | 1240 | 210000 |
| ... | ... | ... | ... |
小提示
- 如果你的
Id列没有重复值,用count()代替size()也能得到一样的结果,但size()是统计分组内的总行数,逻辑更准确 - 如果需要对结果按年份排序,可以在代码末尾加上
.sort_values('年份', ascending=True)
内容的提问来源于stack exchange,提问作者morris
相关产品推荐
相关产品推荐

