如何合并数据框的月份和年份列以形成时间序列数据

时间:2018-10-24 18:14:40

标签: python pandas datetime dataframe

我的数据框

下面的数据框由“年”,“月”和“数据”组成:

np.random.seed(0)

df = pd.DataFrame(dict(
Year = [2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003],
Month = [1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12],
Data = np.random.randint(21,100,size=36)))

df

我想以一种Python方式将其转换为时间序列数据,以便将“ Data”和“ Data”作为时间序列数据而不是数据帧放置在适当位置。

我尝试过的事情

我尝试过:

import pandas as pd
timeseries = data.assign(Date=pd.to_datetime(data[['Year', 'Month']].assign(day=1)))
columns = ['Year','Month']

df.drop(columns,inplace = True,axis = 1)#我不需要日,但是年和月     时间序列

但是新数据只会在数据框中添加一个称为“日期”的列。

我想要的

我想要一个仅由“日期”(例如2001-1)和“数据”列组成的时间序列数据,以便我可以绘制时间图,对数据进行时间序列分析和预测。

我的意思是如何索引这样的时间序列数据,以便当我用以下代码绘制时:

plt.figure(figsize=(5.5, 5.5))
data1['Data'].plot(color='b')
plt.title('Monthly Data')
plt.xlabel('Data')
plt.ylabel('Data')
plt.xticks(rotation=30)

我将把x轴的刻度作为数据而不是数字

1 个答案:

答案 0 :(得分:1)

IIUC,您的方法很好,让大熊猫绘制X轴手柄。

ax = df.set_index(pd.to_datetime(df[['Year','Month']].assign(day=1)))['Data']\
       .plot(color='b', figsize=(5.5,5.5), title='Monthly Data')
_ = ax.set_xlabel('Data')
_ = ax.set_ylabel('Data')

输出:

enter image description here