1 转换字符串时间为标准时间
pandas 时间相关的类:
- 在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准时间类型。
- pandas 继承了 NumPy 库和 datetime 库的时间相关模块,提供了 6 种时间相关的类。
Timestamp 类型:
- 其中 Timestamp 作为时间类中最基础的,也是最为常用的。在多数情况下,时间相关的字符串都会转换成为 Timestamp。pandas 提供了to_datetime 函数,能够实现这一目标。
pd.to_datetime(order[‘lock_time’]) - 值得注意的是,Timestamp 类型时间是有限制的作者计算机中最早只能够表示至 1677 年 9 月 21 日,最晚只能表示至 2262 年 4 月 11日.
print(‘最小时间为:’,pd.Timestamp.min)
print(‘最小时间为:’,pd.Timestamp.max)
DatetimeIndex 与 PeriodIndex 函数:
- 除了将数据字原始 DataFrame 中直接转换为 Timestamp 格式外,还可以将数据单独提取
出来将其转换为 DatetimeIndex 或者PeriodIndex。 - 转换为 PeriodIndex 的时候需要注意,需要通过 freq 参数指定时间间隔,常用的时间间隔有 Y 为年,M 为月,D 为日,H 为小时,T 为分钟,S 为秒。两个函数可以用来转换数据还可以用来创建时间序列数据,其参数非常类似。
DatetimeIndex 与 PeriodIndex 函数及其参数说明:
- DatetimeIndex 和 PeriodIndex 两 者 区 别 在 日 常 使 用 的 过 程 中 相 对 较 小 , 其 中DatetimeIndex 是用来指代一系列时间点的一种数据结构,而 PeriodIndex 则是用来指代一系列时间段的数据结构。
2 提取时间序列数据信息
Timestamp 类常用属性:
- 在多数涉及时间相关的数据处理,统计分析的过程中,需要提取时间中的年份,月份等数据。使用对应的 Timestamp 类属性就能够实现这一目的。
- 结合 Python 列表推导式,可以实现对 DataFrame 某一列时间信息数据的提取。
在 DatetimeIndex 和 PeriodIndex 中提取信息:
- 在 DatetimeIndex 和 PeriodIndex 中提取对应信息可以以类属性方式实现。
- 值得注意的是 PeriodIndex 相比于 DatetimeIndex 少了 weekday_name 属性,所以不能够
用该属性提取星期名称数据。若想要提取信息名称可以通过提取 weekday 属性,而后将0-6 四个标签分别赋值为 Monday 至 Sunday。
print(‘dateIndex 中的星期名称数据前 5 个为:\n’,dateIndex.weekday_name[:5])
print(‘periodIndex 中的星期标号数据前 5 个为:’,periodIndex.weekday[:5])
3 加减时间数据
Timedelta 类:
- Timedelta 是时间相关的类中的一个异类,不仅能够使用正数,还能够使用负数表示单位时间,例如 1 秒,2 分钟,3 小时等。使用 Timedelta 类,配合常规的时间相关类能够轻松实现时间的算术运算。目前 Timedelta 函数中时间周期中没有年和月。所有周期名称,对应单位及其说明如下表所示。
time1 = order[‘lock_time’]+pd.Timedelta(days = 1)
print(‘lock_time 在加上一天前前 5 行数据为:\n’,order[‘lock_time’][:5])
print(‘lock_time 在加上一天前前 5 行数据为:\n’,time1[:5]) - 使用 Timedelta ,可以很轻松地实现在某个时间上加减一段时间 。
- 除了使用 Timedelta 实现时间的平移外,还能够直接对两个时间序列进行相减,从而得
出一个 Timedelta。
timeDelta = order[‘lock_time’] - pd.to_datetime(‘2017-1-1’)
print(‘lock_time 减去 2017 年 1 月 1 日 0 点 0 时 0 分后的数据:\n’,timeDelta[:5])
print(‘lock_time 减去 time1 后的数据类型为:’,timeDelta.dtypes)