我正在按月将一年的数据(六月-五月)绘制到晶须图上。
我有熊猫系列的数据:
Date
2018-06-01 0.012997
2018-06-02 0.009615
2018-06-03 0.012884
2018-06-04 0.013358
2018-06-05 0.013322
2018-06-06 0.011532
2018-06-07 0.018297
2018-06-08 0.018820
2018-06-09 0.031254
2018-06-10 0.016529
...
Name: Value, dtype: float64
我可以绘制它,但是我无法获得该列的月份名称,因此只能用数字绘制它。但是,由于月份不是从Jan = Dec开始的,所以这种月份的月份编号没有意义。
使用Grouper函数创建这样的df时,有什么方法可以获取月份名称?
我使用的代码最初来自https://machinelearningmastery.com/time-series-data-visualization-with-python/
如果我理解正确,则石斑鱼将系列安排到一个包含每月数据的数组中,因此我想这就是可能的时候(如果有的话):
groups = series.groupby(pd.Grouper(freq = 'M'))
months = pd.concat([pd.DataFrame(x[1].values) for x in groups], axis=1)
我尝试查找但在使用pd.DataFrame函数时如何根据任何条件命名列均无任何提示。如果有人可以帮助我提供正确的方向,我将不胜感激。
fig = plt.figure(figsize = (16,8))
#some code for other plots
ax3 = fig.add_subplot(212)
groups = series.groupby(pd.Grouper(freq = 'M'))
months = pd.concat([pd.DataFrame(x[1].values) for x in groups], axis=1)
months = pd.DataFrame(months)
months.columns = range(1,13)
months.boxplot()
ax3.set_title('Results June 2018 - May 2019')
plt.show()
答案 0 :(得分:1)
您可以将strftime
函数与'%B'
转换字符串一起使用,以获取相应的月份名称,然后绘制它们。
下面是一些示例代码:
series = pd.Series({'2018-06-01':0.012997,
'2018-06-02':0.009615,
'2018-07-03':0.012884,
'2018-06-04':0.013358,
'2018-08-05':0.013322,
'2018-09-06':0.011532,
'2018-10-07':0.018297,
'2018-11-08':0.018820,
'2018-12-09':0.031254,
'2018-06-10':0.016529})
series.index = pd.to_datetime(series.index)
fig = plt.figure(figsize = (16,8))
ax3 = fig.add_subplot(212)
group = series.groupby(pd.Grouper(freq = 'M')).sum()
plt.bar(group.index.strftime('%B'), group)
ax3.set_title('Results June 2018 - May 2019')
plt.show()
这是它产生的对应图: