Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pandas和每月groupby绘制时间序列?_Python_Pandas_Plot_Time Series - Fatal编程技术网

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

Python 如何使用pandas和每月groupby绘制时间序列?,python,pandas,plot,time-series,Python,Pandas,Plot,Time Series,我试着在按月份分组后绘制一个时间序列,但我仍然在x轴标签上画年而不是月。我们怎样才能得到x轴标签上的月份和不同年份的不同曲线 以下是我的尝试: 将numpy导入为np 作为pd进口熊猫 将statsmodels.api作为sm导入 df=pd.DataFrame.from_记录(sm.datasets.co2.load().data) df['index']=pd.to_datetime(df['index']) df=df.set_索引(“索引”) ts=df['co2']['1960':]

我试着在按月份分组后绘制一个时间序列,但我仍然在x轴标签上画年而不是月。我们怎样才能得到x轴标签上的月份和不同年份的不同曲线

以下是我的尝试:

将numpy导入为np
作为pd进口熊猫
将statsmodels.api作为sm导入
df=pd.DataFrame.from_记录(sm.datasets.co2.load().data)
df['index']=pd.to_datetime(df['index'])
df=df.set_索引(“索引”)
ts=df['co2']['1960':]
ts=ts.bfill()
ts=ts.resample('MS').sum()
ts.groupby(ts.index.month.plot())
通缉: 月份名称在不同年份的曲线图和不同曲线的x轴上

绘图应类似于:
您可以从以下内容开始:

ts.groupby([ts.index.month,ts.index.year]).sum().unstack().plot(figsize=(12,8))

使现代化

我认为您正在寻找熊猫。使用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
这给


谢谢。线条图周围的阴影是什么?如何消除这一点?这是由于隐式获取每个月数据的平均值而导致的置信区间。将ci=None设置为删除。请参阅文档。
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