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

pandas庫(kù)之DataFrame滑動(dòng)窗口的實(shí)現(xiàn)

 更新時(shí)間:2023年03月31日 09:29:20   作者:bujbujbiu  
本文主要介紹了pandas庫(kù)之DataFrame滑動(dòng)窗口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

(1)DataFrame的滑動(dòng)窗口

提供滑動(dòng)窗口計(jì)算,可用于時(shí)間序列(時(shí)間和日期)數(shù)據(jù)

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single')

參數(shù):

window:int, offset, or BaseIndexer subclass
移動(dòng)窗口的大小,如果是整數(shù),代表每個(gè)窗口覆蓋的固定數(shù)量;如果是offset(pandas時(shí)間序列),代表每個(gè)窗口的時(shí)間段,每個(gè)窗口的大小將根據(jù)時(shí)間段中包含的觀(guān)察值而變化,僅對(duì)datetimelike索引有效。

min_periods:int, default None
窗口計(jì)算值要求至少有min_periods個(gè)觀(guān)測(cè)值。窗口由時(shí)間類(lèi)型指定,則min_periods默認(rèn)為1,窗口為整數(shù),則min_periods默認(rèn)為窗口大小

center:bool, default False
是否將窗口中間索引設(shè)為窗口計(jì)算后的標(biāo)簽

win_type:str, default None
觀(guān)測(cè)值的權(quán)重分布。如果為None,則所有點(diǎn)的權(quán)重均相等。如果是字符串,要求是 scipy.signal window function函數(shù)

on:str, optional
對(duì)于 DataFrame,計(jì)算滾動(dòng)窗口所依照的列標(biāo)簽或索引級(jí)別,而不是 DataFrame 的索引

axis:int or str, default 0
如果是0或’index’,按行滾動(dòng);如果是1或’columns’,按列滾動(dòng)

closed:str, default None
‘right’:窗口中的第一個(gè)點(diǎn)將從計(jì)算中排除;‘left‘:窗口中的最后一個(gè)點(diǎn)將從計(jì)算中排除;‘both’:窗口中沒(méi)有點(diǎn)將從計(jì)算中排除;‘neither’:窗口中的第一個(gè)點(diǎn)和最后一個(gè)點(diǎn)將從計(jì)算中排除;默認(rèn)’right’

Example

窗口大小為2的求和

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({'B':[0,1,2,np.nan,4]})
>>> df
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0
>>> df.rolling(2).sum()
     B
0  NaN
1  1.0
2  3.0
3  NaN
4  NaN

窗口為2s的求和

>>> df_time = pd.DataFrame({'B':[0,1,2,np.nan,4]},
		       index = [
		       pd.Timestamp('20130101 09:00:00'),
			   pd.Timestamp('20130101 09:00:02'),
			   pd.Timestamp('20130101 09:00:03'), 
			   pd.Timestamp('20130101 09:00:05'),
			   pd.Timestamp('20130101 09:00:06')])
			                                                   
>>> df_time
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  2.0
2013-01-01 09:00:05  NaN
2013-01-01 09:00:06  4.0

>>> df_time.rolling('2s').sum()
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  3.0
2013-01-01 09:00:05  NaN
2013-01-01 09:00:06  4.0

有 2 個(gè)觀(guān)測(cè)值的前視窗口的滾動(dòng)求和(a和a+1)

# 設(shè)置前向窗口
>>> indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=2)
>>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
>>> df.rolling(window=indexer,min_periods=1).sum()
     B
0  1.0
1  3.0
2  2.0
3  4.0
4  4.0

窗口長(zhǎng)度為 2 個(gè)觀(guān)測(cè)值的滾動(dòng)和,但至少需要 1 個(gè)觀(guān)測(cè)值才可計(jì)算值

>>> df.rolling(2,min_periods=1).sum()
     B
0  0.0
1  1.0
2  3.0
3  2.0
4  4.0

滾動(dòng)總和,并將結(jié)果分配到窗口索引的中心

>>> df.rolling(3, min_periods=1, center=True).sum()
     B
0  1.0
1  3.0
2  3.0
3  6.0
4  4.0
>>> df.rolling(3, min_periods=1, center=False).sum()
     B
0  0.0
1  1.0
2  3.0
3  3.0
4  6.0

高斯分布窗口

>>> df.rolling(2,win_type='gaussian').sum(std=3)
          B
0       NaN
1  0.986207
2  2.958621
3       NaN
4       NaN

(2)pandas的窗口操作

