副标题[/!--empirenews.page--]
时间序列数据Time Series Data是在不同时间上收集到的数据,这类数据是按时间顺序收集到的,用于所描述现象随时间变化的情况。
时间序列分析广泛应用于计量经济学模型中,通过寻找历史数据中某一现象的发展规律,对未来进行预测。
时间序列数据作为时间序列分析的基础,学会如何对它进行巧妙地处理是非常必要的,Python中的Pandas库为我们提供了强大的时间序列数据处理的方法,本文会介绍其中常用的几个。
【工具】
01、时间格式转换
有时候,我们获得的原始数据并不是按照时间类型索引进行排列的,需要先进行时间格式的转换,为后续的操作和分析做准备。
这里介绍两种方法。第一种方法是用pandas.read_csv导入文件的时候,通过设置参数parse_dates和index_col,直接对日期列进行转换,并将其设置为索引。关于参数的详细解释,请查看文档【1】。
如下示例中,在没有设置参数之前,可以观察到数据集中的索引是数字0-208,'date'列的数据类型也不是日期。
- In [8]: data = pd.read_csv('unemployment.csv')
- In [9]: data.info()
- <class 'pandas.core.frame.DataFrame'>
- RangeIndex: 209 entries, 0 to 208
- Data columns (total 2 columns):
- date 209 non-null object
- UNRATE 209 non-null float64
- dtypes: float64(1), object(1)
- memory usage: 3.3+ KB
设置参数parse_dates = ['date'] ,将数据类型转换成日期,再设置 index_col = 'date',将这一列用作索引,结果如下。
- In [11]: data = pd.read_csv('unemployment.csv', parse_dates=['date'], index_col='date')
-
- In [12]: data.info()
- <class 'pandas.core.frame.DataFrame'>
- DatetimeIndex: 209 entries, 2000-01-01 to 2017-05-01
- Data columns (total 1 columns):
- UNRATE 209 non-null float64
- dtypes: float64(1)
- memory usage: 13.3 KB
这时,索引变成了日期'20000101'-'2017-05-01',数据类型是datetime。
第二种方法是在已经导入数据的情况下,用pd.to_datetime()【2】将列转换成日期类型,再用 df.set_index()【3】将其设置为索引,完成转换。
以tushare.pro上面的日线行情数据为例,我们把'trade_date'列转换成日期类型,并设置成索引。
- import tushare as ts
- import pandas as pd
-
- pd.set_option('expand_frame_repr', False) # 列太多时不换行
- pro = ts.pro_api()
-
- df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
-
- df.info()
-
- <class 'pandas.core.frame.DataFrame'>
- RangeIndex: 13 entries, 0 to 12
- Data columns (total 11 columns):
- ts_code 13 non-null object
- trade_date 13 non-null object
- open 13 non-null float64
- high 13 non-null float64
- low 13 non-null float64
- close 13 non-null float64
- pre_close 13 non-null float64
- change 13 non-null float64
- pct_chg 13 non-null float64
- vol 13 non-null float64
- amount 13 non-null float64
- dtypes: float64(9), object(2)
- memory usage: 1.2+ KB
- None
-
-
- df['trade_date'] = pd.to_datetime(df['trade_date'])
- df.set_index('trade_date', inplace=True)
- df.sort_values('trade_date', ascending=True, inplace=True) # 升序排列
-
- df.info()
-
- <class 'pandas.core.frame.DataFrame'>
- DatetimeIndex: 13 entries, 2018-07-02 to 2018-07-18
- Data columns (total 10 columns):
- ts_code 13 non-null object
- open 13 non-null float64
- high 13 non-null float64
- low 13 non-null float64
- close 13 non-null float64
- pre_close 13 non-null float64
- change 13 non-null float64
- pct_chg 13 non-null float64
- vol 13 non-null float64
- amount 13 non-null float64
- dtypes: float64(9), object(1)
- memory usage: 1.1+ KB
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|