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

Python如何按月份统计Col3列S、D数量并绘制双折线图

需求说明
  • 按Col4列的月份维度,统计Col3列中S、D两类取值的出现数量
  • 输出X轴为月份、包含S、D两条计数折线的统计图
  • 现有代码仅实现了全局S、D计数的柱状图,缺少按月关联统计的逻辑
现有资源

已编写代码

#to plot the number of S and D in col3

df = pd.read_csv (r'C:\Users\data.csv', usecols = ['Col1','Col2','Col3','Col4'])
df['Col4'] = pd.to_datetime(df['Col4'], format="%m/%d/%Y").dt.date
df.head()

df1 = df[['Col3']].copy()
my_dict = df1['Col3'].value_counts().to_dict()  
myList = my_dict.items()
x, y = zip(*myList) 
plt.bar(x, y, color = "tomato")
plt.ylabel('Count')
plt.title('Outcome')
plt.show() 

样例数据

序号Col1Col2Col3Col4
0YMAS2/2/2022
1NYJD4/25/2022
2NYJD3/11/2022
3NYJD4/28/2022
4YYJD4/21/2022
5NYJD4/21/2022
6YWED5/25/2022
7YWES5/7/2022
8NWED3/30/2022
9NPRD3/22/2022
10YPRS3/22/2022
实现方案

直接在原有逻辑基础上补充月份提取、分组统计步骤即可,完整可运行代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 读取并解析日期
df = pd.read_csv(r'C:\Users\data.csv', usecols=['Col1','Col2','Col3','Col4'])
df['Col4'] = pd.to_datetime(df['Col4'], format="%m/%d/%Y")
# 提取年月维度,格式统一为年-月,保证X轴按时间顺序排序
df['month'] = df['Col4'].dt.strftime('%Y-%m')

# 按月、Col3取值分组计数,将S/D转换为单独列,缺失计数填0
monthly_stats = df.groupby(['month', 'Col3']).size().unstack(fill_value=0)

# 绘制双折线图
plt.figure(figsize=(9, 5))
plt.plot(monthly_stats.index, monthly_stats['S'], marker='o', label='S count')
plt.plot(monthly_stats.index, monthly_stats['D'], marker='s', label='D count')

plt.xlabel('Month')
plt.ylabel('Count')
plt.title('Monthly S/D Count Statistics')
plt.legend()
plt.grid(alpha=0.3)
plt.show()
  • 提取月份时保留年份信息,避免跨年同月数据被错误合并
  • 分组统计后用unstack转宽表,可直接传入绘图函数生成两条折线,无需手动拆分数据
  • 折线添加节点标记,方便读取每个月的具体数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:12:15