
- NumPy 教程
- NumPy - 首頁
- NumPy - 簡介
- NumPy - 環境
- NumPy 陣列
- NumPy - Ndarray 物件
- NumPy - 資料型別
- NumPy 建立和運算元組
- NumPy - 陣列建立例程
- NumPy - 陣列操作
- NumPy - 從現有資料建立陣列
- NumPy - 從數值範圍建立陣列
- NumPy - 遍歷陣列
- NumPy - 重塑陣列
- NumPy - 連線陣列
- NumPy - 堆疊陣列
- NumPy - 分割陣列
- NumPy - 展平陣列
- NumPy - 轉置陣列
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高階索引
- NumPy 陣列屬性和操作
- NumPy - 陣列屬性
- NumPy - 陣列形狀
- NumPy - 陣列大小
- NumPy - 陣列步長
- NumPy - 陣列元素大小
- NumPy - 廣播
- NumPy - 算術運算
- NumPy - 陣列加法
- NumPy - 陣列減法
- NumPy - 陣列乘法
- NumPy - 陣列除法
- NumPy 高階陣列操作
- NumPy - 交換陣列軸
- NumPy - 位元組交換
- NumPy - 副本和檢視
- NumPy - 元素級陣列比較
- NumPy - 過濾陣列
- NumPy - 連線陣列
- NumPy - 排序、搜尋和計數函式
- NumPy - 搜尋陣列
- NumPy - 陣列的並集
- NumPy - 查詢唯一行
- NumPy - 建立日期時間陣列
- NumPy - 二元運算子
- NumPy - 字串函式
- NumPy - 數學函式
- NumPy - 統計函式
- NumPy - 矩陣庫
- NumPy - 線性代數
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 繪製直方圖
- NumPy - NumPy 的 I/O
- NumPy 排序和高階操作
- NumPy - 排序陣列
- NumPy - 沿軸排序
- NumPy - 使用花式索引排序
- NumPy - 結構化陣列
- NumPy - 建立結構化陣列
- NumPy - 操作結構化陣列
- NumPy - 欄位訪問
- NumPy - 記錄陣列
- Numpy - 載入陣列
- Numpy - 儲存陣列
- NumPy - 將值追加到陣列
- NumPy - 交換陣列的列
- NumPy - 向陣列插入軸
- NumPy 處理缺失資料
- NumPy - 處理缺失資料
- NumPy - 識別缺失值
- NumPy - 刪除缺失資料
- NumPy - 填充缺失資料
- NumPy 效能最佳化
- NumPy - 使用陣列進行效能最佳化
- NumPy - 使用陣列進行向量化
- NumPy - 陣列的記憶體佈局
- Numpy 線性代數
- NumPy - 線性代數
- NumPy - 矩陣庫
- NumPy - 矩陣加法
- NumPy - 矩陣減法
- NumPy - 矩陣乘法
- NumPy - 元素級矩陣運算
- NumPy - 點積
- NumPy - 矩陣求逆
- NumPy - 行列式計算
- NumPy - 特徵值
- NumPy - 特徵向量
- NumPy - 奇異值分解
- NumPy - 求解線性方程組
- NumPy - 矩陣範數
- NumPy 元素級矩陣運算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位數
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合運算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 並集
- NumPy - 差集
- NumPy 有用資源
- NumPy 編譯器
- NumPy - 快速指南
- NumPy - 有用資源
- NumPy - 討論
NumPy - 處理缺失資料
處理陣列中的缺失資料
處理缺失資料是資料分析和處理中常見的一個挑戰。陣列中的缺失資料可能由於各種原因而產生,例如資料收集不完整、資料輸入錯誤或故意省略。
在 NumPy 和資料分析中,處理缺失值涉及有效地識別、處理和處理它們,以確保資料完整性和準確的結果。
識別缺失資料
為了處理缺失資料,第一步是識別它。在 NumPy 中,缺失值通常在浮點陣列中表示為 np.nan。您可以使用特定的函式,例如 **np.isnan()** 來檢測這些缺失值。
示例
在下面的示例中,我們建立了一個包含由 **np.nan** 表示的缺失值的陣列。然後,我們使用 np.isnan() 函式建立一個掩碼來識別這些缺失值 -
import numpy as np # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Checking for missing values is_nan = np.isnan(arr) print("Array with Missing Values:\n", arr) print("Missing Value Mask:\n", is_nan)
以下是獲得的輸出 -
Array with Missing Values: [ 1. 2. nan 4. nan 6.] Missing Value Mask: [False False True False True False]
刪除缺失資料
刪除缺失資料涉及消除資料集中資料缺失的部分。
在 NumPy 中,您可以使用 **布林索引** 從陣列中排除 **NaN** 值。例如,建立一個識別缺失值的掩碼,然後使用它來過濾掉這些值。
示例
在這個例子中,我們從一個包含由“np.nan”表示的缺失值的陣列開始。然後,我們使用布林索引刪除這些缺失值,使用 np.isnan() 函式過濾掉 np.nan 條目 -
import numpy as np # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Removing missing values cleaned_arr = arr[~np.isnan(arr)] print("Original Array:\n", arr) print("Array with Missing Values Removed:\n", cleaned_arr)
這將產生以下結果 -
Original Array: [ 1. 2. nan 4. nan 6.] Array with Missing Values Removed: [1. 2. 4. 6.]
替換缺失資料
替換缺失資料意味著用替代值填充資料缺失的地方。在 NumPy 中,您可以使用 **np.nan_to_num()** 函式用特定數字(例如零或其他值的平均值)替換 **NaN** 值。以下是語法 -
numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)
其中,
- **x:** 包含 NaN 值、無窮大或其他數值的輸入陣列。
- **copy:** 一個布林值,指示是否要建立陣列的副本(預設為 True)。如果為 False,則操作可能會就地執行。
- **nan:** 用於替換 NaN 值的值。預設為 0.0。
- **posinf:** 用於替換正無窮大 (inf) 的值。如果未指定,則預設為一個非常大的數字。
- **neginf:** 用於替換負無窮大 (-inf) 的值。如果未指定,則預設為一個非常小的(負)數字。
示例
在下面的示例中,我們建立了一個包含由“np.nan”表示的缺失值的陣列。然後,我們使用 np.nan_to_num() 函式將這些缺失值替換為零,該函式用指定的值填充 np.nan 條目 -
import numpy as np # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Replacing missing values with zero filled_arr = np.nan_to_num(arr, nan=0) print("Original Array:\n", arr) print("Array with Missing Values Replaced:\n", filled_arr)
以下是上述程式碼的輸出 -
Original Array: [ 1. 2. nan 4. nan 6.] Array with Missing Values Replaced: [1. 2. 0. 4. 0. 6.]
插值缺失資料
插值缺失資料涉及根據周圍資料估計和填充資料集中缺失的值。
插值不是用像平均值這樣的常數替換缺失值,而是透過分析資料中的趨勢或模式來預測缺失值應該是什麼。
例如,如果“4”和“8”之間缺少一個值,則插值可能會將其估計為“6”。
示例
在下面的示例中,我們透過使用 SciPy 中的“interp1d”應用線性插值來處理包含缺失值 (np.nan) 的陣列。此函式根據非缺失資料估計和填充缺失值,從而產生一個完整的陣列 -
import numpy as np from scipy.interpolate import interp1d # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Creating an index array indices = np.arange(len(arr)) # Creating a mask for non-missing values mask = ~np.isnan(arr) # Performing linear interpolation interp_func = interp1d(indices[mask], arr[mask], kind='linear', fill_value='extrapolate') filled_arr = interp_func(indices) print("Original Array:\n", arr) print("Array with Interpolated Missing Values:\n", filled_arr)
獲得的輸出如下所示 -
Original Array: [ 1. 2. nan 4. nan 6.] Array with Interpolated Missing Values: [1. 2. 3. 4. 5. 6.]