五、重采样与频率转换

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):重采样与频率转换的更多相关文章

  1. pandas处理时间序列(2):DatetimeIndex、索引和选择、含有重复索引的时间序列、日期范围与频率和移位、时间区间和区间算术

    一.时间序列基础 1. 时间戳索引DatetimeIndex 生成20个DatetimeIndex from datetime import datetime dates = pd.date_rang ...

  2. 03. Pandas 2| 时间序列

    1.时间模块:datetime datetime模块,主要掌握:datetime.date(), datetime.datetime(), datetime.timedelta() 日期解析方法:pa ...

  3. Pandas 基础(11) - 用 melt 做格式转换

    melt 也可以用来做数据格式转换, 请看下图, 我们可以用 melt 把左表转成右表的格式: 首先引入文件(已上传): df = pd.read_csv('/Users/rachel/Sites/p ...

  4. pandas之时间序列(data_range)、重采样(resample)、重组时间序列(PeriodIndex)

    1.data_range生成时间范围 a) pd.date_range(start=None, end=None, periods=None, freq='D') start和end以及freq配合能 ...

  5. 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(时间戳) ...

  6. pandas处理时间序列(4): 移动窗口函数

    六.移动窗口函数 移动窗口和指数加权函数类别如↓: rolling_mean 移动窗口的均值 pandas.rolling_mean(arg, window, min_periods=None, fr ...

  7. pandas之时间序列

    Pandas中提供了许多用来处理时间格式文本的方法,包括按不同方法生成一个时间序列,修改时间的格式,重采样等等. 按不同的方法生成时间序列 In [7]: import pandas as pd # ...

  8. pandas 之 时间序列索引

    import numpy as np import pandas as pd 引入 A basic kind of time series object in pandas is a Series i ...

  9. pandas之时间序列笔记

    时间戳tiimestamp:固定的时刻->pd.Timestamp 固定时期period:比如2016年3月份,再如2015年销售额->pd.Period 时间间隔interval:由起始 ...

随机推荐

  1. 金蝶K3 WISE BOM多级展开_BOM成本表

    /****** Object: StoredProcedure [dbo].[pro_bobang_BOMCost] Script Date: 07/29/2015 16:09:11 ******/ ...

  2. Hbase写Hfile报错:Trying to load more than 32 hfiles to one family of one region

    在写Hfile的时候 ,如果一个family下超过了默认的32个hfile,就会报如下错误: ERROR mapreduce.LoadIncrementalHFiles: Trying to load ...

  3. 咸鱼入门到放弃5--Session和Cookie

    保存会话数据的两种技术 1.Cookie Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去. ...

  4. mysql 正则表达式问号

    MySQL 中,用正则表达式匹配?,需要使用两个转义字符   \\? 因使用一个被坑了很久.

  5. 友元(friend)

    1.友元类的关系不能传递和继承 ...待续

  6. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习3

    #include <iostream> using namespace std; void showmenu(void) { cout<<"Please enter ...

  7. 读取gzmt.csv文件,计算均值及概率

    问题: 读取gzmt.csv文件所有数据,选取收盘价格(倒数第二列),计算20天均值,权重取成交量(选做:时间权重为半衰期为15天):将该均值修剪为超过600的都设置为1000,并打印出该均值超过55 ...

  8. __x__(22)0907第四天__ 垂直外边距重叠

    外边距重叠, 也叫“外边距合并”,指的是,当两个外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度,等于两个发生合并的外边距的高度中的较大者...在布局时,易造成混淆. 1. 上下元素 垂直外 ...

  9. JMM(java Memory Model)到底是什么?

    经历过很多面试大部分都会问一句: 你知道Java内存模型么?  然后我就pulapula的说一大堆什么堆呀,栈呀,GC呀什么的,这段时间把JVM虚拟机和多线程编程完整的学习了一遍,发现JMM和堆/栈这 ...

  10. Python学习之旅(三十七)

    Python基础知识(36):访问数据库(Ⅰ) 程序运行的时候,数据都是在内存中的.当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入 ...