我正在尝试绘制一个图表,显示使用 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。否则,条形图会更好吗?
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
如果将“年/月”列拆分为每年的单独系列,则会更容易
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")
添加回答
举报
0/150
提交
取消