有时候我们的数据是按某个频率收集的,比如每日、每月、每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')

1

2

3

4

5

6

7

8

9

10

11

12

13

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

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')

1

2

3

4

5

6

7

8

9

10

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

要生成按某个频率计算的日期范围,只需要在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')

1

2

3

4

5

6

7

生成时间间隔为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

2

3

4

5

6

7

生成时间间隔为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')

1

2

3

4

5

6

7

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')

1

2

3

4

5

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

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')

1

2

3

4

5

有一种很实用的频率类,为“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')

1

2

3

4

5

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

别名偏移量类型说明

DDay每日历日

BBusinessDay每工作日

HHour每小时

T或minMinute每分钟

SSecond每秒

L或msMilli每毫秒

UMicro每微秒

MMonthEnd每月最后一个日历日

BMBusinessMonthEnd每月最后一个工作日

MSMonthBegin每月第一个日历日

BMSBusinessMonthBegin每月第一个工作日

W-MON、W-TUEWeek每周的星期几

WOM-1MON、WOM-2MONWeekofMonth每月第几周的星期几

Q-JAN、Q-FEBQuarterEnd每个季度对应的该月份的最后一个日历日

BQ-JAN、BQ-FEBBusinessQuarterEnd每个季度对应的该月份的最后一个工作日

QS-JAN、QS-FEBQuarterBegin每个季度对应的该月份的第一个日历日

BQS-JAN、BQS-FEBQuarterBegin每个季度对应的该月份的第一个工作日

A-JAN、B-FEBYearEnd每年指定月份的最后一个日历日

BA-JAN、BA-FEBBusinessYearEnd每年指定月份的最后一个工作日

AS-JAN、AS-FEBYearBegin每年指定月份的第一个日历日

BAS-JAN、BAS-FEBBusinessYearBegin每年指定月份的第一个工作日

---------------------

python创建时间序列_python时间序列按频率生成日期相关推荐

  1. python用电预测_Python时间序列预测实战(电力负荷预测)

    这是我之前工作做的一个项目 import os import pandas as pd import numpy path = "E:/工作/负荷预测/历史负荷数据-每天" #文件 ...

  2. python创建列表_python创建与遍历List二维列表的方法

    python 创建List二维列表 lists = [[] for i in range(3)] # 创建的是多行三列的二维列表 for i in range(3): lists[0].append( ...

  3. python 创建子类_python创建子类的方法分析

    本文实例讲述了python创建子类的方法.分享给大家供大家参考,具体如下: 如果你的类没有从任何祖先类派生,可以使用object作为父类的名字.经典类的声明唯一不同之处在于其没有从祖先类派生---此时 ...

  4. python创建追加_Python文件的创建与追加

    (转载)https://www.xshell.net/python/python_open.html Posted by 破冰 on 2013-9-17 17:29 Tuesday 一.用Python ...

  5. python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】

    本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np & ...

  6. 如何用python创建文件_python在指定目录创建文件

    Python无法创建文件夹,如何制定创建目录?温柔也好,凶狠也罢.想有一个陌生的自己,给自己一些惊喜. /主目录/桌面/gnssIR_python-master:/usr/local/bin:/usr ...

  7. python创建变量_python创建变量

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 创建: 当python变量'赋值'时,根据值类型创建变量,如:a=1引用: 当参 ...

  8. python创建时间序列_python 时间序列

    将dataframe的列转化为时间序列 #https://www.cnblogs.com/bolgbjg/p/14013300.html #datetime.now()获取现在的时间,now.year ...

  9. python arima模型_Python时间序列处理之ARIMA模型的使用讲解

    ARIMA模型 ARIMA模型的全称是自回归移动平均模型,是用来预测时间序列的一种常用的统计模型,一般记作ARIMA(p,d,q). ARIMA的适应情况 ARIMA模型相对来说比较简单易用.在应用A ...

最新文章

  1. mysql建立数据浏览器_一个简单的MySQL数据浏览器
  2. colease函数 mysql_SqlConnection 概述
  3. html+form+multipartform-data,表单 – 如何处理node.js中的multipart / form-data
  4. dojo中的dojo/on
  5. 基于 Vue 的移动端富文本编辑器 vue-quill-editor 实战
  6. element 怎么把数据写到日历表上_数据集 | 地理空间数据云30m的DEM爬取
  7. 三级python考试难吗_Python自学之路:三级菜单
  8. javascript cookie传统用法
  9. 获取工程的exe文件的所在目录
  10. QQ群排名霸屏:快速上排名方法
  11. 广告投放系统后台html,今日头条广告如何投放?今日头条广告后台操作说明
  12. C语言理论小学案例试讲,C语言试讲演示文稿.ppt
  13. elementUI Tree组件实现双击事件
  14. 单片机c语言程序设计算器,基于单片机的数字计算器的设计
  15. deb ipa pxl
  16. VS code 代码鼠标滑轮缩放
  17. 数据结构-平衡二叉树(AVL树)
  18. Validator框架的使用
  19. intellij HTTP状态 404 - 未找到_了解你的业务状态!使用 Nagios 打造专业的业务状态监控...
  20. 记录一次oracle中count特别慢的解决方案

热门文章

  1. POJ3714 Raid 分治/K-D Tree
  2. HDU 5950 Recursive sequence(矩阵快速幂)
  3. js动态生成按钮,页面用DIV简单布局2
  4. ThinkPHP 3.1.2 控制器的模块和操作
  5. 关于viewpager 里嵌套 listview 同时实现翻页功能的“java.lang.IllegalStateException: The specified child...异常处理...
  6. 推荐几个程序员学习网站
  7. MVC html 控件扩展【转载】
  8. 大数据学习路线2019版(附全套视频教程及网盘下载)
  9. 题解P3711:【仓鼠的数学题】
  10. Java故障定位方法总结