python pandas时序处理相关功能详解

创建时间序列

函数pd.date_range()

根据指定的范围,生成时间序列DatetimeIndex,每隔元素的类型为Timestamp。该函数应用较多。

ts = pd.date_range('2017-09-01', periods=10, freq='d', normalize=False)

ts

输出为:

DatetimeIndex(['2017-09-01', '2017-09-02', '2017-09-03', '2017-09-04',

'2017-09-05', '2017-09-06', '2017-09-07', '2017-09-08',

'2017-09-09', '2017-09-10'],

dtype='datetime64[ns]', freq='D'

主要的入参解析:

  • start: 开始时刻,可以是字符串或者datetime类型的值。默认None。
  • end: 结束时刻,可以是字符串或者datetime类型的值,如果指定了长度,即periods,则可不设置。默认None。
  • periods: 时序的长度,整型类型。如果有end,可不设置。默认None。
  • freq: 时序生成的频率,即每隔多少时刻生成一个时序点。字符串类型或者DateOffset类型。默认'D',即天粒度,见上述代码输出。
  • tz: 时区,字符串类型。默认None。
  • normalize: bool类型,没用过,不知道干啥的。
  • name: 设置时序的名称,字符串类型,默认None。
  • closed: 是否包含两边的值。默认None,即两边都保留。

其中,freq的取值可以为如下的符号表示间隔,可以结合符号和数字,如'3d',表示每隔三天记录一个时间点。大小写都可以。

B business day frequency

C custom business day frequency (experimental)

D calendar day frequency

W weekly frequency

M month end frequency

SM semi-month end frequency (15th and end of month)

BM business month end frequency

CBM custom business month end frequency

MS month start frequency

SMS semi-month start frequency (1st and 15th)

BMS business month start frequency

CBMS custom business month start frequency

Q quarter end frequency

BQ business quarter endfrequency

QS quarter start frequency

BQS business quarter start frequency

A year end frequency

BA business year end frequency

AS year start frequency

BAS business year start frequency

BH business hour frequency

H hourly frequency

T, min minutely frequency

S secondly frequency

L, ms milliseconds

U, us microseconds

N nanoseconds

字符串转换为时间戳

pd.to_datetime() 函数可以将表示时间的字符串转换位TimeStamp。

pd.to_datetime('2017-09-01')

输出为:

Timestamp('2017-09-01 00:00:00')

常用的参数:

format: 用来设置字符串的格式,默认如上所示。

时间戳的加减

有时候需要将时间进行增减,可以使用类型:DateOffset。

pd.to_datetime('2017-09-01') + pd.DateOffset(days=10)

输出为:

Timestamp('2017-09-11 00:00:00')

DateOffset常用的参数:

  • months,设置月。
  • days,设置天。
  • years,设置年。
  • hours,设置小时。
  • minutes,设置分钟。
  • seconds,设置秒。

以上可以同时设置,组合使用。

pd.to_datetime('2017-09-01') + pd.DateOffset(seconds=10, days = 10)

输出为:

Timestamp('2017-09-11 00:00:10')

以上是 python pandas时序处理相关功能详解 的全部内容, 来源链接: utcz.com/z/346228.html

回到顶部