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 相关文章推荐
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
django模板语法学习之include示例详解
Dec 17 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
python自动发送邮件脚本
Jun 20 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
Python实现自动访问网页的例子
Feb 21 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
opencv检测动态物体的实现
Jul 21 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
BBS(php & mysql)完整版(六)
2006/10/09 PHP
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
PHP 中关于ord($str)>0x80的详细说明
2012/09/23 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
Python set集合类型操作总结
2014/11/07 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python与C互相调用的方法详解
2017/07/14 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
新大陆软件面试题
2016/11/24 面试题
数学专业毕业生自荐信
2013/11/10 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android
关于Redis的主从复制及哨兵问题
2022/06/16 Redis