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

如何在Pandas DataFrame中按月汇总金额并绘制结果图

没问题,我来帮你搞定按月汇总金额并绘图的需求~

按月汇总金额并绘制结果的实现方案

首先咱们已经确认了last_payout是datetime类型、amount是浮点型,这为后续处理打好了基础,下面是具体的实现步骤:

1. 按月分组汇总金额

这里推荐两种简洁的实现方式,你可以根据习惯选:

  • 方法一:用resample(需要先把时间列设为索引)
# 将last_payout设为索引,按自然月汇总金额后重置索引
df_monthly = df.set_index('last_payout')['amount'].resample('M').sum().reset_index()
  • 方法二:提取月份周期后分组
# 从last_payout中提取"年-月"的周期格式
df['month'] = df['last_payout'].dt.to_period('M')
# 按月份分组求和
df_monthly = df.groupby('month')['amount'].sum().reset_index()

两种方法最终都会得到包含月份和对应月度总金额的新DataFramedf_monthly。

2. 绘制汇总结果

咱们用matplotlib来做基础可视化,也可以换成seaborn实现更美观的样式:

基础折线图(matplotlib)

import matplotlib.pyplot as plt

# 设置图形尺寸
plt.figure(figsize=(10, 6))
# 绘制折线图(如果想用柱状图,把plot换成bar即可)
plt.plot(df_monthly['last_payout'].dt.to_timestamp(), df_monthly['amount'])
# 添加标题和坐标轴标签
plt.title('月度金额汇总', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('总金额', fontsize=12)
# 旋转x轴标签避免重叠
plt.xticks(rotation=45)
# 添加网格提升可读性
plt.grid(alpha=0.3)
# 显示图形
plt.show()

美观柱状图(seaborn)

如果想要更精致的可视化,换用seaborn:

import seaborn as sns

plt.figure(figsize=(10, 6))
sns.barplot(data=df_monthly, x='month', y='amount', palette='Blues_r')
plt.title('月度金额汇总', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('总金额', fontsize=12)
plt.xticks(rotation=45)
plt.show()

小补充

如果示例里的0值不需要计入汇总,可以先过滤数据再分组:

# 过滤掉amount为0的记录
filtered_df = df[df['amount'] > 0]
# 再执行后续的分组汇总操作

内容的提问来源于stack exchange,提问作者user40

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:48:37