日期范围

生成日期范围:pd.date_range()方法用于根据特定频率生成指定长度的DatetimeIndex

pd.date_range(start=None,end=None,periods=None,freq=None,tz=None,normalize=False,                   #时间标准化为0name=None,                         #生成的DatetimeIndex的名称closed=None,                       #使区间相对于给定的频率闭合方式**kwargs,
)

频率和日期偏置

偏置

from pandas.tseries.offsets import Hour,Minute
hour = Hour()
hour
<Hour>hour_4 = Hour(4)
hour_4
<4 * Hours>Hour(2) + Minute(30)
<150 * Minutes>

频率
频率表


pd.date_range(‘2018-3-3’,periods=20,freq=‘2h30min’)
DatetimeIndex([‘2018-03-03 00:00:00’, ‘2018-03-03 02:30:00’,
‘2018-03-03 05:00:00’, ‘2018-03-03 07:30:00’,
‘2018-03-03 10:00:00’, ‘2018-03-03 12:30:00’,
‘2018-03-03 15:00:00’, ‘2018-03-03 17:30:00’,
‘2018-03-03 20:00:00’, ‘2018-03-03 22:30:00’,
‘2018-03-04 01:00:00’, ‘2018-03-04 03:30:00’,
‘2018-03-04 06:00:00’, ‘2018-03-04 08:30:00’,
‘2018-03-04 11:00:00’, ‘2018-03-04 13:30:00’,
‘2018-03-04 16:00:00’, ‘2018-03-04 18:30:00’,
‘2018-03-04 21:00:00’, ‘2018-03-04 23:30:00’],
dtype=‘datetime64[ns]’, freq=‘150T’)
月中某星期的日期:

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

移位(向前和向后)日期

shift方法移位
ts.shift(periods=1, freq=None, axis=0, fill_value=None)

ts = ts.head(10)
ts.shift(2)             #简单移位,不设置频率时,不改变索引,只改变索引所对应的值
2016-01-01         NaN
2016-01-02         NaN
2016-01-03    1.270813
2016-01-04    0.172139
2016-01-05   -0.900744
2016-01-06   -0.558749
2016-01-07    0.485409
2016-01-08   -0.256562
2016-01-09   -1.623190
2016-01-10   -0.487096
Freq: D, dtype: float64ts.shift(2,freq='90T')          #传递频率移位,改变索引,但不改变值序列    相当于时间序列向前移动2*90T = 180T
2016-01-01 03:00:00    1.270813
2016-01-02 03:00:00    0.172139
2016-01-03 03:00:00   -0.900744
2016-01-04 03:00:00   -0.558749
2016-01-05 03:00:00    0.485409
2016-01-06 03:00:00   -0.256562
2016-01-07 03:00:00   -1.623190
2016-01-08 03:00:00   -0.487096
2016-01-09 03:00:00    0.312584
2016-01-10 03:00:00    0.755862
Freq: D, dtype: float64ts.shift(2,'M')               相当于时间序列向前移动2*M 2M 取月底日期
2016-02-29    1.270813
2016-02-29    0.172139
2016-02-29   -0.900744
2016-02-29   -0.558749
2016-02-29    0.485409
2016-02-29   -0.256562
2016-02-29   -1.623190
2016-02-29   -0.487096
2016-02-29    0.312584
2016-02-29    0.755862
Freq: D, dtype: float64

使用偏置进行移位日期
from pandas.tseries.offsets import MonthEnd,Day
ts.index = ts.index + 3*Day()
ts
2016-01-04 1.270813
2016-01-05 0.172139
2016-01-06 -0.900744
2016-01-07 -0.558749
2016-01-08 0.485409
2016-01-09 -0.256562
2016-01-10 -1.623190
2016-01-11 -0.487096
2016-01-12 0.312584
2016-01-13 0.755862
Freq: D, dtype: float64

时区处理

处理时区通常是时间序列操作中最不愉快的部分,因此很多时间序列用户选择世界协调时间或UTC,他是格林尼治时间的后继者, 也是目前的标准,时区通常被表示是为UTC的偏置,例如,在夏令时期间,纽约比UTC时间晚4个小时,其余时间晚5个小时。
python中时区信息来源于第三方库pytz

import pytz
pytz.common_timezones[-5:]
['US/Eastern', 'US/Hawaii', 'US/Mountain', 'US/Pacific', 'UTC']

要获得pytz的时区对象

tz = pytz.timezone('America/New_York')
<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>

时区转换

tstz = ts.tz_localize('UTC')
tstz
2016-01-04 00:00:00+00:00    1.270813
2016-01-05 00:00:00+00:00    0.172139
2016-01-06 00:00:00+00:00   -0.900744
2016-01-07 00:00:00+00:00   -0.558749
2016-01-08 00:00:00+00:00    0.485409
2016-01-09 00:00:00+00:00   -0.256562
2016-01-10 00:00:00+00:00   -1.623190
2016-01-11 00:00:00+00:00   -0.487096
2016-01-12 00:00:00+00:00    0.312584
2016-01-13 00:00:00+00:00    0.755862
Freq: D, dtype: float64newtz = tstz.tz_convert('Europe/Berlin')
newtz
2016-01-04 01:00:00+01:00    1.270813
2016-01-05 01:00:00+01:00    0.172139
2016-01-06 01:00:00+01:00   -0.900744
2016-01-07 01:00:00+01:00   -0.558749
2016-01-08 01:00:00+01:00    0.485409
2016-01-09 01:00:00+01:00   -0.256562
2016-01-10 01:00:00+01:00   -1.623190
2016-01-11 01:00:00+01:00   -0.487096
2016-01-12 01:00:00+01:00    0.312584
2016-01-13 01:00:00+01:00    0.755862
Freq: D, dtype: float64

