鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ Pandas窗口函數(shù)
Pandas教程
Pandas注意事項&竅門
Pandas IO工具
Pandas重建索引
Pandas稀疏數(shù)據(jù)
Pandas時間差(Timedelta)
Pandas聚合
Pandas字符串和文本數(shù)據(jù)
Pandas分類數(shù)據(jù)
Pandas索引和選擇數(shù)據(jù)
Pandas基本功能
Pandas系列
Pandas數(shù)據(jù)幀(DataFrame)
Pandas日期功能
Pandas缺失數(shù)據(jù)
Pandas與SQL比較
Pandas迭代
Pandas合并/連接
Pandas選項和自定義
Pandas級聯(lián)
Pandas可視化
Pandas數(shù)據(jù)結構
Pandas環(huán)境安裝配置
Pandas統(tǒng)計函數(shù)
Pandas窗口函數(shù)
Pandas面板(Panel)
Pandas排序
Pandas函數(shù)應用
Pandas快速入門
Pandas描述性統(tǒng)計
Pandas分組(GroupBy)

Pandas窗口函數(shù)

為了處理數(shù)字數(shù)據(jù),Pandas提供了幾個變體,如滾動,展開和指數(shù)移動窗口統(tǒng)計的權重。 其中包括總和,均值,中位數(shù),方差,協(xié)方差,相關性等。

下來學習如何在DataFrame對象上應用上提及的每種方法。

.rolling()函數(shù)

這個函數(shù)可以應用于一系列數(shù)據(jù)。指定window=n參數(shù)并在其上應用適當?shù)慕y(tǒng)計函數(shù)。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2020', periods=10),
columns = ['A', 'B', 'C', 'D'])

print (df.rolling(window=3).mean())

執(zhí)行上面示例代碼,得到以下結果 -

                   A         B         C         D
2020-01-01       NaN       NaN       NaN       NaN
2020-01-02       NaN       NaN       NaN       NaN
2020-01-03 -0.306293  0.214001 -0.076004 -0.200793
2020-01-04  0.236632 -0.437033  0.046111 -0.252062
2020-01-05  0.761818 -0.181635 -0.546929 -0.738482
2020-01-06  1.306498 -0.411834 -0.680948 -0.070285
2020-01-07  0.956877 -0.749315 -0.503484  0.160620
2020-01-08  0.354319 -1.067165 -1.238036  1.051048
2020-01-09  0.262081 -0.898373 -1.059351  0.342291
2020-01-10  0.326801 -0.350519 -1.064437  0.749869

注 - 由于窗口大小為3(window),前兩個元素有空值,第三個元素的值將是n,n-1n-2元素的平均值。這樣也可以應用上面提到的各種函數(shù)了。

.expanding()函數(shù)

這個函數(shù)可以應用于一系列數(shù)據(jù)。 指定min_periods = n參數(shù)并在其上應用適當?shù)慕y(tǒng)計函數(shù)。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),
      index = pd.date_range('1/1/2018', periods=10),
      columns = ['A', 'B', 'C', 'D'])
print (df.expanding(min_periods=3).mean())

執(zhí)行上面示例代碼得到以下結果 -

                   A         B         C         D
2018-01-01       NaN       NaN       NaN       NaN
2018-01-02       NaN       NaN       NaN       NaN
2018-01-03 -0.425085 -0.124270 -0.324134 -0.234001
2018-01-04 -0.293824 -0.038188 -0.172855  0.447226
2018-01-05 -0.516146 -0.013441 -0.384935  0.379267
2018-01-06 -0.614905  0.290308 -0.594635  0.414396
2018-01-07 -0.606090  0.121265 -0.604148  0.246296
2018-01-08 -0.597291  0.075374 -0.425182  0.092831
2018-01-09 -0.380505  0.074956 -0.253081  0.146426
2018-01-10 -0.235030  0.018936 -0.259566  0.315200

.ewm()函數(shù)

ewm()可應用于系列數(shù)據(jù)。指定com,span,halflife參數(shù),并在其上應用適當?shù)慕y(tǒng)計函數(shù)。它以指數(shù)形式分配權重。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),
   index = pd.date_range('1/1/2019', periods=10),
   columns = ['A', 'B', 'C', 'D'])
print (df.ewm(com=0.5).mean())

執(zhí)行上面示例函數(shù),得到以下結果 -

                   A         B         C         D
2019-01-01  1.047165  0.777385 -1.286948 -0.080564
2019-01-02  0.484093 -0.630998 -0.975172 -0.117832
2019-01-03  0.056189  0.830492  0.116325  1.005547
2019-01-04 -0.363824  1.222173  0.497901 -0.235209
2019-01-05 -0.260685  1.066029  0.391480  1.196190
2019-01-06  0.389649  1.458152 -0.231936 -0.481003
2019-01-07  1.071035 -0.016003  0.387420 -0.170811
2019-01-08 -0.573686  1.052081  1.218439  0.829366
2019-01-09  0.222927  0.556430  0.811838 -0.562096
2019-01-10  0.224624 -1.225446  0.204961 -0.800444

窗口函數(shù)主要用于通過平滑曲線來以圖形方式查找數(shù)據(jù)內(nèi)的趨勢。如果日常數(shù)據(jù)中有很多變化,并且有很多數(shù)據(jù)點可用,那么采樣和繪圖就是一種方法,應用窗口計算并在結果上繪制圖形是另一種方法。 通過這些方法,可以平滑曲線或趨勢。