pandas 转换与处理时间序列数据

转换字符串时间为标准时间
pandas 时间相关的类:
在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准 时间类型。
pandas 继承了 NumPy 库和 datetime 库的时间相关模块,提供了 6 种时间相关的类。
pandas 转换与处理时间序列数据_第1张图片
Timestamp 类型:
其中 Timestamp 作为时间类中最基础的,也是最为常用的。在多数情况下,时间相关的 字符串都会转换成为 Timestamp。
pandas 提供了 to_datetime 函数,能够实现这一目标。
pd.to_datetime(order[‘lock_time’])
值得注意的是,Timestamp 类型时间是有限制的
作者计算机中最早只能够表示至 1677 年 9 月 21 日,最晚只能表示至 2262 年 4 月 11 日
DatetimeIndex 与 PeriodIndex 函数
除了将数据字原始 DataFrame 中直接转换为 Timestamp 格式外,还可以将数据单独提取 出来将其转换为 DatetimeIndex 或者 PeriodInde
转换为 PeriodIndex 的时候需要注意,需要通过 freq 参数指定时间间隔,常用的时间间隔有 Y 为年,M 为月,D 为日,H 为小时,T 为分钟,S 为秒。两个函数可以用来转换 数据还可以用来创建时间序列数据,其参数非常类似。
DatetimeIndex 与 PeriodIndex 函数及其参数说明:
DatetimeIndex 和 PeriodIndex 两 者 区 别 在 日 常 使 用 的 过 程 中 相 对 较 小 , 其 中 DatetimeIndex 是用来指代一系列时间点的一种数据结构,而 PeriodIndex 则是用来指代 一系列时间段的数据结构。
pandas 转换与处理时间序列数据_第2张图片
提取时间序列数据信息
pandas 转换与处理时间序列数据_第3张图片

data1 = pd.read_csv('meal_order_info.csv',sep=',',encoding='gbk')
print(data1.columns)
# Index(['info_id', 'emp_id', 'number_consumers', 'mode', 'dining_table_id',
#        'dining_table_name', 'expenditure', 'dishes_count', 'accounts_payable',
#        'use_start_time', 'check_closed', 'lock_time', 'cashier_id', 'pc_id',
#        'order_number', 'org_id', 'print_doc_bill_num', 'lock_table_info',
#        'order_status', 'phone', 'name'],
#       dtype='object')
data1['use_start_time'] = pd.to_datetime(data1['use_start_time'])
print(type(data1['use_start_time'][0]))
#
year = [i.year for i in data1['use_start_time']]
month = [i.month for i in data1['use_start_time']]
day = [i.day for i in data1['use_start_time']]
hour = [i.hour for i in data1['use_start_time']]
minute = [i.minute for i in data1['use_start_time']]
second = [i.second for i in data1['use_start_time']]
date = [i.date for i in data1['use_start_time']]
time = [i.time for i in data1['use_start_time']]
week = [i.week for i in data1['use_start_time']]
quarter = [i.quarter for i in data1['use_start_time']]
dayofyear = [i.dayofyear for i in data1['use_start_time']]
weekofyear = [i.weekofyear for i in data1['use_start_time']]
dayofweek = [i.dayofweek for i in data1['use_start_time']]
weekday = [i.weekday for i in data1['use_start_time']]
weekday_name = [i.weekday_name for i in data1['use_start_time']]
print(year)
print(month)
print(day)
print(hour)
print(weekday_name)

在 DatetimeIndex 和 PeriodIndex 中提取信息:

在 DatetimeIndex 和 PeriodIndex 中提取对应信息可以以类属性方式实现。
值得注意的是 PeriodIndex 相比于 DatetimeIndex 少了 weekday_name 属性,所以不能够 用该属性提取星期名称数据。若想要提取信息名称可以通过提取 weekday 属性,而后将 0-6 四个标签分别赋值为 Monday 至 Sunday

加减时间数据

Timedelta 是时间相关的类中的一个异类,不仅能够使用正数,还能够使用负数表示单 位时间,例如 1 秒,2 分钟,3 小时等。使用 Timedelta 类,配合常规的时间相关类能够 轻松实现时间的算术运算。目前 Timedelta 函数中时间周期中没有年和月。所有周期名 称,对应单位及其说明如下表所示。
pandas 转换与处理时间序列数据_第4张图片

time_delta = data1['use_start_time'] - pd.to_datetime('2017.1.1')
print('距离2017年一月一日0点0时0分后的数据:\n', time_delta[:5])
print(time_delta.dtypes)  # timedelta64[ns]
距离2017年一月一日0点0时0分后的数据:
 0   -153 days +11:05:00
1   -153 days +11:15:00
2   -153 days +12:42:00
3   -153 days +12:51:00
4   -153 days +12:58:00
Name: use_start_time, dtype: timedelta64[ns]

你可能感兴趣的:(数据分析)