窗口由從當(dāng)前觀(guān)測(cè)值回溯窗口長(zhǎng)度組成

>>> import pandas as pd
>>> s = pd.Series(range(5))
>>> s
0    0
1    1
2    2
3    3
4    4
dtype: int64

# 5個(gè)分區(qū)
>>> for window in s.rolling(window=2):
	print(window)

	
0    0
dtype: int64
0    0
1    1
dtype: int64
1    1
2    2
dtype: int64
2    2
3    3
dtype: int64
3    3
4    4
dtype: int64

panadas支持4種窗口操作

  • Rolling window:值的固定/變動(dòng)的滑動(dòng)窗口
  • Weighted window:由 scipy.signal 庫(kù)提供的加權(quán)非矩形窗口
  • Expanding window:值的累積窗口
  • Exponentially Weighted window:值的累積和指數(shù)加權(quán)窗

在這里插入圖片描述

其中滑動(dòng)窗口支持時(shí)間序列的計(jì)算

>>> s = pd.Series(range(5),index = pd.date_range('2020-01-01',periods=5,freq='1D'))
>>> s
2020-01-01    0
2020-01-02    1
2020-01-03    2
2020-01-04    3
2020-01-05    4
Freq: D, dtype: int64
>>> s.rolling(window='2D').sum()
2020-01-01    0.0
2020-01-02    1.0
2020-01-03    3.0
2020-01-04    5.0
2020-01-05    7.0
Freq: D, dtype: float64

部分窗口支持先分組再執(zhí)行窗口操作

>>> df = pd.DataFrame({'A':['a', 'b', 'a', 'b', 'a'],'B':range(5)})
>>> df
   A  B
0  a  0
1  b  1
2  a  2
3  b  3
4  a  4
>>> df.groupby('A').expanding().sum()
       B
A       
a 0  0.0
  2  2.0
  4  6.0
b 1  1.0
  3  4.0

Rolling window

