猿问

我想使用 matplot.pylib、pandas 绘制几年来数据集中每月值的变化

我正在尝试绘制一个图表,显示使用 matplotlib (python) 和 pandas 的每月值的变化,但由于我是新手,所以我在处理它时遇到了困难。提前对格式表示歉意。


这是数据框的示例:


  Year    Month      Value

  2014    January     510

  2014    February    542

  2014    March       684

  2014    April       700

  2014    May         732

  2014    July        603

  2014    August      643

  2014    September   680

  2014    October     723

  2014    November    760

  2014    December    810

  2015    January     920

  2015    February    900

  2015    March       780

  2015    April       710

  2015    May         810

  2015    July        895

  2015    August      906

  2015    September   945

  2015    October     980

  2015    November    1000

  2015    December    1123

 

这是我尝试过的(缩短版本):


import matplotlib.pyplot as plt    


plt.title('Monthly data over several years')

plt.plot(df['Month'].to_list(), df['Value'].to_list())

这将导致 2015 年每个月在 Y 轴上绘制的值返回到上一年的相应月份,而不是在 2015 年 1 月至 12 月的 Y 轴上。例如,2015 年 1 月的值 920 将在 Y 轴上直接返回到 2014 年 1 月。


我也尝试过:


  months = {"January": 1, "February": 2, "March": 3, "April": 4, "May": 5, "June": 6,

 "July": 7,    "August": 8, "September": 9, "October": 10, "November": 11, "December": 12}

  df{'Month'] = df.Month.map(months)

  df['Date'] = df['Year'].map(str) + '-' + df['Month'].map(str)

这是为了将月份与相应的年份连接起来以避免前面的问题,但是,我最终在 df['Months'] 列中得到 NaN 值。此外,我觉得如果它确实有效的话,它会在x轴上填充过多的xticks(或标签??)。


我想要的是一个类似时间序列的绘图,显示两年内值的每月变化。我正在努力在图表上整齐地构造 xticks。否则,条形图会更好吗?


qq_笑_17
浏览 107回答 1
1回答

慕勒3428872

如果将“年/月”列拆分为每年的单独系列,则会更容易import pandas as pd import matplotlib.pyplot as pltfig, axes = plt.subplots(figsize=(6,4))df = pd.read_csv("data.csv")df2 = pd.pivot_table(df, index="Month", columns=["Year"])df2 = df2.reindex(['January', 'February', 'March', 'April', 'May', 'July', 'August', 'September', 'October', 'November', 'December'])df2.plot(ax=axes)fig.savefig("plot.png")
随时随地看视频慕课网APP

相关分类

Python
我要回答