我试图在按月分组后绘制时间序列,但我仍然在 x 轴标签上得到年份而不是月份。我们如何获得 x 轴标签上的月份和不同年份的不同曲线?
这是我的尝试:
import numpy as np
import pandas as pd
import statsmodels.api as sm
df = pd.DataFrame.from_records(sm.datasets.co2.load().data)
df['index'] = pd.to_datetime(df['index'])
df = df.set_index('index')
ts = df['co2']['1960':]
ts = ts.bfill()
ts = ts.resample('MS').sum()
ts.groupby(ts.index.month).plot()
通缉:
图的 x 轴上的月份名称以及不同年份的不同曲线。
该图应类似于以下内容:
最佳答案
我认为您正在寻找 pandas.to_datetime(),然后使用 dattime 索引的 .month 或 .year 属性。
此外,通过使用 statsmodel 的“as_pandas=True”,您的代码会变得更短
无论如何,如果你想将月份绘制为色调,我建议使用seaborn而不是matplotlib
import pandas as pd
import statsmodels.api as sm
import seaborn as sns
df = sm.datasets.co2.load(as_pandas=True).data
df['month'] = pd.to_datetime(df.index).month
df['year'] = pd.to_datetime(df.index).year
sns.lineplot(x='month',y='co2',hue='year',data=df.query('year>1995')) # filtered over 1995 to make the plot less cluttered
这给出
关于python - 如何使用 pandas 和每月 groupby 绘制时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57601552/