当前位置:   article > 正文

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

pandas timestamp


原始数据展示。数据下载链接 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) 
  • 1
  • 2
  • 3

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10



二、时间周期。

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Period 常用属性

time.freqstr
time.day
time.month
time.year
  • 1
  • 2
  • 3
  • 4

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8



三、时间增量

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

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

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

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

DateOffset 可实现年份变化

pd.Timestamp("2020/8/06") + pd.DateOffset(years=2, months=1, days=1)
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/73001
推荐阅读
相关标签
  

闽ICP备14008679号