python时间序列按频率生成日期的方法


Posted in Python onMay 14, 2019

有时候我们的数据是按某个频率收集的,比如每日、每月、每15分钟,那么我们怎么产生对应频率的索引呢?pandas中的date_range可用于生成指定长度的DatetimeIndex。

我们先看一下怎么生成日期范围:pd.date_range(startdate,enddate)

1.生成指定开始日期和结束日期的时间范围:

In:import pandas as pd
	index = pd.date_range('4/1/2019','5/1/2019')
	print(index)
Out:
DatetimeIndex(['2019-04-01', '2019-04-02', '2019-04-03', '2019-04-04',
        '2019-04-05', '2019-04-06', '2019-04-07', '2019-04-08',
        '2019-04-09', '2019-04-10', '2019-04-11', '2019-04-12',
        '2019-04-13', '2019-04-14', '2019-04-15', '2019-04-16',
        '2019-04-17', '2019-04-18', '2019-04-19', '2019-04-20',
        '2019-04-21', '2019-04-22', '2019-04-23', '2019-04-24',
        '2019-04-25', '2019-04-26', '2019-04-27', '2019-04-28',
        '2019-04-29', '2019-04-30', '2019-05-01'],
       dtype='datetime64[ns]', freq='D')

也可以只指定开始日期或结束日期,但这时必须要输入一个时间长度,并且指定输入的是开始时间还是结束时间,如果不指定默认是开始时间。

date_range(startdate/enddate,periods)

In:print(pd.date_range(start = '4/1/2019',periods = 10))
Out:DatetimeIndex(['2019-04-01', '2019-04-02', '2019-04-03', '2019-04-04',
        '2019-04-05', '2019-04-06', '2019-04-07', '2019-04-08',
        '2019-04-09', '2019-04-10'],
       dtype='datetime64[ns]', freq='D')
In:print(pd.date_range(start = '5/1/2019',periods = 10))
Out:DatetimeIndex(['2019-05-01', '2019-05-02', '2019-05-03', '2019-05-04',
          '2019-05-05', '2019-05-06', '2019-05-07', '2019-05-08',
          '2019-05-09', '2019-05-10'],
         dtype='datetime64[ns]', freq='D')

现在我们已经知道怎么生成日期范围了,但是上面我们生成的日期的时间间隔都是天,接下来告诉大家怎么生成其他时间频率的日期范围。

要生成按某个频率计算的日期范围,只需要在date_range后加上freq就可以了。比如,生成每小时间隔的时间:

In:print(pd.date_range(start = '5/1/2019',periods = 10,freq = 'h'))
Out:DatetimeIndex(['2019-05-01 00:00:00', '2019-05-01 01:00:00',
        '2019-05-01 02:00:00', '2019-05-01 03:00:00',
        '2019-05-01 04:00:00', '2019-05-01 05:00:00',
        '2019-05-01 06:00:00', '2019-05-01 07:00:00',
        '2019-05-01 08:00:00', '2019-05-01 09:00:00'],
       dtype='datetime64[ns]', freq='H')

生成时间间隔为3个小时的时间:

In:print(pd.date_range(start = '5/1/2019',periods = 10,freq = '3h'))
Out:DatetimeIndex(['2019-05-01 00:00:00', '2019-05-01 01:00:00',
        '2019-05-01 02:00:00', '2019-05-01 03:00:00',
        '2019-05-01 04:00:00', '2019-05-01 05:00:00',
        '2019-05-01 06:00:00', '2019-05-01 07:00:00',
        '2019-05-01 08:00:00', '2019-05-01 09:00:00'],
       dtype='datetime64[ns]', freq='H')

生成时间间隔为1小时30分的时间:

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

python还可以生成其他不规则频率的时间,比如每月的第一个工作日,每月的第一个日历日等

生成每月的第一个工作日:

