最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas時間序列:重采樣及頻率轉(zhuǎn)換方式

 更新時間:2019年12月26日 10:29:39   作者:BQW_  
今天小編就為大家分享一篇Pandas時間序列:重采樣及頻率轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

如下所示:

import pandas as pd
import numpy as np

一、介紹

重采樣(resampling)指的是將時間序列從一個頻率轉(zhuǎn)換到另一個頻率的處理過程;

將高頻率(間隔短)數(shù)據(jù)聚合到低頻率(間隔長)稱為降采樣(downsampling);

將低頻率數(shù)據(jù)轉(zhuǎn)換到高頻率則稱為升采樣(unsampling);

有些采樣即不是降采樣也不是升采樣,例如將W-WED(每周三)轉(zhuǎn)換為W-FRI;

二、resample方法–轉(zhuǎn)換頻率的主力函數(shù)

rng = pd.date_range('1/1/2000',periods=100,freq='D')
ts = pd.Series(np.random.randn(len(rng)),index=rng)
ts.resample('M').mean() # 將100天按月進行降采樣(聚合)
2000-01-31  -0.156092
2000-02-29  0.060607
2000-03-31  -0.039608
2000-04-30  -0.154838
Freq: M, dtype: float64
ts.resample('M',kind='period').mean()
2000-01  -0.156092
2000-02  0.060607
2000-03  -0.039608
2000-04  -0.154838
Freq: M, dtype: float64

三、降采樣(聚合)

1.降采樣面元(區(qū)間)默認才有左閉右開的形式,而且聚合的索引是以左邊界標記

rng = pd.date_range('1/1/2000',periods=12,freq='T')
ts = pd.Series(np.arange(12),index=rng)
ts
2000-01-01 00:00:00   0
2000-01-01 00:01:00   1
2000-01-01 00:02:00   2
2000-01-01 00:03:00   3
2000-01-01 00:04:00   4
2000-01-01 00:05:00   5
2000-01-01 00:06:00   6
2000-01-01 00:07:00   7
2000-01-01 00:08:00   8
2000-01-01 00:09:00   9
2000-01-01 00:10:00  10
2000-01-01 00:11:00  11
Freq: T, dtype: int32
ts.resample('5min').sum()
2000-01-01 00:00:00  10
2000-01-01 00:05:00  35
2000-01-01 00:10:00  21
Freq: 5T, dtype: int32

2.通過參數(shù)closed='right'可以實現(xiàn)左開右閉

ts.resample('5min',closed='right').sum()
1999-12-31 23:55:00   0
2000-01-01 00:00:00  15
2000-01-01 00:05:00  40
2000-01-01 00:10:00  11
Freq: 5T, dtype: int32

3.通過參數(shù)label='right'可以實現(xiàn)以右邊界為聚合后的標簽

ts.resample('5min',closed='right',label='right').sum()
2000-01-01 00:00:00   0
2000-01-01 00:05:00  15
2000-01-01 00:10:00  40
2000-01-01 00:15:00  11
Freq: 5T, dtype: int32

4.通過參數(shù)loffset可以實現(xiàn)精準的調(diào)整標簽

ts.resample('5min',closed='right',loffset='-1s').sum()
1999-12-31 23:54:59   0
1999-12-31 23:59:59  15
2000-01-01 00:04:59  40
2000-01-01 00:09:59  11
Freq: 5T, dtype: int32

四、OHLC重采樣

在金融領(lǐng)域常用的聚合方式–OHLC,它會計算各個面元的:第一個值(開盤)、最后一個值(收盤)、最大值和最小值,并產(chǎn)生一個DataFrame

print(ts.resample('5min').ohlc())
           open high low close
2000-01-01 00:00:00   0   4  0   4
2000-01-01 00:05:00   5   9  5   9
2000-01-01 00:10:00  10  11  10   11

五、通過groupby進行重采樣

rng = pd.date_range('1/1/2000',periods=100,freq='D')
ts = pd.Series(np.arange(100),index=rng)
ts.groupby(lambda x:x.month).mean() # 等價于 ts.groupby(rng.month).mean()
1  15
2  45
3  75
4  95
dtype: int32
ts.groupby(lambda x:x.weekday).mean() # 按周聚合
0  47.5
1  48.5
2  49.5
3  50.5
4  51.5
5  49.0
6  50.0
dtype: float64

六、升采樣和插值

升采樣是從低頻率到高頻率,這樣會引入缺失值;

升采樣時需要決定采樣后結(jié)果中具體那個值代替原始的值;

當決定了替換原始值的值后,中間的值會按照頻率進行添加;


frame = pd.DataFrame(np.random.randn(2,4),
          index = pd.date_range('1/1/2000',periods=2,freq='W-WED'),
          columns = ['Colorado','Texas','New York','Ohio'])
