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

I want to plot changes in monthly values from dataset spanning over few years with 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。否则,条形图会更好吗?

如果将 Year/month 列拆分为每年的单独系列,就容易多了

import pandas as pd 
import matplotlib.pyplot as plt

fig, 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")