Pandas 统计分析基础 笔记3 任务4.3 转换与处理时间序列数据
程序员文章站
2022-05-07 15:20:09
...
pandas_任务4.3 转换与处理时间序列数据
!
!!
!!!可以点击下面连接
代码 4-41 转换字符串时间为标准时间
import pandas as pd
path = '../data'
order = pd.read_table(path+'/meal_order_info.csv',sep = ',',encoding = 'gbk')
print('进行转换前订单信息表lock_time的类型为:',order['lock_time'] .dtypes)
order['lock_time'] = pd.to_datetime(order['lock_time'])
print('进行转换后订单信息表lock_time的类型为:',order['lock_time'].dtypes)
进行转换前订单信息表lock_time的类型为: object
进行转换后订单信息表lock_time的类型为: datetime64[ns]
代码 4-42 Timestamp的最小时间和最大时间
print('最小时间为:', pd.Timestamp.min)
print('最大时间为:', pd.Timestamp.max)
最小时间为: 1677-09-21 00:12:43.145225
最大时间为: 2262-04-11 23:47:16.854775807
代码 4-43 时间字符串转换为DatatimeIndex和PeriodIndex
dateIndex = pd.DatetimeIndex(order['lock_time'])
print('转换为DatetimeIndex后数据的类型为:\n',type(dateIndex))
periodIndex = pd.PeriodIndex(order['lock_time'],freq = 'S')
print('转换为DatetimeIndex后数据的类型为:\n',type(periodIndex))
转换为DatetimeIndex后数据的类型为:
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
转换为DatetimeIndex后数据的类型为:
<class 'pandas.core.indexes.period.PeriodIndex'>
代码 4-44 提取datetime数据中的时间序列数据
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.day_name() for i in order['lock_time']]
print('lock_time中的星期名称数据前5个为:',weekday1[:5])
lock_time中的年份数据前5个为: [2016, 2016, 2016, 2016, 2016]
lock_time中的月份数据前5个为: [8, 8, 8, 8, 8]
lock_time中的日期数据前5个为: [1, 1, 1, 1, 1]
lock_time中的星期名称数据前5个为: ['Monday', 'Monday', 'Monday', 'Monday', 'Monday']
代码 4-45 提取DatetimeIndex和PeriodIndex中的数据
print('dataIndex中的星期名称数据前5个为:\n',dateIndex.day_name() [:5])
print('periodIndex中的星期标号数据前5个为:',
periodIndex.weekday[:5])
dataIndex中的星期名称数据前5个为:
Index(['Monday', 'Monday', 'Monday', 'Monday', 'Monday'], dtype='object', name='lock_time')
periodIndex中的星期标号数据前5个为: Int64Index([0, 0, 0, 0, 0], dtype='int64', name='lock_time')
代码 4-46 使用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])
lock_time在加上一天前前5行数据为:
0 2016-08-01 11:11:46
1 2016-08-01 11:31:55
2 2016-08-01 12:54:37
3 2016-08-01 13:08:20
4 2016-08-01 13:07:16
Name: lock_time, dtype: datetime64[ns]
lock_time在加上一天前前5行数据为:
0 2016-08-02 11:11:46
1 2016-08-02 11:31:55
2 2016-08-02 12:54:37
3 2016-08-02 13:08:20
4 2016-08-02 13:07:16
Name: lock_time, dtype: datetime64[ns]
代码 4-47 使用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)
lock_time减去2017年1月1日0点0时0分后的数据:
0 -153 days +11:11:46
1 -153 days +11:31:55
2 -153 days +12:54:37
3 -153 days +13:08:20
4 -153 days +13:07:16
Name: lock_time, dtype: timedelta64[ns]
lock_time减去time1后的数据类型为: timedelta64[ns]
代码 4-48 订单信息表时间数据转换
order = pd.read_table('../data/meal_order_info.csv',
sep = ',',encoding = 'gbk')
order['use_start_time'] = pd.to_datetime(order['use_start_time'])
order['lock_time'] = pd.to_datetime(order['lock_time'])
print('进行转换后订单信息表use_start_time和lock_time的类型为:\n',
order[['use_start_time','lock_time']].dtypes)
进行转换后订单信息表use_start_time和lock_time的类型为:
use_start_time datetime64[ns]
lock_time datetime64[ns]
dtype: object
代码 4-49 订单信息表时间信息提取
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.day_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])
订单详情表中的前5条数据的年份信息为: [2016, 2016, 2016, 2016, 2016]
订单详情表中的前5条数据的月份信息为: [8, 8, 8, 8, 8]
订单详情表中的前5条数据的日期信息为: [1, 1, 1, 1, 1]
订单详情表中的前5条数据的周信息为: [31, 31, 31, 31, 31]
订单详情表中的前5条数据的星期信息为: [0, 0, 0, 0, 0]
订单详情表中的前5条数据的星期名称信息为: ['Monday', 'Monday', 'Monday', 'Monday', 'Monday']
代码 4-50 查看订单信息表时间统计信息
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())
订单最早的时间为: 2016-08-01 11:11:46
订单最晚的时间为: 2016-08-31 21:56:12
订单持续的时间为: 30 days 10:44:26
平均点餐时间为: 0 days 01:12:10.326923
最小点餐时间为: -1 days +00:05:03
最大点餐时间为: 16 days 00:08:00
上一篇: Scrapy从脚本运行爬虫的5种方式
下一篇: 第4章 路由与状态管理