Pandas时间序列进阶(日期范围,频率,移位,时区处理)
日期范围
生成日期范围: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时间序列进阶(日期范围,频率,移位,时区处理)相关推荐
- python时间序列进行线性插值_Python pandas时间序列插值日期时间数据
这似乎有效.可能有点清理代码.但是你得到了它的要点 from datetime import datetime import pandas as pd import time #Create data ...
- python pandas 日期_python+pandas+时间、日期以及时间序列处理方法
python+pandas+时间.日期以及时间序列处理方法 先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time ...
- python pandas 日期格式_python+pandas+时间、日期以及时间序列处理方法
先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...
- python处理时间的标准函数库_python+pandas+时间、日期以及时间序列处理方法
先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...
- Pandas 时间序列 - 纵览与时间戳
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一身报国有万死,双鬓向人无再青. ...
- Pandas 时间序列 - DateOffset 对象
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 国亡身殒今何有,只留离骚在世间. ...
- Pandas 时间序列 - 实例方法与重采样
呆鸟云:"数据分析就像是夜里行军,业务是灯塔,是地图,没灯塔你不知道方向,没地图你不知道该怎么走.技术是你的交通工具,你用11路,还是骑自行车,还是开跑车,交通工具越好,你实现目标的速度越快 ...
- Pandas时间序列数据处理和datetime模块详细教程
时间序列分析中,常常需要处理时间相关数据,故参考<Python for Data Analysis>总结了Python和Pandas常用的时间序列数据处理的相关操作,并在 Python3. ...
- 时间序列 | pandas时间序列基础
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.在多个时间点观察或测量到的任何事物都可以形成一段时间序列.很多时间序列 ...
最新文章
- pythonwhile列表_Python编程:while循环处理列表和字典
- linux测试nvme性能,使用Python测试NVMe吞吐量
- linux——管理系统设备之LVM的管理
- canvas 绘制直线 并选中_在画布中使用路径-Canvas的基本操作
- ICMP报文类型和代码
- django:访问本地静态文件的配置
- 推荐系统中所需的概率论与数理统计知识
- HDU 2825 Wireless Password(AC自动机 + 状压DP)题解
- 计算机更新过后cad,CAD2022更新了什么?具有哪些新功能?
- 易语言斗鱼弹幕助手源码
- CH552 USB HID键盘
- 德勤,普华永道,安永,毕马威这四大会计师事务所,有什么区别
- 使用shopnc发送qq邮件遇到的坑
- SpringBoot引入第三方SDK以及打包
- 易语言 网页_取文本_reg的源码
- 坚持是一种态度,公众号粉丝突破 1300 啦
- 用windows搭建ntp时间服务器(从上级获取时间,并为客户机提供时间)
- 百度2015校园招聘笔试题
- 特殊数字符号整理 - 圆圈数字
- 物料编码的方法与技术
热门文章
- 非全日制计算机专业值得读吗,全日制、非全日制哪个更好?19计算机考研扫盲贴!...
- 小米实习面试总结(1)
- Unity可视化编程插件bolt1.4.15 (一)bolt下载与安装
- ROS移植机器人小车:问题集(2)
- 在每天一个故事中......
- 【转】Tomato-shibby无线中继(无线级联)
- mapbox-gl开发教程(十):创建marker
- 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
- [python] 使用正则表达式验证email地址是否有效
- java判断是否是数组_Java判断对象类型是否为数组