学科分类
目录
数据分析

创建时间序列

对于时间序列数据而言,必然少不了时间戳这一关键元素。Pandas中,时间戳使用Timestamp(Series派生的子类)对象表示,该对象与datetime有高度兼容性,可以直接通过to_datetime()函数将datetime转换为TimeStamp对象,具体示例如下。

In [1]: import pandas as pd
        from datetime import datetime
        import numpy as np
        pd.to_datetime('20180828')  # 将datetime转换为Timestamp对象
Out[1]: Timestamp('2018-08-28 00:00:00')

如果传入的是多个datetime组成的列表,则Pandas会将其强制转换为DatetimeIndex类对象,示例代码如下。

In [2]: # 传入多个datetime字符串
        date_index = pd.to_datetime(['20180820', '20180828', '20180908'])
        date_index
Out[2]: DatetimeIndex(['2018-08-20', '2018-08-28', '2018-09-08'],
                      dtype='datetime64[ns]', freq=None)
In [3]: date_index[0]  # 取出第一个时间戳
Out[3]: Timestamp('2018-08-20 00:00:00')

上述示例输出了一个DatetimeIndex对象,表示由一组时间戳构成的索引,它里面['2018-08-20', '2018-08-28', '2018-09-08']序列中的每个标量值(如2018-08-20)都是一个Timestamp对象,dtype='datetime64[ns]'表示数据的类型为datetime64[ns],freq=None表示没有日期频率。

在Pandas中,最基本的时间序列类型就是以时间戳为索引的Series对象。创建一个Series对象,然后将刚创建的date_index作为该对象的索引,示例代码如下。

In [4]: # 创建时间序列类型的Series对象
        date_ser = pd.Series([11, 22, 33], index=date_index)
        date_ser
Out[4]: 
2018-08-20  11
2018-08-28  22
2018-09-08  33
dtype: int64

从输出结果中可以看出,Series对象的索引变成了“年-月-日”格式的日期,日期索引对应的数据是11、22、33。

除此之外,还可以直接将包含多个datetime对象的列表传给index参数,同样能创建具有时间戳索引的Series对象,具体示例如下。

In [5]: # 指定索引为多个datetime的列表
        date_list = [datetime(2018, 1, 1), datetime(2018, 1, 15),
                     datetime(2018, 2, 20), datetime(2018, 4, 1),
                     datetime(2018, 5, 5), datetime(2018, 6, 1)]
        time_se = pd.Series(np.arange(6), index=date_list)
        time_se

Out[5]: 
2018-01-01  0
2018-01-15  1
2018-02-20  2
2018-04-01  3
2018-05-05  4
2018-06-01  5
dtype: int32

如果希望DataFrame对象具有时间戳索引,也可以采用上述方式进行创建,示例代码如下。

In [6]: data_demo = [[11, 22, 33], [44, 55, 66], [77, 88, 99], [12, 23, 34]]
        date_list = [datetime(2018, 1, 23), datetime(2018, 2, 15),
                     datetime(2018, 5, 22), datetime(2018, 3, 30)]
        time_df = pd.DataFrame(data_demo, index=date_list)
        time_df
Out[6]: 
​        0  1  2
2018-01-23 11 22 33
2018-02-15 44 55 66
2018-05-22 77 88 99
2018-03-30 12 23 34
点击此处
隐藏目录