Python Pandas 时间戳 timestamp 时间周期 period 时间增量 timedelta



原始数据展示。数据下载链接 https://download.csdn.net/download/qq_35240689/86723500?spm=1001.2014.3001.5503



一、时间戳 timestamp 。

Timestamp和DatetimeIndex是最基本的对象。虽然可以直接调用这些类对象,但更常见的是使用pd.to_datetime()函数,它可以解析各种格式。将单个日期传递给pd.to_datetime()就可以生成Timestamp;默认情况下传递一系列日期会产生一个DatetimeIndex

1. 生成时间戳。

pd.Timestamp 能识别部分格式。

pd.Timestamp("2020/12/06")

pd.Timestamp(year=2020,month=12,day=6,hour=14,minute=19,second=52) 

pd.to_datetime 提供format 参数 可识别几乎所有的格式

在这里插入图片描述

date = pd.Timestamp(df['date'][0])
date = pd.to_datetime(df['date'][0])

date = pd.to_datetime(df['date'][0], format='%Y%m%d')

date.year
date.month
date.day
date.hour
date.minute
date.second
date.week

2.生成时间序列。

在这里插入图片描述

pd.date_range('2020-01-01', '2020-02-08')

pd.date_range(df['date'][0], df['date'].iloc[-1])

pd.date_range(df.index[0], df.index[-1], freq='H')

pd.date_range(df.index[0], df.index[-1], freq='3H')

time = pd.date_range(df.index[0], df.index[-1], periods=24)

df.index = pd.date_range('2020-01-10', freq='D', periods=len(df.index))

3.时间的索引

使用 parse_dates 的时候需要用 converters 将所有的 hour 转换成2位数(1变成01)

df = pd.read_csv(
    './data/C3.2 常规数据格式读写/beijing.csv', 
    parse_dates={'time': ['date', 'hour']}, 
    converters={'hour': lambda x: x.zfill(2)}
    )
df.head()

df.index = df.time
# 可以直接通过日期 切片数据
df['2020-01-01 20:00': '2020-01-01 22:00']



二、时间周期。

1. 生成时间周期。

在这里插入图片描述

pd.Period("2020/12/06")

pd.Period("2020/12/06", 'H')

pd.Period(freq='S',year=2015, month=3,day=19, minute=43)



time = pd.Period("2020/12/06")
# 频率计算,加减单位和Period定义的时候一样
time -3
time + 11

Period 常用属性

time.freqstr
time.day
time.month
time.year

2. 生成时间序列。

在这里插入图片描述

pd.period_range('2008/8/1', '2010/1/1', freq='M')
pd.period_range(start='2010-01', freq='3M', periods=8)

dates = pd.period_range(start='2010-01', freq='3M', periods=8)
# 一次减3个月
dates + 1
# 一次减1个月
dates.astype('period[M]') - 1



三、时间增量

Timedlta kwargs 可选参数没有年。
在这里插入图片描述
Period 和 Timedelta 频率必须一致,才能进行

pd.Period("2020/12/06") + pd.Timedelta(1, unit='D')
pd.Period("2020/12/06") + pd.Timedelta(days=2)

Timestamp 和 Timedelta 任意频率都可相加。(年除外)

pd.Timestamp("2020/12/06") + pd.Timedelta(hours=2)

DateOffset 可实现年份变化

pd.Timestamp("2020/8/06") + pd.DateOffset(years=2, months=1, days=1)
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值