print(frame)
      Colorado   Texas New York   Ohio
2000-01-05 -0.078765 1.389417 0.732726 0.816723
2000-01-12 -0.663686 0.744384 1.395332 -0.031715

1.升采樣、前向填充

df_daily = frame.resample('D')
print(df_daily.ffill())
      Colorado   Texas New York   Ohio
2000-01-05 -0.078765 1.389417 0.732726 0.816723
2000-01-06 -0.078765 1.389417 0.732726 0.816723
2000-01-07 -0.078765 1.389417 0.732726 0.816723
2000-01-08 -0.078765 1.389417 0.732726 0.816723
2000-01-09 -0.078765 1.389417 0.732726 0.816723
2000-01-10 -0.078765 1.389417 0.732726 0.816723
2000-01-11 -0.078765 1.389417 0.732726 0.816723
2000-01-12 -0.663686 0.744384 1.395332 -0.031715
print(df_daily.ffill(limit=2))
      Colorado   Texas New York   Ohio
2000-01-05 -0.078765 1.389417 0.732726 0.816723
2000-01-06 -0.078765 1.389417 0.732726 0.816723
2000-01-07 -0.078765 1.389417 0.732726 0.816723
2000-01-08    NaN    NaN    NaN    NaN
2000-01-09    NaN    NaN    NaN    NaN
2000-01-10    NaN    NaN    NaN    NaN
2000-01-11    NaN    NaN    NaN    NaN
2000-01-12 -0.663686 0.744384 1.395332 -0.031715

2.重采樣后的日期不一定與先前的日期有交集

print(frame)
      Colorado   Texas New York   Ohio
2000-01-05 -0.078765 1.389417 0.732726 0.816723
2000-01-12 -0.663686 0.744384 1.395332 -0.031715
print(frame.resample('W-THU').ffill()) # 重采樣后的結(jié)果開始為全NaN,使用ffill會使用2000-01-05和2000-01-12的值向前填充

      Colorado   Texas New York   Ohio
2000-01-06 -0.078765 1.389417 0.732726 0.816723
2000-01-13 -0.663686 0.744384 1.395332 -0.031715

七、通過時期(period)進行重采樣

1.將采樣

frame = pd.DataFrame(np.random.randn(24,4),
          index = pd.period_range('1-2000','12-2001',freq='M'),
          columns = ['Colorado','Texas','New York','Ohio'])
print(frame[:5])
     Colorado   Texas New York   Ohio
2000-01 -1.956495 -0.689508 0.057439 -0.655832
2000-02 -0.491443 -1.731887 1.336801 0.659877
2000-03 -0.139601 -1.310386 -0.299205 1.194269
2000-04 0.431474 -1.312518 1.880223 0.379421
2000-05 -0.674796 0.471018 0.132998 0.509761
annual_frame = frame.resample('A-DEC').mean()
print(annual_frame)
   Colorado   Texas New York   Ohio
2000 -0.332076 -0.762599 0.046917 0.224908
2001 -0.152922 0.168667 -0.326439 -0.052034

2.通過convention決定在升采樣后,那端來替換原來的值

# Q-DEC:以12月做為最后一個季度的最后一個月進行升采樣.也就是1-3月是1季度,4-6月是2季度,7-9月是3季度,10-12月是4季度
print(annual_frame.resample('Q-DEC').ffill())
    Colorado   Texas New York   Ohio
2000Q1 -0.332076 -0.762599 0.046917 0.224908
2000Q2 -0.332076 -0.762599 0.046917 0.224908
2000Q3 -0.332076 -0.762599 0.046917 0.224908
2000Q4 -0.332076 -0.762599 0.046917 0.224908
2001Q1 -0.152922 0.168667 -0.326439 -0.052034
2001Q2 -0.152922 0.168667 -0.326439 -0.052034
2001Q3 -0.152922 0.168667 -0.326439 -0.052034
2001Q4 -0.152922 0.168667 -0.326439 -0.052034
# 使用2000Q4替換2000、2001Q4替換2001,這兩個值2000Q4和2001Q4之間就是升采樣新增的值
print(annual_frame.resample('Q-DEC',convention='end').ffill())
    Colorado   Texas New York   Ohio
2000Q4 -0.332076 -0.762599 0.046917 0.224908
2001Q1 -0.332076 -0.762599 0.046917 0.224908
2001Q2 -0.332076 -0.762599 0.046917 0.224908
2001Q3 -0.332076 -0.762599 0.046917 0.224908
2001Q4 -0.152922 0.168667 -0.326439 -0.052034

3.綜合案例解析

Q-MAR:4-6月是1季度,7-9月是2季度,10-12月是3季度,1-3月是4季度;