>>> times = ['2020-01-01', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-29']
>>> s = pd.Series(range(5),index = pd.DatetimeIndex(times))
>>> s
2020-01-01    0
2020-01-03    1
2020-01-04    2
2020-01-05    3
2020-01-29    4
dtype: int64

# 兩個(gè)觀(guān)測(cè)值的窗口
>>> s.rolling(2).sum()
2020-01-01    NaN
2020-01-03    1.0
2020-01-04    3.0
2020-01-05    5.0
2020-01-29    7.0
dtype: float64

# 兩天的窗口
>>> s.rolling('2D').sum()
2020-01-01    0.0
2020-01-03    1.0
2020-01-04    3.0
2020-01-05    5.0
2020-01-29    4.0
dtype: float64

Centering windows

窗口計(jì)算后默認(rèn)標(biāo)簽是窗口的最后一個(gè),center可以使中間索引作為標(biāo)簽

>>> s = pd.Series(range(10))
>>> s.rolling(window=5).mean()
0    NaN
1    NaN
2    NaN
3    NaN
4    2.0
5    3.0
6    4.0
7    5.0
8    6.0
9    7.0
dtype: float64
>>> s.rolling(window=5, center=True).mean()
0    NaN
1    NaN
2    2.0
3    3.0
4    4.0
5    5.0
6    6.0
7    7.0
8    NaN
9    NaN
dtype: float64

Rolling apply

自定義窗口計(jì)算公式

>>> import numpy as np
>>> def mad(x):
	return np.fabs(x - x.mean()).mean()

>>> s = pd.Series(range(10))
>>> s.rolling(window=4).apply(mad, raw=True)
0    NaN
1    NaN
2    NaN
3    1.0
4    1.0
5    1.0
6    1.0
7    1.0
8    1.0
9    1.0
dtype: float64

Weighted window

為窗口中的值添加權(quán)重

>>> s = pd.Series(range(10))
>>> s.rolling(window=5, win_type="gaussian").mean(std=0.1)
0    NaN
1    NaN
2    NaN
3    NaN
4    2.0
5    3.0
6    4.0
7    5.0
8    6.0
9    7.0
dtype: float64

到此這篇關(guān)于pandas庫(kù)之DataFrame滑動(dòng)窗口的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pandas DataFrame滑動(dòng)窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python面向?qū)ο缶幊讨?lèi)的進(jìn)階

    Python面向?qū)ο缶幊讨?lèi)的進(jìn)階

    這篇文章主要介紹了Python面向?qū)ο缶幊讨?lèi)的引用,引用 Reference是對(duì)象的指針,引用是內(nèi)存中真實(shí)對(duì)象的指針,表示為變量名或者內(nèi)存地址、每個(gè)對(duì)象存在至少一個(gè)引用,id()函數(shù)用于獲得引用,想具體了解的小伙伴可以參考下面文章的內(nèi)容
    2021-11-11
  • Python對(duì)PDF文檔和PPT文檔的操作詳解

    Python對(duì)PDF文檔和PPT文檔的操作詳解

    Python辦公?動(dòng)化是利?Python編程語(yǔ)?來(lái)創(chuàng)建腳本和程序,以簡(jiǎn)化、加速和?動(dòng)化?常辦公任務(wù)和?作流程的過(guò)程,它基于Python的強(qiáng)?功能和豐富的第三?庫(kù),使得能夠處理各種辦公任務(wù),本文給大家介紹了Python對(duì)PDF文檔和PPT文檔的操作,需要的朋友可以參考下
    2023-12-12
  • Python常見(jiàn)異常的處理方式淺析

    Python常見(jiàn)異常的處理方式淺析

    異常指當(dāng)程序出現(xiàn)錯(cuò)誤后程序的處理方法,異常機(jī)制提供了程序正常退出的安全通道.當(dāng)出現(xiàn)錯(cuò)誤后,程序執(zhí)行的流程發(fā)生改變,程序的控制權(quán)轉(zhuǎn)移到異常處理器,如序列的下標(biāo)越界、打開(kāi)不存在的文件、空引用異常等
    2023-02-02
  • Python?程序通過(guò)可執(zhí)行文件部署方式

    Python?程序通過(guò)可執(zhí)行文件部署方式

    這篇文章主要介紹了Python?程序通過(guò)可執(zhí)行文件部署方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 解決python中os.listdir()函數(shù)讀取文件夾下文件的亂序和排序問(wèn)題

    解決python中os.listdir()函數(shù)讀取文件夾下文件的亂序和排序問(wèn)題

    今天小編就為大家分享一篇解決python中os.listdir()函數(shù)讀取文件夾下文件的亂序和排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python遍歷文件目錄、批量處理同類(lèi)文件

    python遍歷文件目錄、批量處理同類(lèi)文件

    這篇文章主要為大家詳細(xì)介紹了python遍歷文件目錄、批量處理同類(lèi)文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python實(shí)現(xiàn)提取Word文檔中的文本和圖片

    Python實(shí)現(xiàn)提取Word文檔中的文本和圖片

    將內(nèi)容從?Word?文檔中提取出來(lái)可以方便我們對(duì)其進(jìn)行其他操作,如將內(nèi)容儲(chǔ)存在數(shù)據(jù)庫(kù)中,本文將介紹如何使用簡(jiǎn)單的代碼實(shí)現(xiàn)從?Word?文檔中提取文本和圖片內(nèi)容并保存,需要的可以參考下
    2023-12-12
  • python保留小數(shù)位的三種實(shí)現(xiàn)方法

    python保留小數(shù)位的三種實(shí)現(xiàn)方法

    本文給大家分享python保留小數(shù)位的三種方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Django REST framework 限流功能的使用

    Django REST framework 限流功能的使用

    DRF常用功能的案例基本用法都有講解,關(guān)于限流(Throttling)這個(gè)功能其實(shí)在真實(shí)的業(yè)務(wù)場(chǎng)景中能真正用到的其實(shí)不算多。今天說(shuō)這個(gè)話(huà)題其實(shí)一方面是討論功能,另一方面也是希望換個(gè)角度去審視我們的開(kāi)發(fā)過(guò)程,希望大家可以在使用DRF功能的同時(shí),也了解一下功能背后的實(shí)現(xiàn)
    2021-06-06
  • 詳解pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題

    詳解pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題

    本文主要介紹了pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

嘉黎县| 承德县| 根河市| 天气| 毕节市| 井冈山市| 达拉特旗| 墨竹工卡县| 永济市| 含山县| 金塔县| 沾化县| 京山县| 东丽区| 凤台县| 南川市| 南皮县| 云霄县| 平顶山市| 福清市| 东安县| 株洲县| 吐鲁番市| 巴里| 临安市| 东丰县| 运城市| 全椒县| 迁安市| 鹿泉市| 永昌县| 永寿县| 开江县| 镇巴县| 孝感市| 本溪市| 尼勒克县| 威信县| 宣汉县| 武平县| 彰化县|