如何使用pandas绘制各疫苗类型每日出现次数的分类多折线图
解决方案
问题原因
你当前的代码仅对日期单列做值计数,得到的是每日所有疫苗的总数量,因此只会输出一条折线。
操作步骤
- 先将日期字段转换为标准时间格式,避免后续排序、展示出现异常:
# 请将列名替换为你实际的字段名,示例中日期列名为「日期」 df['日期'] = pd.to_datetime(df['日期'], format='%d-%m-%Y')
- 同时按疫苗类型和日期两个维度分组统计每日数量,再将疫苗类型转为列维度,让每类疫苗对应单独一列数据:
# groupby的两个参数依次替换为你的实际疫苗类型列名、日期列名 daily_vac_counts = df.groupby(['疫苗类型', '日期']).size().unstack(level=0, fill_value=0)
- 直接调用plot方法即可生成每类疫苗对应一条折线的效果:
import matplotlib.pyplot as plt plot2 = daily_vac_counts.plot(kind='line', cmap='plasma', figsize=(12,6)) # 可选:补充图表标注 plt.xlabel('日期') plt.ylabel('当日出现数量') plt.title('各类疫苗每日出现数量趋势') plt.legend(title='疫苗类型') plt.show()
补充说明
unstack(level=0)是将分组后的第一个索引(疫苗类型)转为列,每列对应一类疫苗的每日计数- 参数
fill_value=0会将某类疫苗当日无数据的情况补为0,避免折线出现断层 - 如果你使用的是葡萄牙语字段名,把
groupby里的列名替换为实际的疫苗类型列、日期列即可
内容的提问来源于stack exchange,提问作者Taiguara Cavaliere
相关产品推荐
相关产品推荐

