pandas处理时间序列(3):重采样与频率转换
五、重采样与频率转换
1. resample方法
rng = pd.date_range('1/3/2019',periods=1000,freq='D')
rng






2. 降采样
(1)resample将高频率数据聚合到低频率
举例:已知:‘1分钟’数据,想要通过求和的方式将这些数据聚合到“5分钟”块中

left:[0:5)、[5:10)、[10-15)
right :(0:5]、(5:10]、(10-15]
传入的频率将会以“5分钟”的增量定义面元边界。默认情况下,面元的右边界是包含的,因此00:00到00:05的区间中是包含00:05的。传入colsed='left'会让区间以左边界闭合:



最后,你可以希望对结果索引做一些位移,比如从右边界减去一秒以便更容易明白该时间戳到底表示的是哪个区间。通过loffset设置一个字符串或日期片质量即可实现:

(2)通过groupby进行重采样


3. 上采样与插值
将低频率数据转换到高频率,就不需要聚合了

将其重采样到日频率,默认会引入缺失值

如果你想要用前面的周型值填充“非星期三”。resampling的填充和插值方式跟fillna和reindex的一样。

同时,这里可以只填充指定的日期数(目的是限制前面的观察值的持续使用距离)。

注意,新的日期索引完全没必要和旧的相交:

4. 通过日期进行重采样
(1)降采样

annual_frame = frame.resample('A-DEC',how='mean')
annual_frame

(2)上采样
上采样必须要决定在新频率中各区间的哪段用于放置原来的值,就像asfreq方法那样。convention参数默认为'end',可设置为'start':


由于时期指的是时间区间,所以上采样和降采样的规则就比较严格:
- 在降采样中,目标频率必须是源频率的子时期(subperiod);
- 在上采样中,目标频率必须是源频率的超时期(superperiod)
如果不满足这些条件,就会发生异常。这主要影响的是按季、年、周计算的频率。例如,由Q-MAR定义的时间区间只能升采样为A-MAR、A-JUN、A-SEP、A-DEC等。

5. 时间序列绘图
>>> import pandas as pd
Backend TkAgg is interactive backend. Turning interactive mode on.
>>> import numpy as np
>>> from pandas import DataFrame,Series
>>> close_px_all = pd.read_csv('D:\python\DataAnalysis\data\stock_px.csv',parse_dates=True,index_col=0)
>>> close_px = close_px_all[['AAPL','MSFT','XOM']]
>>> close_px = close_px.resample('B').ffill()
>>> close_px
AAPL MSFT XOM
1990-02-01 7.86 0.51 6.12
1990-02-02 8.00 0.51 6.24
1990-02-05 8.18 0.51 6.25
1990-02-06 8.12 0.51 6.23
1990-02-07 7.77 0.51 6.33 ... ... ... 2011-10-12 402.19 26.96 77.16
2011-10-13 408.43 27.18 76.37
2011-10-14 422.00 27.27 78.11 [5662 rows x 3 columns]
close_px['AAPL'].plot()

切片2009年数据,所欲数据都被绘制在subplot上,并且月份和年度都被格式化到X轴上
close_px.ix['2009'].plot()

苹果公司的股价波动,2011年1月到3月
close_px['AAPL'].ix['01-2011':'03-2011'].plot()

appl_q = close_px['AAPL'].resample('Q-DEC').ffill()
appl_q.ix['2009':].plot()

pandas处理时间序列(3):重采样与频率转换的更多相关文章
- pandas处理时间序列(2):DatetimeIndex、索引和选择、含有重复索引的时间序列、日期范围与频率和移位、时间区间和区间算术
一.时间序列基础 1. 时间戳索引DatetimeIndex 生成20个DatetimeIndex from datetime import datetime dates = pd.date_rang ...
- 03. Pandas 2| 时间序列
1.时间模块:datetime datetime模块,主要掌握:datetime.date(), datetime.datetime(), datetime.timedelta() 日期解析方法:pa ...
- Pandas 基础(11) - 用 melt 做格式转换
melt 也可以用来做数据格式转换, 请看下图, 我们可以用 melt 把左表转成右表的格式: 首先引入文件(已上传): df = pd.read_csv('/Users/rachel/Sites/p ...
- pandas之时间序列(data_range)、重采样(resample)、重组时间序列(PeriodIndex)
1.data_range生成时间范围 a) pd.date_range(start=None, end=None, periods=None, freq='D') start和end以及freq配合能 ...
- pandas处理时间序列(1):pd.Timestamp()、pd.Timedelta()、pd.datetime( )、 pd.Period()、pd.to_timestamp()、datetime.strftime()、pd.to_datetime( )、pd.to_period()
Pandas库是处理时间序列的利器,pandas有着强大的日期数据处理功能,可以按日期筛选数据.按日期显示数据.按日期统计数据. pandas的实际类型主要分为: timestamp(时间戳) ...
- pandas处理时间序列(4): 移动窗口函数
六.移动窗口函数 移动窗口和指数加权函数类别如↓: rolling_mean 移动窗口的均值 pandas.rolling_mean(arg, window, min_periods=None, fr ...
- pandas之时间序列
Pandas中提供了许多用来处理时间格式文本的方法,包括按不同方法生成一个时间序列,修改时间的格式,重采样等等. 按不同的方法生成时间序列 In [7]: import pandas as pd # ...
- pandas 之 时间序列索引
import numpy as np import pandas as pd 引入 A basic kind of time series object in pandas is a Series i ...
- pandas之时间序列笔记
时间戳tiimestamp:固定的时刻->pd.Timestamp 固定时期period:比如2016年3月份,再如2015年销售额->pd.Period 时间间隔interval:由起始 ...
随机推荐
- pta编程总结1
7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符 ...
- sort排序用法
Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本 ...
- 005-Spring Boot配置分析-配置文件application、EnvironmentPostProcessor、Profiles
一.配置文件application 默认配置文件application.propertie或者application.yml,可同时存在 application.propertie增加配置:local ...
- 你好!酷痞Coolpy 之 Linux篇
欢迎你进入酷痞的物联网世界.这里有着自由的空气和自然的气息.接下来我将告诉你如果一步步建立一个自己专属的物联网平台. 由于目前的酷痞的官方域名还没有通过备案所以现在用临时域名解说本说明. 最终酷痞的官 ...
- zabbix4.0构建实录
[Nginx] #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@centos ...
- vue 获取dom的css属性值
<template> <div id="topInfo" ref="topInfo" style="width: 200px;hei ...
- 咸鱼入门到放弃5--Session和Cookie
保存会话数据的两种技术 1.Cookie Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去. ...
- UVA 10474 - Where is the Marble?--vector
https://vjudge.net/problem/UVA-10474 https://blog.csdn.net/xiyaozhe/article/details/81081344 简单用法 so ...
- 水晶报表,快速报表,rdlc报表
感觉自己脑子里只剩下报表了,o(╥﹏╥)o.因为最近新换了公司,业务上有需要报表打印,水晶报表,快速报表,rdlc报表这三种以后可能都会用到.所以在没了解好业务流程,熟悉代码之前,就是看看这三种报表怎 ...
- 在Node.js中使用ffi调用dll
类似的文章还是比较多的,但或多或少有一些问题没有解决,在此我将其整合并分享给大家: 测试环境: Node.js 9.9.0 VisualStudio 2015 "ffi": &qu ...