In:print(pd.date_range(start = '1/1/2019',periods = 12,freq = 'BMS'))
Out:DatetimeIndex(['2019-01-01', '2019-02-01', '2019-03-01', '2019-04-01',
        '2019-05-01', '2019-06-03', '2019-07-01', '2019-08-01',
        '2019-09-02', '2019-10-01', '2019-11-01', '2019-12-02'],
       dtype='datetime64[ns]', freq='BMS')

生成每月的第一个日历日:

In:print(pd.date_range(start = '1/1/2019',periods = 12,freq = 'MS'))
Out:DatetimeIndex(['2019-01-01', '2019-02-01', '2019-03-01', '2019-04-01',
        '2019-05-01', '2019-06-01', '2019-07-01', '2019-08-01',
        '2019-09-01', '2019-10-01', '2019-11-01', '2019-12-01'],
       dtype='datetime64[ns]', freq='MS')

有一种很实用的频率类,为“WOM”,即每月的几个星期几。比如每月的第三个星期五。如果我们每月的第三个星期五发工资,这样就可以很方便的知道今年每个月的工资日了。

In:print(pd.date_range(start = '1/1/2019',periods = 12,freq = 'WOM-3FRI'))
Out:DatetimeIndex(['2019-01-18', '2019-02-15', '2019-03-15', '2019-04-19',
        '2019-05-17', '2019-06-21', '2019-07-19', '2019-08-16',
        '2019-09-20', '2019-10-18', '2019-11-15', '2019-12-20'],
       dtype='datetime64[ns]', freq='WOM-3FRI')

下面是python可使用的时间序列的基础频率表:

 

别名 偏移量类型 说明
D Day 每日历日
B BusinessDay 每工作日
H Hour 每小时
T或min Minute 每分钟
S Second 每秒
L或ms Milli 每毫秒
U Micro 每微秒
M MonthEnd 每月最后一个日历日
BM BusinessMonthEnd 每月最后一个工作日
MS MonthBegin 每月第一个日历日
BMS BusinessMonthBegin 每月第一个工作日
W-MON、W-TUE Week 每周的星期几
WOM-1MON、WOM-2MON WeekofMonth 每月第几周的星期几
Q-JAN、Q-FEB QuarterEnd 每个季度对应的该月份的最后一个日历日
BQ-JAN、BQ-FEB BusinessQuarterEnd 每个季度对应的该月份的最后一个工作日
QS-JAN、QS-FEB QuarterBegin 每个季度对应的该月份的第一个日历日
BQS-JAN、BQS-FEB QuarterBegin 每个季度对应的该月份的第一个工作日
A-JAN、B-FEB YearEnd 每年指定月份的最后一个日历日
BA-JAN、BA-FEB BusinessYearEnd 每年指定月份的最后一个工作日
AS-JAN、AS-FEB YearBegin 每年指定月份的第一个日历日
BAS-JAN、BAS-FEB BusinessYearBegin 每年指定月份的第一个工作日

以上所述是小编给大家介绍的python时间序列按频率生成日期的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
python函数装饰器用法实例详解
Jun 04 Python
深入理解python中的闭包和装饰器
Jun 12 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
pycham查看程序执行的时间方法
Nov 29 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
python的依赖管理的实现
May 14 #Python
详解Python3序列赋值、序列解包
May 14 #Python
Python实战之制作天气查询软件
May 14 #Python
python中时间模块的基本使用教程
May 14 #Python
使用Python正则表达式操作文本数据的方法
May 14 #Python
Django如何防止定时任务并发浅析
May 14 #Python
python3 pygame实现接小球游戏
May 14 #Python
You might like
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php下Memcached入门实例解析
2015/01/05 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
Expandable "Detail" Table Rows
2007/08/29 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
Angular6封装http请求的步骤详解
2018/08/13 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
python opencv之SURF算法示例
2018/02/24 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
django用户登录验证的完整示例代码
2019/07/21 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
phpquery中文手册
2021/03/18 PHP
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
海外淘书首选:AbeBooks
2017/07/31 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
出纳员岗位责任制
2014/02/11 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
幼儿园六一活动总结
2014/08/27 职场文书