我想和Pandas一起使用时间序列。我从csv文件中逐个读取多个时间序列,该文件在名为“Date”的列中的日期为(YYYY-MM-DD):
Date,Business,Education,Holiday
2005-01-01,6665,8511,86397
2005-02-01,8910,12043,92453
2005-03-01,8834,12720,78846
2005-04-01,8127,11667,52644
2005-05-01,7762,11092,33789
2005-06-01,7652,10898,34245
2005-07-01,7403,12787,42020
2005-08-01,7968,13235,36190
2005-09-01,8345,12141,36038
2005-10-01,8553,12067,41089
2005-11-01,8880,11603,59415
2005-12-01,8331,9175,70736
df = pd.read_csv(csv_file, index_col = 'Date',header=0)
Series_list = df.keys()
时间序列可以有不同的频率:日,周,月,季,年,我想根据我在生成Arima模型之前决定的频率来索引时间序列。有人可以解释一下如何定义系列的频率?
stepwise_fit = auto_arima(df[Series_name]....
答案 0 :(得分:1)
pandas有一个内置函数pandas.infer_freq()
import pandas as pd
df = pd.DataFrame({'Date': ['2005-01-01', '2005-02-01', '2005-03-01', '2005-04-01'],
'Date1': ['2005-01-01', '2005-01-02', '2005-01-03', '2005-01-04'],
'Date2': ['2006-01-01', '2007-01-01', '2008-01-01', '2009-01-01'],
'Date3': ['2006-01-01', '2006-02-06', '2006-03-11', '2006-04-01']})
df['Date'] = pd.to_datetime(df['Date'])
df['Date1'] = pd.to_datetime(df['Date1'])
df['Date2'] = pd.to_datetime(df['Date2'])
df['Date3'] = pd.to_datetime(df['Date3'])
pd.infer_freq(df.Date)
#'MS'
pd.infer_freq(df.Date1)
#'D'
pd.infer_freq(df.Date2)
#'AS-JAN'
或者,您也可以使用列的日期时间功能。
df.Date.dt.freq
#'MS'
当然,如果您的数据实际上没有实际频率,那么您将无法获得任何结果。
pd.infer_freq(df.Date3)
#
频率说明在offset-aliases下进行了说明。