
- Python Pandas 教程
- Python Pandas - 首頁
- Python Pandas - 簡介
- Python Pandas - 環境設定
- Python Pandas - 基礎
- Python Pandas - 資料結構介紹
- Python Pandas - 索引物件
- Python Pandas - 面板
- 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 - 填充缺失資料
填充缺失資料是一個用有意義的替代方案替換缺失 (NaN) 值的過程。無論您是想用常量值替換缺失值,還是向前或向後傳播值,Pandas 都內建了函式來實現這一點。
在本教程中,我們將學習在 Pandas 中填充缺失資料的不同方法,包括:
用標量替換缺失值。
向前和向後填充。
使用指定的限制進行填充。
使用 replace() 方法替換資料。
使用正則表示式替換值。
用標量值填充缺失資料
Pandas 中的 fillna() 方法用於用標量值(例如任何特定數字)填充缺失值 (NA 或 NaN)。
示例
以下演示瞭如何使用 fillna() 方法用標量值(“NaN” 為 “5”)填充缺失值 NaN。
import pandas as pd import numpy as np # Create DataFrame with missing values data = {"Col1": [3, np.nan, np.nan, 2], "Col2": [1.0, pd.NA, pd.NA, 2.0]} df = pd.DataFrame(data) # Display the original DataFrame with missing values print("Original DataFrame:\n",df) # Fill missing values with 5 df_filled = df.fillna(5) print("\nResultant DataFrame after NaN replaced with '5':\n", df_filled)
其輸出如下:
Original DataFrame:
Col1 | Col2 | |
---|---|---|
0 | 3.0 | 1.0 |
1 | NaN | <NA> |
2 | NaN | <NA> |
3 | 2.0 | 2.0 |
Col1 | Col2 | |
---|---|---|
0 | 3.0 | 1.0 |
1 | 5.0 | 5.0 |
2 | 5.0 | 5.0 |
3 | 2.0 | 2.0 |
向前或向後填充缺失值
您還可以分別使用 ffill() 和 bfill() 方法傳播最後一個有效觀測值以向前或向後填充間隙。
序號 | 方法和操作 |
---|---|
1 |
ffill() 此方法用前一個有效值填充缺失值。 |
2 |
bfill() 此方法用下一個有效值填充缺失值。 |
示例:向前填充
此示例使用向前填充 ffill() 方法替換缺失值。
import pandas as pd import numpy as np # Create DataFrame with missing values df = pd.DataFrame([[9, -3, -2], [-5, 1, 8], [6, 4, -8]], index=['a', 'c', 'd'], columns=['one', 'two', 'three']) df = df.reindex(['a', 'b', 'c', 'd', 'e']) # Display the original DataFrame with missing values print("Original DataFrame:\n",df) # Forward Fill the missing values result = df.ffill() print("\nResultant DataFrame after Forward fill:\n", result)
其輸出如下:
Original DataFrame:
one | two | three | |
---|---|---|---|
a | 9.0 | -3.0 | -2.0 |
b | NaN | NaN | NaN |
c | -5.0 | 1.0 | 8.0 |
d | 6.0 | 4.0 | -8.0 |
e | NaN | NaN | NaN |
one | two | three | |
---|---|---|---|
a | 9.0 | -3.0 | -2.0 |
b | 9.0 | -3.0 | -2.0 |
c | -5.0 | 1.0 | 8.0 |
d | 6.0 | 4.0 | -8.0 |
e | 6.0 | 4.0 | -8.0 |
示例:向後填充
此示例使用向後填充 bfill() 方法替換缺失值。
import pandas as pd import numpy as np # Create DataFrame with missing values df = pd.DataFrame([[9, -3, -2], [-5, 1, 8], [6, 4, -8]], index=['a', 'c', 'd'], columns=['one', 'two', 'three']) df = df.reindex(['a', 'b', 'c', 'd', 'e']) # Display the original DataFrame with missing values print("Original DataFrame:\n",df) # Backward Fill the missing values result = df.bfill() print("\nResultant DataFrame after Backward fill:\n", result)
其輸出如下:
Original DataFrame:
one | two | three | |
---|---|---|---|
a | 9.0 | -3.0 | -2.0 |
b | NaN | NaN | NaN |
c | -5.0 | 1.0 | 8.0 |
d | 6.0 | 4.0 | -8.0 |
e | NaN | NaN | NaN |
one | two | three | |
---|---|---|---|
a | 9.0 | -3.0 | -2.0 |
b | -5.0 | 1.0 | 8.0 |
c | -5.0 | 1.0 | 8.0 |
d | 6.0 | 4.0 | -8.0 |
e | NaN | NaN | NaN |
限制填充次數
您還可以透過指定 limit 引數來控制填充多少個連續缺失值的限制。
示例
以下示例演示瞭如何使用 limit 引數使用 ffill() 方法設定填充缺失值的限制。
import pandas as pd import numpy as np # Create DataFrame with missing values df = pd.DataFrame([[9, -3, -2], [-5, 1, 8], [6, 4, -8]], index=['a', 'c', 'd'], columns=['one', 'two', 'three']) df = df.reindex(['a', 'b', 'd', 'e', 'f']) # Display the original DataFrame with missing values print("Original DataFrame:\n",df) # Forward Fill the missing values with limit result = df.ffill(limit=1) print("\nResultant DataFrame after Forward fill:\n", result)
以下是上述程式碼的輸出:
Original DataFrame:
one | two | three | |
---|---|---|---|
a | 9.0 | -3.0 | -2.0 |
b | NaN | NaN | NaN |
d | 6.0 | 4.0 | -8.0 |
e | NaN | NaN | NaN |
f | NaN | NaN | NaN |
one | two | three | |
---|---|---|---|
a | 9.0 | -3.0 | -2.0 |
b | 9.0 | -3.0 | -2.0 |
d | 6.0 | 4.0 | -8.0 |
e | 6.0 | 4.0 | -8.0 |
f | NaN | NaN | NaN |
使用 replace() 方法替換資料
很多時候,我們必須用一些特定值替換通用值。我們可以透過應用 replace() 方法來實現。
用標量值替換 NA 等效於 fillna() 函式的行為。
示例
以下是使用 replace() 方法替換通用值的示例。
import pandas as pd import numpy as np # Create DataFrame df = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]}) # Replace the generic values print(df.replace({1000:10,2000:60}))
其輸出如下:
one | two | |
---|---|---|
0 | 10 | 10 |
1 | 20 | 0 |
2 | 30 | 30 |
3 | 40 | 40 |
4 | 50 | 50 |
5 | 60 | 60 |
使用正則表示式替換缺失資料
您還可以使用正則表示式模式用 replace() 方法替換資料中的缺失值。
示例
以下是使用正則表示式用 replace() 方法替換特定資料的示例。
import pandas as pd import numpy as np # Create DataFrame with missing values df = pd.DataFrame({"a": list(range(4)), "b": list("ab.."), "c": ["a", "b", np.nan, "d"]}) # Display the original DataFrame with missing values print("Original DataFrame:\n",df) # Replace the missing values with regular exp result = df.replace(r"\.", 10, regex=True) print("\nResultant DataFrame after filling the missing values using regex:\n", result)
其輸出如下:
Original DataFrame:
a | b | c | |
---|---|---|---|
0 | 0 | a | a |
1 | 1 | b | b |
2 | 2 | . | NaN |
3 | 3 | . | d |
a | b | c | |
---|---|---|---|
0 | 0 | a | a |
1 | 1 | b | b |
2 | 2 | 10 | NaN |
3 | 3 | 10 | d |
廣告