Python数据分析之pandas统计分析基础4

pandas时间相关的类

在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准时间类型。pandas继承了numpy库和datetime库的时间相关模块,提供了6种时间相关的类:
Python数据分析之pandas统计分析基础4_第1张图片
csv文件:
csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。csv文件用记事本和excel都能打开,用记事本打开显示逗号,用excel打开,没有逗号了,逗号都用来分列了,还可有Editplus打开。
虽然csv格式文件可以用Excel来打开,但是由于计算机档案数据转换的原因,会将其CRC之数值改做科学记号方式储存,而造成档案中的CRC值发生错误。所以,如果想要查看真实的csv数据,最好使用专用的软件来查看,或者将其转化成Excel的专用格式再使用Excel来打开。

import pandas as pd  # 引入pandas模块

data = pd.read_csv('../data/meal_order_info.csv', encoding='gbk')  # 读取csv数据
print('获取列名', data.columns)
# D:\Anaconda3\python.exe E:/Python数据分析/code/test.py
# 获取列名 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')

Timestamp类
作为时间类中最基础的,也是最为常用的。在多数情况下,时间相关的字符串都会转换成为Timestamp。pandas提供了to_datetime函数,能够实现这一目标,值得注意的是,Timestamp类型时间是有限制的。

import pandas as pd  # 引入pandas模块

data = pd.read_csv('../data/meal_order_info.csv', encoding='gbk')  # 读取csv数据
data['lock_time'] = pd.to_datetime(data['lock_time'])  # 时间相关的字符串转换为Timestamp

DatetimeIndex与PeriodIndex类
除了将数据字原始DataFrame中直接转换为Timestamp格式外,还可以将数据单独提取出来将其转换为DatetimeIndex或者PeriodIndex。
转换为PeriodIndex的时候需要注意,需要通过freq参数指定时间间隔,常用的时间间隔有Y为年,M为月,D为日,H为小时,T为分钟,S为秒。两个函数可以用来转换数据还可以用来创建时间序列数据,其参数非常类似。
DatetimeIndex与PeriodIndex函数及其参数说明:
DatetimeIndex和PeriodIndex两者区别在日常使用的过程中相对较小,其中DatetimeIndex是用来指代一系列时间点的一种数据结构,而PeriodIndex则是用来指代一系列时间段的数据结构。
Python数据分析之pandas统计分析基础4_第2张图片

import pandas as pd  # 引入pandas模块

data = pd.read_csv('../data/meal_order_info.csv', encoding='gbk')  # 读取csv数据
data['lock_time'] = pd.to_datetime(data['lock_time'])  # 时间相关的字符串转换为Timestamp
print(pd.DatetimeIndex(data['use_start_time'].values))
print(pd.PeriodIndex(data['use_start_time'].values, freq='S'))  # 以秒为时间间隔
# D:\Anaconda3\python.exe E:/Python数据分析/code/test.py
# DatetimeIndex(['2016-08-01 11:05:36', '2016-08-01 11:15:57',
#                '2016-08-01 12:42:52', '2016-08-01 12:51:38',
#                '2016-08-01 12:58:44', '2016-08-01 13:15:42',
#                '2016-08-01 13:17:37', '2016-08-01 13:38:27',
#                '2016-08-01 17:06:20', '2016-08-01 17:32:27',
#                ...
#                '2016-08-31 18:05:51', '2016-08-31 18:28:06',
#                '2016-08-31 18:40:56', '2016-08-31 19:14:12',
#                '2016-08-31 20:25:16', '2016-08-31 21:23:48',
#                '2016-08-31 21:24:12', '2016-08-31 21:25:18',
#                '2016-08-31 21:37:39', '2016-08-31 21:41:56'],
#               dtype='datetime64[ns]', length=945, freq=None)
# PeriodIndex(['2016-08-01 11:05:36', '2016-08-01 11:15:57',
#              '2016-08-01 12:42:52', '2016-08-01 12:51:38',
#              '2016-08-01 12:58:44', '2016-08-01 13:15:42',
#              '2016-08-01 13:17:37', '2016-08-01 13:38:27',
#              '2016-08-01 17:06:20', '2016-08-01 17:32:27',
#              ...
#              '2016-08-31 18:05:51', '2016-08-31 18:28:06',
#              '2016-08-31 18:40:56', '2016-08-31 19:14:12',
#              '2016-08-31 20:25:16', '2016-08-31 21:23:48',
#              '2016-08-31 21:24:12', '2016-08-31 21:25:18',
#              '2016-08-31 21:37:39', '2016-08-31 21:41:56'],
#             dtype='period[S]', length=945, freq='S')
# 
# Process finished with exit code 0


Timestamp类
在多数涉及时间相关的数据处理,统计分析的过程中,需要提取时间中的年份,月份等数据。使用对应的Timestamp类属性就能够实现这一目的。
结合Python列表推导式,可以实现对DataFrame某一列时间信息数据的提取。
Python数据分析之pandas统计分析基础4_第3张图片

import pandas as pd  # 引入pandas模块

data = pd.read_csv('../data/meal_order_info.csv', encoding='gbk')  # 读取csv数据
data['lock_time'] = pd.to_datetime(data['lock_time'])  # 时间相关的字符串转换为Timestamp
a = data.loc[0, 'lock_time']
print('第0行lock_time列的数据为:', a)
print('该数据的年份是' + str(a.year) + '年')
print('该数据是一年中的第' + str(a.dayofyear) + '天')
print('该数据是一周中的', a.weekday_name)
# D:\Anaconda3\python.exe E:/Python数据分析/code/test.py
# E:/Python数据分析/code/test.py:9: FutureWarning: `weekday_name` is deprecated and will be removed in a future version. Use `day_name` instead
# 第0行lock_time列的数据为: 2016-08-01 11:11:46
#   print('该数据是一周中的', a.weekday_name)
# 该数据的年份是2016年
# 该数据是一年中的第214天
# 该数据是一周中的 Monday
# 
# Process finished with exit code 0

Timedelta类
Timedelta是时间相关的类中的一个异类,不仅能够使用正数,还能够使用负数表示单位时间,例如1秒,2分钟,3小时等。使用Timedelta类,配合常规的时间相关类能够轻松实现时间的算术运算。目前Timedelta函数中时间周期中没有年和月。所有周期名称,对应单位及其说明如下表所示:
Python数据分析之pandas统计分析基础4_第4张图片
使用Timedelta ,可以很轻松地实现在某个时间上加减一段时间 。
除了使用Timedelta实现时间的平移外,还能够直接对两个时间序列进行相减,从而得出一个Timedelta。

import pandas as pd  # 引入pandas模块

data = pd.read_csv('../data/meal_order_info.csv', encoding='gbk')  # 读取csv数据
data['lock_time'] = pd.to_datetime(data['lock_time'])  # 时间相关的字符串转换为Timestamp
print(pd.Timedelta.min)  # 负值的极限
b = data['lock_time'] + pd.Timedelta(days=1, seconds=1)  # 时间行 加1天1秒
print(b)
c = data['lock_time'] - pd.to_datetime('2019-5-20 17:55:00')  # 时间行-2019-5-20 17:55:00
print(c)

END

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