首页Python【Python数据分析】5...

【Python数据分析】56.时间序列——频率和日期偏置


本系列文章配套代码获取有以下三种途径:

  • 可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):

https://returu.github.io/Python_Data_Analysis/lab/index.html
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis

根据《Python for Data Analysis 3rd Edition》翻译整理

—————————————————–

pandas中的频率由基础频率和倍数组成。

基础频率通常用一个字符串别名来表示,比如 "M "代表每月,"H "代表每小时。对于每个基础频率,都有一个对象用于定义日期偏置。例如,每小时的频率可以用 Hour 类来表示。

1>>> from pandas.tseries.offsets import Hour , Minute
2
3>>> hour = Hour()
4>>> hour
5<Hour>

可以通过传递整数来定义偏移量的倍数:

1>>> hour = Hour(5)
2>>> hour
3<5 * Hours>

多个偏置可以通过加法联合:

1>>> Hour(5) + Minute(60)
2<6 * Hours>

在大多数应用中,不需要显式地创建这些对象,而是使用字符串别名,例如“H”“5H”。在基础频率前加一个整数可以生成倍数:

1>>> pd.date_range("2022-12-1" , "2022-12-2 12:12" , freq="5H")
2DatetimeIndex(['2022-12-01 00:00:00''2022-12-01 05:00:00',
3               '2022-12-01 10:00:00''2022-12-01 15:00:00',
4               '2022-12-01 20:00:00''2022-12-02 01:00:00',
5               '2022-12-02 06:00:00''2022-12-02 11:00:00'],
6              dtype='datetime64[ns]', freq='5H')

类似地,也可以传递频率字符串,例如“1h30min”将会被有效地解析为同等的表达式:

 1>>> pd.date_range("2022-12-1" , "2022-12-1 23:00" , freq="1h30min")
2DatetimeIndex(['2022-12-01 00:00:00''2022-12-01 01:30:00',
3               '2022-12-01 03:00:00''2022-12-01 04:30:00',
4               '2022-12-01 06:00:00''2022-12-01 07:30:00',
5               '2022-12-01 09:00:00''2022-12-01 10:30:00',
6               '2022-12-01 12:00:00''2022-12-01 13:30:00',
7               '2022-12-01 15:00:00''2022-12-01 16:30:00',
8               '2022-12-01 18:00:00''2022-12-01 19:30:00',
9               '2022-12-01 21:00:00''2022-12-01 22:30:00'],
10              dtype='datetime64[ns]', freq='90T')

一些频率描述的时间并不是均匀分隔的时间。例如,“M”(日历月末)和“BM”(最后一个工作日)取决于一个月中的天数,在后一种情况下,取决于该月是否在周末结束。我们将这些称为锚定偏移量(anchored offsets)。

月中某星期(“week of month”)是一个有用的频率类,以 WOM 开头。

例如,获取每个月的第三个星期五,可以传入"WOM-3FRI"

1>>> pd.date_range("2022-1-1" , "2022-12-1" , freq="WOM-3FRI")
2DatetimeIndex(['2022-01-21''2022-02-18''2022-03-18''2022-04-15',
3               '2022-05-20''2022-06-17''2022-07-15''2022-08-19',
4               '2022-09-16''2022-10-21''2022-11-18'],
5              dtype='datetime64[ns]', freq='WOM-3FRI')


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments