
- Python Pandas 教程
- Python Pandas - 首頁
- Python Pandas - 簡介
- Python Pandas - 環境搭建
- Python Pandas - 基礎
- Python Pandas - 資料結構簡介
- Python Pandas - 索引物件
- Python Pandas - Panel (面板)
- Python Pandas - 基本功能
- Python Pandas - 索引與資料選擇
- Python Pandas - Series (序列)
- Python Pandas - Series (序列)
- Python Pandas - Series 物件切片
- Python Pandas - Series 物件的屬性
- Python Pandas - Series 物件的算術運算
- Python Pandas - 將 Series 轉換為其他物件
- Python Pandas - DataFrame (資料框)
- Python Pandas - DataFrame (資料框)
- Python Pandas - 訪問 DataFrame
- Python Pandas - DataFrame 物件切片
- Python Pandas - 修改 DataFrame
- Python Pandas - 從 DataFrame 中刪除行
- Python Pandas - DataFrame 的算術運算
- Python Pandas - I/O 工具
- Python Pandas - I/O 工具
- Python Pandas - 使用 CSV 格式
- Python Pandas - 讀取和寫入 JSON 檔案
- Python Pandas - 從 Excel 檔案讀取資料
- Python Pandas - 將資料寫入 Excel 檔案
- Python Pandas - 使用 HTML 資料
- Python Pandas - 剪貼簿
- Python Pandas - 使用 HDF5 格式
- Python Pandas - 與 SQL 的比較
- Python Pandas - 資料處理
- Python Pandas - 排序
- Python Pandas - 重索引
- Python Pandas - 迭代
- Python Pandas - 級聯
- Python Pandas - 統計函式
- Python Pandas - 描述性統計
- Python Pandas - 處理文字資料
- Python Pandas - 函式應用
- Python Pandas - 選項和自定義
- Python Pandas - 視窗函式
- Python Pandas - 聚合
- Python Pandas - 合併/連線
- Python Pandas - 多層索引
- Python Pandas - 多層索引基礎
- Python Pandas - 使用多層索引進行索引
- Python Pandas - 使用多層索引的高階重索引
- Python Pandas - 重新命名多層索引標籤
- Python Pandas - 對多層索引進行排序
- Python Pandas - 二元運算
- Python Pandas - 二元比較運算
- Python Pandas - 布林索引
- Python Pandas - 布林掩碼
- Python Pandas - 資料重塑和透視
- Python Pandas - 透視表
- Python Pandas - 堆疊和取消堆疊
- Python Pandas - 熔化
- Python Pandas - 計算虛擬變數
- Python Pandas - 類別資料
- Python Pandas - 類別資料
- Python Pandas - 類別資料的排序
- Python Pandas - 比較類別資料
- Python Pandas - 處理缺失資料
- Python Pandas - 缺失資料
- Python Pandas - 填充缺失資料
- Python Pandas - 缺失值的插值
- Python Pandas - 刪除缺失資料
- Python Pandas - 使用缺失資料進行計算
- Python Pandas - 處理重複資料
- Python Pandas - 重複資料
- Python Pandas - 計數和檢索唯一元素
- Python Pandas - 重複標籤
- Python Pandas - 分組和聚合
- Python Pandas - GroupBy
- Python Pandas - 時間序列資料
- Python Pandas - 日期功能
- Python Pandas - 時間增量
- Python Pandas - 稀疏資料結構
- Python Pandas - 稀疏資料
- Python Pandas - 視覺化
- Python Pandas - 視覺化
- Python Pandas - 其他概念
- Python Pandas - 警告和陷阱
- Python Pandas 有用資源
- Python Pandas - 快速指南
- Python Pandas - 有用資源
- Python Pandas - 討論
Python Pandas - 視窗函式
Pandas 中的視窗函式提供了一種強大的方法來對一系列資料執行操作,允許您計算統計資料和其他聚合資料視窗中的資料點。這些函式在時間序列分析和其他需要考慮每個觀測值周圍一系列資料點的情況中特別有用。
Pandas 支援四種主要的視窗操作型別:
滾動視窗:一個可以是固定大小或可變大小的滑動視窗。
加權視窗:由 scipy.signal 庫提供的非矩形加權視窗。
擴充套件視窗:一個累積視窗,包含直到當前點的所有資料點。
指數加權視窗:一個累積視窗,對以前的資料點應用指數加權。
我們現在將學習如何將這些應用於 DataFrame 物件。
滾動視窗
滾動視窗操作涉及在資料上移動一個固定大小的視窗,在該視窗內執行聚合函式(如求和或平均值)。它非常靈活,並支援各種基於時間的操作。
要執行此操作,我們可以使用rolling() 函式。此函式可以應用於一系列資料。指定window=n 引數並在其之上應用適當的統計函式。rolling() 函式返回pandas.typing.api.Rolling 物件。
示例
以下是使用rolling() 函式在 DataFrame 上應用滾動視窗操作的示例。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), index = pd.date_range('1/1/2000', periods=10), columns = ['A', 'B', 'C', 'D']) print(df.rolling(window=3).mean())
其輸出如下:
A B C D 2000-01-01 NaN NaN NaN NaN 2000-01-02 NaN NaN NaN NaN 2000-01-03 0.434553 -0.667940 -1.051718 -0.826452 2000-01-04 0.628267 -0.047040 -0.287467 -0.161110 2000-01-05 0.398233 0.003517 0.099126 -0.405565 2000-01-06 0.641798 0.656184 -0.322728 0.428015 2000-01-07 0.188403 0.010913 -0.708645 0.160932 2000-01-08 0.188043 -0.253039 -0.818125 -0.108485 2000-01-09 0.682819 -0.606846 -0.178411 -0.404127 2000-01-10 0.688583 0.127786 0.513832 -1.067156
注意:由於視窗大小為 3,因此前兩個元素為空,從第三個元素開始,值為n、n-1 和n-2 元素的平均值。因此,我們也可以應用上面提到的各種函式。
加權視窗
加權視窗應用非矩形視窗函式,通常用於訊號處理。win_type 引數用於指定視窗型別,它對應於scipy.signal 庫中的視窗函式。
示例
此示例演示了在 Pandas Series 物件上應用加權視窗操作。
import pandas as pd # Creating a series s = pd.Series(range(10)) # Applying a triangular weighted window result = s.rolling(window=5, win_type="triang").mean() print(result)
當我們執行上述程式時,它會產生以下結果:
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
擴充套件視窗
擴充套件視窗計算直到當前點為止的所有可用資料點的聚合統計資料,允許進行累積計算。
expanding() 函式可以應用於一系列資料。指定min_periods=n 引數並在其之上應用適當的統計函式。此函式返回pandas.typing.api.Expanding 物件。
示例
以下是 DataFrame 物件上應用擴充套件視窗操作的示例。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), index = pd.date_range('1/1/2000', periods=10), columns = ['A', 'B', 'C', 'D']) print(df.expanding(min_periods=3).mean())
其輸出如下:
A B C D 2000-01-01 NaN NaN NaN NaN 2000-01-02 NaN NaN NaN NaN 2000-01-03 0.434553 -0.667940 -1.051718 -0.826452 2000-01-04 0.743328 -0.198015 -0.852462 -0.262547 2000-01-05 0.614776 -0.205649 -0.583641 -0.303254 2000-01-06 0.538175 -0.005878 -0.687223 -0.199219 2000-01-07 0.505503 -0.108475 -0.790826 -0.081056 2000-01-08 0.454751 -0.223420 -0.671572 -0.230215 2000-01-09 0.586390 -0.206201 -0.517619 -0.267521 2000-01-10 0.560427 -0.037597 -0.399429 -0.376886
指數加權視窗
這種型別的視窗操作對以前的資料點應用指數加權,這意味著較舊的資料點的重要性逐漸降低。
ewm() 函式應用於一系列資料。指定任何 com、span、halflife 引數並在其之上應用適當的統計函式。它以指數方式分配權重。此函式返回pandas.typing.api.ExponentialMovingWindow 物件。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), index = pd.date_range('1/1/2000', periods=10), columns = ['A', 'B', 'C', 'D']) print(df.ewm(com=0.5).mean())
其輸出如下:
A B C D 2000-01-01 1.088512 -0.650942 -2.547450 -0.566858 2000-01-02 0.865131 -0.453626 -1.137961 0.058747 2000-01-03 -0.132245 -0.807671 -0.308308 -1.491002 2000-01-04 1.084036 0.555444 -0.272119 0.480111 2000-01-05 0.425682 0.025511 0.239162 -0.153290 2000-01-06 0.245094 0.671373 -0.725025 0.163310 2000-01-07 0.288030 -0.259337 -1.183515 0.473191 2000-01-08 0.162317 -0.771884 -0.285564 -0.692001 2000-01-09 1.147156 -0.302900 0.380851 -0.607976 2000-01-10 0.600216 0.885614 0.569808 -1.110113
視窗函式主要用於透過平滑曲線在圖形上查詢資料中的趨勢。如果日常資料變化很大並且有大量資料點可用,則獲取樣本並繪製圖形是一種方法,而應用視窗計算並在結果上繪製圖形是另一種方法。透過這些方法,我們可以平滑曲線或趨勢。