学科分类
目录
数据分析

创建时期对象

在Pandas中,Period类表示一个标准的时间段或时期,比如某年、某月、某日、某小时等。创建Period对象的方式比较简单,只需要在Period类的构造方法中以字符串或整数的形式传入一个日期即可,示例代码如下。

In [32]: # 创建Period对象,表示的是从2018-01-012018-12-31之间的时间段
         pd.Period(2018)
Out[32]: Period('2018', 'A-DEC')
In [33]: # 创建Period对象,表示的是从2017-06-012017-06-30之间的整月时间
         period = pd.Period('2017/6')
         period
Out[33]: Period('2017-06', 'M')

从输出结果可以看出,Period对象中包含两部分,第1部分是表示日期的字符串,第2部分是表示时期的单位,它会根据传入的日期自动识别,另外也可以在创建时指定。

Period对象能够参与数学运算。如果Period对象加上或者减去一个整数,则会根据具体的时间单位进行位移操作,具体示例如下。

In [34]: period + 1  # Period对象加上一个整数
Out[34]: Period('2017-07', 'M')
In [35]: period - 5  # Period对象减去一个整数
Out[35]: Period('2017-01', 'M')

如果相同频率的两个Period对象进行数学运算,那么计算结果为它们的单位数量,具体示例如下。

In [36]: # 创建一个与period频率相同的Period对象
         other_period = pd.Period(201201, freq='M' )
         period - other_period
Out[36]: 65

如果希望创建多个固定频率的Period对象,则可以通过period_range()函数实现,示例代码如下。

In [37]: period_index = pd.period_range('2012.1.8', '2012.5.31', freq='M')
    period_index

Out[37]: 

PeriodIndex(['2012-01', '2012-02', '2012-03', '2012-04', '2012-05'],

 dtype='period[M]', freq='M')

上述示例返回了一个PeriodIndex对象,是由一组时期对象构成的索引,它里面的['2012-01', '2012-02', '2012-03', '2012-04', '2012-05']是一个时期序列,序列中的每个元素都是一个Period对象,dtype='period[M] '代表时期的数据类型为period[M],freq='M'表明时期的计算单位为每月。

除了使用上述方式创建PeriodIndex外,还可以直接在PeriodIndex的构造方法中传入一组日期字符串,示例代码如下。

In [38]: str_list = ['2010', '2011', '2012']
         pd.PeriodIndex(str_list, freq='A-DEC')
Out[38]: 
PeriodIndex(['2010', '2011', '2012'], dtype='period[A-DEC]', freq='A-DEC')

同DatetimeIndex对象相比,PeriodIndex对象也可以作为Series或DataFrame的索引使用,示例代码如下。

In [39]: period_ser = pd.Series(np.arange(5), period_index)
         period_ser
Out[39]: 
2012-01  0
2012-02  1
2012-03  2
2012-04  3
2012-05  4
Freq: M, dtype: int32

注意:

DatetimeIndex和PeriodIndex在日常使用的过程中并没有太大的区别,其中,DatetimeIndex是用来指代一系列时间点的一种索引结构,而PeriodIndex则是用来指代一系列时间段的索引结构。

点击此处
隐藏目录