Python:带有 Pandas 的时间序列

标签 python pandas time time-series

我想对 Pandas 使用时间序列。我从一个 csv 文件中一一读取了多个时间序列,该文件的“日期”列中的日期为 (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]....

最佳答案

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 下.

关于Python:带有 Pandas 的时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49615438/

相关文章:

java - 时差计算错误

python - tqdm progressbar 和 colorama 不能一起工作

python - 使用预定义列表分解行,同时保留现有行的值

java - 是否可以在 Java 中创建一个对输入法进行计时的方法?

python - Pandas:字符串的多个条件

python - pandas 中的索引对象——为什么 pd.columns 返回索引而不是列表

mysql - 如何计算时间差并将结果存储在 mySQL 数据库 (VB.NET) 中?

python - 使用 Selenium 和 Python 在日历日期选择器中选择特定日期

python - 在 python beautifulsoup 中查找与其他字符串共享同一类的字符串

Python3全局目录