Pandas(四):datetime

点击跳转
《Pandas系列目录》



tBdDUA.png

1. Timestamp

  • 时间类中最基础的一种,也是最常用的。多数情况下,时间相关的字符串都会转换成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.854775807
    
  • Timestamp类常用属性

    • 在多数涉及时间相关的数据处理、统计分析的过程中,需要提取时间中的年份、月份等数据,使用对应的Timestamp类属性可以实现这一目的
    • 结合Python列表推导式,可以实现对DataFrame某一列时间信息数据的提取

    image

    # 转换为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
    

2. DatetimeIndex与PeriodIndex

  • 除了将数据原始DataFrame中直接转换为Timestamp以外,还可以将数据单独提取出来转换为DatetimeIndex或PeriodIndex

  • DatetimeIndex:用来指代一系列时间点的数据结构

  • PeriodIndex:用来指代一系列时间段的数据结构

image

  • 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:秒
    • 两个函数可以用来转换数据,还可以用来创建时间序列数据,参数非常相似

3. 加减时间数据

  • Timedelta类

    • Timedelta是时间相关的类中的一个异类,不仅能够使用正数,还能够使用负数表示单位时间,例如1秒,2分钟,3小时等
    • 使用Timedelta类,配合常规的时间相关类能够轻松实现时间的算术运算
    • 目前Timedelta函数中时间周期没有年和月

    image

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())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值