python - 如何使用 pandas 和每月 groupby 绘制时间序列?

标签 python pandas plot time-series

我试图在按月分组后绘制时间序列,但我仍然在 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

这给出

enter image description here

关于python - 如何使用 pandas 和每月 groupby 绘制时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57601552/

相关文章:

python - 如何在 Django 模型中存储列表

python - 平均文件之间的值,但保留不匹配的值

python - 如何修改matplotlib-venn中的字体大小

python - 有没有办法从 FastF1 每行显示更多列(参见代码)

python - Pandas 在完全匹配和部分匹配上合并 DataFrame

python - 如何从 Pandas 数据框中检索在其中一列末尾包含特定值的记录序列?

python - 等高线图图例 - Matplotlib

plot - Vega-Lite:添加不基于字段值/自动颜色/自动形状的自定义图例

python - 用 Python 和 Objective C 解密

python - 如何绘制正确的分布 TreeMap ?