如何在R中创建按月份分组的累计发生次数折线图?
解决方案
1. 格式化日期列
首先确保日期列是datetime类型,这是后续分组统计的基础:
import pandas as pd import matplotlib.pyplot as plt # 示例数据(替换为你的实际DataFrame) df = pd.DataFrame({ 'ID': [1, 2, 3], 'DATE': ['1/02/2022', '1/07/2022', '2/14/2022'] }) # 转换日期格式(根据你的实际日期格式调整format参数) df['DATE'] = pd.to_datetime(df['DATE'], format='%m/%d/%Y')
2. 按月统计事件数并计算累计值
用resample按自然月分组统计当月事件数,再通过cumsum()生成累计值:
# 按月分组统计当月事件数 monthly_data = df.resample('M', on='DATE').size().reset_index(name='monthly_events') # 计算累计事件数 monthly_data['cumulative_events'] = monthly_data['monthly_events'].cumsum()
3. 绘制折线图
用matplotlib生成累计事件数的折线图:
plt.figure(figsize=(10, 6)) # 格式化x轴为年月字符串 plt.plot(monthly_data['DATE'].dt.strftime('%Y-%m'), monthly_data['cumulative_events'], marker='o', linestyle='-', color='#1f77b4') plt.title('累计事件数月度变化') plt.xlabel('月份') plt.ylabel('累计事件数') plt.grid(axis='y', linestyle='--', alpha=0.7) plt.xticks(rotation=45) plt.tight_layout() plt.show()
关键说明
- 如果你的日期格式是
DD/MM/YYYY,将pd.to_datetime的format参数改为%d/%m/%Y即可。 resample('M')会自动处理跨年度的月份分组,比手动提取年月更可靠。- 运行后
monthly_data的验证输出:
DATE monthly_events cumulative_events 0 2022-01-31 2 2 1 2022-02-28 1 3
内容的提问来源于stack exchange,提问作者Apwalmus
相关产品推荐
相关产品推荐

