
- 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 - Timedelta
- Python Pandas - 稀疏資料結構
- Python Pandas - 稀疏資料
- Python Pandas - 資料視覺化
- Python Pandas - 資料視覺化
- Python Pandas - 其他概念
- Python Pandas - 注意事項和陷阱
- Python Pandas 有用資源
- Python Pandas - 快速指南
- Python Pandas - 有用資源
- Python Pandas - 討論
Python Pandas - 插值處理缺失值
插值是 Pandas 中一種強大的技術,用於處理資料集中的缺失值。此技術根據資料集的其他資料點估算缺失值。Pandas 為 DataFrame 和 Series 物件都提供了 **interpolate()** 方法,可以使用各種插值方法填充缺失值。
在本教程中,我們將學習 Pandas 中的 **interpolate()** 方法,使用不同的插值方法填充時間序列資料、數值資料等中的缺失值。
基本插值
DataFrame 和 Series 物件的 Pandas **interpolate()** 方法用於使用不同的插值策略填充缺失值。預設情況下,Pandas 自動使用線性插值作為預設方法。
示例
這是一個呼叫 **interpolate()** 方法填充缺失值的簡單示例。
import numpy as np import pandas as pd df = pd.DataFrame({"A": [1.1, np.nan, 3.5, np.nan, np.nan, np.nan, 6.2, 7.9], "B": [0.25, np.nan, np.nan, 4.7, 10, 14.7, 1.3, 9.2], }) print("Original DataFrame:") print(df) # Using the interpolate() method result = df.interpolate() print("\nResultant DataFrame after applying the interpolation:") print(result)
以下是上述程式碼的輸出 -
Original DataFrame:
A | B | |
---|---|---|
0 | 1.1 | 0.25 |
1 | NaN | NaN |
2 | 3.5 | NaN |
3 | NaN | 4.70 |
4 | NaN | 10.00 |
5 | NaN | 14.70 |
6 | 6.2 | 1.30 |
7 | 7.9 | 9.20 |
A | B | |
---|---|---|
0 | 1.100 | 0.250000 |
1 | 2.300 | 1.733333 |
2 | 3.500 | 3.216667 |
3 | 4.175 | 4.700000 |
4 | 4.850 | 10.000000 |
5 | 5.525 | 14.700000 |
6 | 6.200 | 1.300000 |
7 | 7.900 | 9.200000 |
不同的插值方法
Pandas 支援多種插值方法,包括線性、多項式、pchip、akima、spline 等。這些方法為根據資料的性質填充缺失值提供了靈活性。
示例
以下示例演示了使用 **interpolate()** 方法和 **barycentric** 插值技術。
import numpy as np import pandas as pd df = pd.DataFrame({"A": [1.1, np.nan, 3.5, np.nan, np.nan, np.nan, 6.2, 7.9], "B": [0.25, np.nan, np.nan, 4.7, 10, 14.7, 1.3, 9.2], }) print("Original DataFrame:") print(df) # Applying the interpolate() with Barycentric method result = df.interpolate(method='barycentric') print("\nResultant DataFrame after applying the interpolation:") print(result)
以下是上述程式碼的輸出 -
Original DataFrame:
i | A | B |
---|---|---|
0 | 1.1 | 0.25 |
1 | NaN | NaN |
2 | 3.5 | NaN |
3 | NaN | 4.70 |
4 | NaN | 10.00 |
5 | NaN | 14.70 |
6 | 6.2 | 1.30 |
7 | 7.9 | 9.20 |
A | B | |
---|---|---|
0 | 1.100000 | 0.250000 |
1 | 2.596429 | 57.242857 |
2 | 3.500000 | 24.940476 |
3 | 4.061429 | 4.700000 |
4 | 4.531429 | 10.000000 |
5 | 5.160714 | 14.700000 |
6 | 6.200000 | 1.300000 |
7 | 7.900000 | 9.200000 |
處理插值中的限制
預設情況下,Pandas 插值填充所有缺失值,但是您可以使用 **interpolate()** 方法的 **limit** 引數限制填充多少個連續的 NaN 值。
示例
以下示例演示了透過使用 **interpolate()** 方法的 **limit** 引數限制連續填充來填充 Pandas DataFrame 的缺失值。
import numpy as np import pandas as pd df = pd.DataFrame({"A": [1.1, np.nan, 3.5, np.nan, np.nan, np.nan, 6.2, 7.9], "B": [0.25, np.nan, np.nan, 4.7, 10, 14.7, 1.3, 9.2], }) print("Original DataFrame:") print(df) # Applying the interpolate() with limit result = df.interpolate(method='spline', order=2, limit=1) print("\nResultant DataFrame after applying the interpolation:") print(result)
以下是上述程式碼的輸出 -
Original DataFrame:
i | A | B |
---|---|---|
0 | 1.1 | 0.25 |
1 | NaN | NaN |
2 | 3.5 | NaN |
3 | NaN | 4.70 |
4 | NaN | 10.00 |
5 | NaN | 14.70 |
6 | 6.2 | 1.30 |
7 | 7.9 | 9.20 |
i | A | B |
---|---|---|
0 | 1.100000 | 0.250000 |
1 | 2.231383 | -1.202052 |
2 | 3.500000 | NaN |
3 | 4.111529 | 4.700000 |
4 | NaN | 10.000000 |
5 | NaN | 14.700000 |
6 | 6.200000 | 1.300000 |
7 | 7.900000 | 9.200000 |
時間序列資料的插值
插值也可以應用於 Pandas 時間序列資料。在填充隨時間推移缺失資料點的間隙時,這很有用。
示例
示例語句 -
import numpy as np import pandas as pd indx = pd.date_range("2024-01-01", periods=10, freq="D") data = np.random.default_rng(2).integers(0, 10, 10).astype(np.float64) s = pd.Series(data, index=indx) s.iloc[[1, 2, 5, 6, 9]] = np.nan print("Original Series:") print(s) result = s.interpolate(method="time") print("\nResultant Time Series after applying the interpolation:") print(result)
以下是上述程式碼的輸出 -
Original Series:
Date | Value |
---|---|
2024-01-01 | 8.0 |
2024-01-02 | NaN |
2024-01-03 | NaN |
2024-01-04 | 2.0 |
2024-01-05 | 4.0 |
2024-01-06 | NaN |
2024-01-07 | NaN |
2024-01-08 | 0.0 |
2024-01-09 | 3.0 |
2024-01-10 | NaN |
Date | Value |
---|---|
2024-01-01 | 8.000000 |
2024-01-02 | 6.000000 |
2024-01-03 | 4.000000 |
2024-01-04 | 2.000000 |
2024-01-05 | 4.000000 |
2024-01-06 | 2.666667 |
2024-01-07 | 1.333333 |
2024-01-08 | 0.000000 |
2024-01-09 | 3.000000 |
2024-01-10 | 3.000000 |
廣告