创建时间戳

stamp = pd.Timestamp('2011-03-12 04:00')

时间戳数值是不变的,无论时区是什么。

不同时区间的操作

如果两个时区的不同的时间序列需要联合,那么结果将是‘UTC’时间的,由于时间戳是以‘UTC’格式存储的

ts1 = ts[:7].tz_localize('Europe/London')
ts2 = ts1[2:].tz_convert('Europe/Moscow')
result = ts1 + ts2
result
2016-01-04 00:00:00+00:00         NaN
2016-01-05 00:00:00+00:00         NaN
2016-01-06 00:00:00+00:00   -1.801488
2016-01-07 00:00:00+00:00   -1.117498
2016-01-08 00:00:00+00:00    0.970818
2016-01-09 00:00:00+00:00   -0.513125
2016-01-10 00:00:00+00:00   -3.246380
Freq: D, dtype: float64result.index
DatetimeIndex(['2016-01-04 00:00:00+00:00', '2016-01-05 00:00:00+00:00','2016-01-06 00:00:00+00:00', '2016-01-07 00:00:00+00:00','2016-01-08 00:00:00+00:00', '2016-01-09 00:00:00+00:00','2016-01-10 00:00:00+00:00'],dtype='datetime64[ns, UTC]', freq='D')               #UTC时间格式​

Pandas时间序列进阶(日期范围,频率,移位,时区处理)相关推荐

  1. python时间序列进行线性插值_Python pandas时间序列插值日期时间数据

    这似乎有效.可能有点清理代码.但是你得到了它的要点 from datetime import datetime import pandas as pd import time #Create data ...

  2. python pandas 日期_python+pandas+时间、日期以及时间序列处理方法

    python+pandas+时间.日期以及时间序列处理方法 先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time ...

  3. python pandas 日期格式_python+pandas+时间、日期以及时间序列处理方法

    先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...

  4. python处理时间的标准函数库_python+pandas+时间、日期以及时间序列处理方法

    先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...

  5. Pandas 时间序列 - 纵览与时间戳

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一身报国有万死,双鬓向人无再青. ...

  6. Pandas 时间序列 - DateOffset 对象

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 国亡身殒今何有,只留离骚在世间. ...

  7. Pandas 时间序列 - 实例方法与重采样

    呆鸟云:"数据分析就像是夜里行军,业务是灯塔,是地图,没灯塔你不知道方向,没地图你不知道该怎么走.技术是你的交通工具,你用11路,还是骑自行车,还是开跑车,交通工具越好,你实现目标的速度越快 ...

  8. Pandas时间序列数据处理和datetime模块详细教程

    时间序列分析中,常常需要处理时间相关数据,故参考<Python for Data Analysis>总结了Python和Pandas常用的时间序列数据处理的相关操作,并在 Python3. ...

  9. 时间序列 | pandas时间序列基础

    时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.在多个时间点观察或测量到的任何事物都可以形成一段时间序列.很多时间序列 ...

最新文章

  1. pythonwhile列表_Python编程:while循环处理列表和字典
  2. linux测试nvme性能,使用Python测试NVMe吞吐量
  3. linux——管理系统设备之LVM的管理
  4. canvas 绘制直线 并选中_在画布中使用路径-Canvas的基本操作
  5. ICMP报文类型和代码
  6. django:访问本地静态文件的配置
  7. 推荐系统中所需的概率论与数理统计知识
  8. HDU 2825 Wireless Password(AC自动机 + 状压DP)题解
  9. 计算机更新过后cad,CAD2022更新了什么?具有哪些新功能?
  10. 易语言斗鱼弹幕助手源码
  11. CH552 USB HID键盘
  12. 德勤,普华永道,安永,毕马威这四大会计师事务所,有什么区别
  13. 使用shopnc发送qq邮件遇到的坑
  14. SpringBoot引入第三方SDK以及打包
  15. 易语言 网页_取文本_reg的源码
  16. 坚持是一种态度,公众号粉丝突破 1300 啦
  17. 用windows搭建ntp时间服务器(从上级获取时间,并为客户机提供时间)
  18. 百度2015校园招聘笔试题
  19. 特殊数字符号整理 - 圆圈数字
  20. 物料编码的方法与技术

热门文章

  1. 非全日制计算机专业值得读吗,全日制、非全日制哪个更好?19计算机考研扫盲贴!...
  2. 小米实习面试总结(1)
  3. Unity可视化编程插件bolt1.4.15 (一)bolt下载与安装
  4. ROS移植机器人小车:问题集(2)
  5. 在每天一个故事中......
  6. 【转】Tomato-shibby无线中继(无线级联)
  7. mapbox-gl开发教程(十):创建marker
  8. 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
  9. [python] 使用正则表达式验证email地址是否有效
  10. java判断是否是数组_Java判断对象类型是否为数组