2000-01到2000-03是2000Q4,2000-04到2000-6是2001Q1,以此類推;

2000轉(zhuǎn)變?yōu)閇2000Q4,2001Q1,2001Q2,2001Q3],2001轉(zhuǎn)變?yōu)閇2001Q4,2002Q1,2002Q2,2002Q3];

convention='end',那么會使用2001Q3替換原始的2000,2002Q3替換2001,中間的部分自動添加;

索引結(jié)果為[2001Q3,2001Q4,2002Q1,2002Q2,2002Q3];

print(annual_frame.resample('Q-MAR',convention='end').ffill())
    Colorado   Texas New York   Ohio
2001Q3 -0.332076 -0.762599 0.046917 0.224908
2001Q4 -0.332076 -0.762599 0.046917 0.224908
2002Q1 -0.332076 -0.762599 0.046917 0.224908
2002Q2 -0.332076 -0.762599 0.046917 0.224908
2002Q3 -0.152922 0.168667 -0.326439 -0.052034

以上這篇Pandas時間序列:重采樣及頻率轉(zhuǎn)換方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用?Python?讓圖表動起來

    利用?Python?讓圖表動起來

    這篇文章主要給大家分享如何利用?Python?讓圖表動起來,本文圍繞Python?讓圖表動起來的話題舉例matplotlib動畫功能的一個例子展開文章內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • python求解三角形第三邊長實例

    python求解三角形第三邊長實例

    這篇文章主要介紹了python求解三角形第三邊長實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python通過txt文件批量安裝依賴包的實現(xiàn)步驟

    python通過txt文件批量安裝依賴包的實現(xiàn)步驟

    今天小編就為大家分享一篇python通過txt文件批量安裝依賴包的實現(xiàn)步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 在IPython中進行Python程序執(zhí)行時間的測量方法

    在IPython中進行Python程序執(zhí)行時間的測量方法

    今天小編就為大家分享一篇在IPython中進行Python程序執(zhí)行時間的測量方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python BeautifulSoup使用方法詳解

    python BeautifulSoup使用方法詳解

    Beautiful Soup 是用Python寫的一個HTML/XML的解析器,它可以很好的處理不規(guī)范標記并生成剖析樹(parse tree)。 它提供簡單又常用的導航(navigating),搜索以及修改剖析樹的操作。它可以大大節(jié)省你的編程時間,下面我們就看看他是如何使用
    2013-11-11
  • 基于Python編寫一個打印機批量打印隊列工具

    基于Python編寫一個打印機批量打印隊列工具

    有時候我們在批量打印文件的時候,總會遇到電腦上打印機隊列打不開的情況,為此我們可以利用Python寫一個打印機批量打印隊列,下面小編就來和大家詳細講講吧
    2025-02-02
  • python 的列表遍歷刪除實現(xiàn)代碼

    python 的列表遍歷刪除實現(xiàn)代碼

    這篇文章主要介紹了python 的列表遍歷刪除,需要的朋友可以參考下
    2015-11-11
  • 詳解Python是如何實現(xiàn)issubclass的

    詳解Python是如何實現(xiàn)issubclass的

    這篇文章主要介紹了詳解Python是如何實現(xiàn)issubclass的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python3如何使用range函數(shù)替代xrange函數(shù)

    Python3如何使用range函數(shù)替代xrange函數(shù)

    這篇文章主要介紹了Python3如何使用range函數(shù)替代xrange函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Python實現(xiàn)二叉搜索樹

    Python實現(xiàn)二叉搜索樹

    二叉搜索樹(二叉排序樹)它的每個節(jié)點的數(shù)據(jù)結(jié)構(gòu)為1個父節(jié)點指針,1個左孩子指針,1個有孩子指針,還有就是自己的數(shù)據(jù)部分了,因為只有左右兩孩子,所以才叫二叉樹,在此基礎(chǔ)上,該二叉樹還滿足另外一個條件:每個結(jié)點的左孩子都不大于該結(jié)點&&每個結(jié)點的右孩子都大于該結(jié)點.
    2016-02-02

最新評論

济阳县| 伊春市| 滦南县| 天长市| 洛南县| 双江| 商洛市| 托里县| 涿州市| 朔州市| 迁安市| 天全县| 米易县| 顺昌县| 建德市| 竹北市| 泾源县| 攀枝花市| 巴塘县| 巴东县| 阳曲县| 旺苍县| 射阳县| 景宁| 叙永县| 长子县| 京山县| 恭城| 五莲县| 礼泉县| 柘城县| 额敏县| 城口县| 嘉峪关市| 大足县| 伽师县| 饶河县| 桦南县| 兴安县| 日喀则市| 长泰县|