You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环优化按月份统计支出的Pandas代码效率?

优化Pandas按月份统计支出总额的高效实现

你的现有代码通过逐个筛选月份计算总额,虽能运行,但存在重复遍历数据、代码冗余的问题,数据量较大时效率会明显下降。以下是更高效的实现方案:

核心优化思路

利用Pandas的时间序列分组功能,一次性完成所有月份的统计,避免重复操作。

步骤1:确保日期列是datetime类型

如果你的date列还不是datetime格式,先做转换:

import pandas as pd

# 转换日期列格式
df['date'] = pd.to_datetime(df['date'])

步骤2:按月份分组计算总额

直接通过groupby结合时间周期提取,一次性生成所有月份的统计结果:

# 按「年-月」分组,计算每个月的支出总额
monthly_spend = df.groupby(df['date'].dt.to_period('M'))['amount'].sum().reset_index()

# 重命名列名,提升可读性
monthly_spend.columns = ['year_month', 'total_spend']

步骤3:(可选)筛选指定年份的数据

如果只需要统计2022年的支出,可先过滤年份再分组:

# 筛选2022年的交易记录
df_2022 = df[df['date'].dt.year == 2022]

# 统计2022年各月支出
monthly_spend_2022 = df_2022.groupby(df_2022['date'].dt.to_period('M'))['amount'].sum().reset_index()
monthly_spend_2022.columns = ['year_month', 'total_spend']

方案优势

  • 效率更高:仅需遍历DataFrame一次,时间复杂度从原方案的O(n*N)(N为月份数)降至O(n),数据量越大,效率提升越明显
  • 代码简洁:无需手动编写每个月份的筛选逻辑,避免重复代码和人为错误
  • 扩展性强:新增年份或调整统计周期(如按季度),只需修改分组的时间周期参数即可

内容的提问来源于stack exchange,提问作者Robin Baggott la Velle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:40:57