点击跳转 《Pandas系列目录》
时间类中最基础的一种,也是最常用的。多数情况下,时间相关的字符串都会转换成Timestamp
to_datetime(),能够实现这一目标
order['lock_time'] = pd.to_datetime(order['lock_time'])Timestamp类型时间是有限制的
print("min:", pd.Timestamp.min) # min: 1677-09-21 00:12:43.145225 print("max:", pd.Timestamp.max) # max: 2262-04-11 23:47:16.854775807Timestamp类常用属性
在多数涉及时间相关的数据处理、统计分析的过程中,需要提取时间中的年份、月份等数据,使用对应的Timestamp类属性可以实现这一目的结合Python列表推导式,可以实现对DataFrame某一列时间信息数据的提取 # 转换为datetime order['lock_time'] = pd.to_datetime(order['lock_time']) year1 = [i.year for i in order['lock_time']] print('lock_time中的年份数据前5个为:', year1[:5]) month1 = [i.month for i in order['lock_time']] print('lock_time中的月份数据前5个为:', month1[:5]) day1 = [i.day for i in order['lock_time']] print('lock_time中的日期数据前5个为:', day1[:5]) weekday1 = [i.weekday_name for i in order['lock_time']] print('lock_time中的星期名称数据前5个为:', weekday1[:5]) # 使用DatetimeIndex dateIndex = pd.DatetimeIndex(order["lock_time"]) print(dateIndex.weekday_name[:5]) # 使用PeriodIndex periodIndex = pd.PeriodIndex(order["lock_time"], freq='S') print(periodIndex.weekday[:5]) # 没有weekday_name属性,0表示Monday除了将数据原始DataFrame中直接转换为Timestamp以外,还可以将数据单独提取出来转换为DatetimeIndex或PeriodIndex
DatetimeIndex:用来指代一系列时间点的数据结构
PeriodIndex:用来指代一系列时间段的数据结构
DatetimeIndex与PeriodIndex函数
除了将数据原始DataFrame中直接转换为Timestamp以外,还可以将数据单独提取出来转换为DatetimeIndex或Periodndex
# 转换为DatetimeIndex dateIndex = pd.DatetimeIndex(order["lock_time"]) # 转换为PeriodIndex periodIndex = pd.PeriodIndex(order["lock_time"], freq='S')转换为PeriodIndex时,需要通过freq参数指定时间间隔
Y:年M:月D:日H:小时T:分钟S:秒两个函数可以用来转换数据,还可以用来创建时间序列数据,参数非常相似
Timedelta类
Timedelta是时间相关的类中的一个异类,不仅能够使用正数,还能够使用负数表示单位时间,例如1秒,2分钟,3小时等使用Timedelta类,配合常规的时间相关类能够轻松实现时间的算术运算目前Timedelta函数中时间周期没有年和月 order['lock_time'] = pd.to_datetime(order['lock_time']) # 转换为datetime time1 = order['lock_time'] + pd.Timedelta(days=1) timeDelta = order['lock_time'] - pd.to_datetime('2017-1-1') # 字符串 print(timeDelta.dtypes) # timedelta64[ns] import pandas as pd order = pd.read_table('...') # 时间字符串转换为标准时间格式 order['use_start_time'] = pd.to_datetime(order['use_start_time']) order['lock_time'] = pd.to_datetime(order['lock_time']) # 订单信息表时间信息提取 year = [i.year for i in order['lock_time']] # 提取年份信息 month = [i.month for i in order['lock_time']] # 提取月份信息 day = [i.day for i in order['lock_time']] # 提取日期信息 week = [i.week for i in order['lock_time']] # 提取周信息 weekday = [i.weekday() for i in order['lock_time']] # 提取星期信息 weekname = [i.weekday_name for i in order['lock_time']] # 提取星期名称信息,出错 print('订单详情表中的前5条数据的年份信息为:', year[:5]) print('订单详情表中的前5条数据的月份信息为:', month[:5]) print('订单详情表中的前5条数据的日期信息为:', day[:5]) print('订单详情表中的前5条数据的周信息为:', week[:5]) print('订单详情表中的前5条数据的星期信息为:', weekday[:5]) print('订单详情表中的前5条数据的星期名称信息为:', weekname[:5]) # 查看订单信息表时间统计信息 timemin = order['lock_time'].min() timemax = order['lock_time'].max() print('订单最早的时间为:', timemin) print('订单最晚的时间为:', timemax) print('订单持续的时间为:', timemax - timemin) chekTime = order['lock_time'] - order['use_start_time'] print('平均点餐时间为:', chekTime.mean()) print('最小点餐时间为:', chekTime.min()) print('最大点餐时间为:', chekTime.max())