欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pandas时间序列:频率和日期偏移量

程序员文章站 2024-03-14 13:42:40
...
import pandas as pd
import numpy as np

一、介绍

  • pandas中的频率是由一个基础频率(例如“日”、“月”)和一个乘数组成。
  • 基础频率通常以一个字符串别名表示,比如“D”表示日,“M”表示月。
  • 对于每个基础频率,都有一个被称为日期偏移量(date offset)的对象与之对应,比如日期偏移量Hour对应的频率是H。

二、日期偏移量

from pandas.tseries.offsets import Hour,Minute
hour = Hour()
four_hour = Hour(4)
print(hour)
print(four_hour)
<Hour>
<4 * Hours>

三、频率

pd.date_range('1/1/2000','1/3/2000',freq='4h')
DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 04:00:00',
               '2000-01-01 08:00:00', '2000-01-01 12:00:00',
               '2000-01-01 16:00:00', '2000-01-01 20:00:00',
               '2000-01-02 00:00:00', '2000-01-02 04:00:00',
               '2000-01-02 08:00:00', '2000-01-02 12:00:00',
               '2000-01-02 16:00:00', '2000-01-02 20:00:00',
               '2000-01-03 00:00:00'],
              dtype='datetime64[ns]', freq='4H')

四、日期偏移量(频率)的组合

偏移量相加

Hour(2)+Minute(30)
<150 * Minutes>

频率组合

pd.date_range('1/1/2000',periods=10,freq='1h30min')
DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 01:30:00',
               '2000-01-01 03:00:00', '2000-01-01 04:30:00',
               '2000-01-01 06:00:00', '2000-01-01 07:30:00',
               '2000-01-01 09:00:00', '2000-01-01 10:30:00',
               '2000-01-01 12:00:00', '2000-01-01 13:30:00'],
              dtype='datetime64[ns]', freq='90T')

五、常用频率与日期偏移量

频率 日期偏移量 说明
D Day 日历日
B BusinessDay 工作日
H Hour 小时
T或min Minute
S Second
L或ms Milli 毫秒
U Micro 微秒
M MonthEnd 每月最后一个日历日
BM BusinessMonthEnd 每月最后一个工作日
MS MonthBegin 每月第一个日历日
BMS BussinessMonthBegin 每月第一个工作日
W-MON、W-TUE、… Week 指定星期几(MON、TUE、WED、THU、FRI、SAT、SUN)
WOM-1MON、WOM-2MON、… WeekOfMonth 产生每月第一、第二、第三或第四周的星期几。例如WOM-3FRI表示每月第3个星期五
Q-JAN、Q-FEB、… QuarterEnd 以指定月份结束的年度,每季度最后一个月的最后一个日历日
BQ-JAN、BQ-FEB、… BusinessQuarterEnd 以指定月份结束的年度,每季度最后一个月的最后一个工作日
QS-JAN、QS-FEB、… QuarterBegin 以指定月份结束的年度,每季度最后一个月的第一个日历日
BQS-JAN、BQS-FEB、… BusinessQuarterBegin 以指定月份结束的年度,每季度最后一个月的第一个工作日
A-JAN、A-FEB、… YearEnd 每年指定月份的最后一个日历日
BA-JAN、BA-FEB、… BusinessYearEnd 每年指定月份的最后一个工作日
AS-JAN、AS-FEB、… YearBegin 每年指定月份的第一个日历日
BAS-JAN、BAS-FEB、… BusinessYearBegin 每年指定月份的第一个工作日
pd.date_range('1/1/2000','9/1/2000',freq='WOM-3FRI')
DatetimeIndex(['2000-01-21', '2000-02-18', '2000-03-17', '2000-04-21',
               '2000-05-19', '2000-06-16', '2000-07-21', '2000-08-18'],
              dtype='datetime64[ns]', freq='WOM-3FRI')