Python 中如何處理分類變數的缺失值?


缺失值是真實世界資料集中的常見現象,正確處理它們對於準確的資料分析和建模至關重要。在處理 Python 中的分類變數時,有多種方法可以解決缺失值。在本文中,我們將探討兩種處理分類變數缺失值的有效技術,併為每種方法提供分步演算法。此外,我們將提供真實且可執行的 Python 程式碼示例來演示這些技術的實現。

語法

讓我們熟悉一下我們將使用的演算法的語法 -

# Syntax for filling missing values using method_name
dataframe['column_name'].fillna(method_name, inplace=True)

演算法

  • 步驟 1 - 匯入必要的庫

  • 步驟 2 - 載入資料

  • 步驟 3 - 識別缺失值

  • 步驟 4 - 處理缺失值

  • 步驟 5 - 驗證缺失值

  • 步驟 6 - 執行進一步分析

資料集

Name,Age,Gender,Country
John,25,Male,USA
Alice,30,Female,Canada
Bob,35,Male,
Jane,27,
Mike,22,Male,Germany

方法 1:眾數插補

識別資料集中包含缺失值的分類列。

使用 mode() 函式計算相應列的眾數(最常出現的值)。

使用 fillna() 方法將計算出的眾數填充缺失值,並將 method_name 引數設定為 'mode'。

示例

import pandas as pd

# Load the dataset
data = pd.read_csv('your_dataset.csv')

# Identify the column(s) with missing values
column_with_missing_values = 'Country'

# Compute the mode
mode_value = data[column_with_missing_values].mode()[0]

# Fill the missing values with mode
data[column_with_missing_values].fillna(mode_value, inplace=True)

# Verify the changes
print(data[column_with_missing_values].isnull().sum())

輸出

0

解釋

眾數插補是處理分類變數缺失值的一種常用方法。它涉及使用眾數填充缺失值,眾數表示該列中最常出現的類別。以下是此方法的工作原理的詳細說明 -

識別資料集中包含缺失值的分類列 - 首先,您需要識別存在缺失值的列。這些列將成為眾數插補過程的重點。

使用 mode() 函式計算各個列的眾數 - 識別出包含缺失值的列後,您可以使用 mode() 函式計算每一列的眾數。眾數表示在該列中最常出現的類別。

使用 fillna() 方法將計算出的眾數填充缺失值 - 確定眾數後,您可以繼續使用計算出的眾數填充分類列中的缺失值。這可以透過 Python 中的 fillna() 方法實現,將 method_name 引數指定為 'mode'。透過設定 inplace=True,更改將直接應用於資料集。

眾數插補是一種簡單直觀的方法,用於處理分類變數中的缺失值。透過用最常出現的類別填充缺失值,它確保了該列中類別的總體分佈保持相對不變。但是,必須注意,如果缺失值不是隨機缺失,則此方法可能會引入偏差。此外,在有多個包含缺失值的列的情況下,應分別處理每個列。

方法 2:隨機取樣

  • 識別包含缺失值的分類列。

  • 使用 numpy 庫生成對應於缺失值的隨機索引。

  • 使用 unique() 函式建立該列中唯一類別的列表。

  • 使用 fillna() 方法用從列表中隨機取樣的類別替換缺失值。

示例

import pandas as pd
import numpy as np

# Load the dataset
data = pd.read_csv('your_dataset.csv')

# Identify the column with missing values
column_with_missing_values = 'Gender'

# Generate random indices for missing values
missing_indices = data[data[column_with_missing_values].isnull()].index

# Get unique categories in the column
unique_categories = data[column_with_missing_values].unique()

# Replace missing values with random sampling
data.loc[missing_indices, column_with_missing_values] = np.random.choice(unique_categories, len(missing_indices))

# Verify the changes
print(data[column_with_missing_values].isnull().sum())

輸出

0

解釋

隨機取樣是處理分類變數缺失值的另一種方法。此方法不是用眾數插補缺失值,而是用從該列中現有唯一類別中隨機取樣的類別替換缺失值。以下是此方法的工作原理的詳細說明 -

識別包含缺失值的分類列 - 從識別資料集中包含缺失值的列開始。這些是將成為隨機取樣過程重點的列。

生成缺失值的隨機索引 - 接下來,為分類列中的缺失值生成隨機索引。這可以使用 numpy 等庫來實現。

建立該列中唯一類別的列表 - 提取包含缺失值的分類列中存在的唯一類別。此列表將用於隨機取樣。

用隨機取樣替換缺失值 - 使用隨機索引和唯一類別的列表,透過從列表中隨機取樣類別來替換分類列中的缺失值。這可以透過 fillna() 方法完成,將隨機取樣的類別分配給指定索引處的缺失值。

隨機取樣提供了一種靈活的方法來處理分類變數中的缺失值。透過隨機分配類別,它允許插補值具有可變性,並避免引入可能因使用眾數插補而產生的偏差。但是,重要的是要注意,隨機取樣可能會更改該列中類別的分佈,從而可能影響後續的分析或建模任務。此外,與眾數插補一樣,應分別處理每個包含缺失值的列。

眾數插補和隨機取樣都提供了處理分類變數缺失值的有效方法。兩種方法之間的選擇取決於資料集的具體特徵和分析的目標。在做出決定之前,評估每種方法對資料完整性和可靠性的潛在影響至關重要。

結論

處理缺失值是資料預處理中的一個重要步驟,並且在處理 Python 中的分類變數時,可以使用兩種有效的方法 - 眾數插補和隨機取樣。眾數插補方法用最常出現的類別填充缺失值,而隨機取樣方法用從現有唯一類別中隨機選擇的類別替換缺失值。透過使用這些方法,資料分析師和資料科學家可以確保分類資料的完整性和準確性。請記住,根據您的特定資料集調整這些技術,並始終評估所選方法對分析的影響。

更新於: 2023-07-27

3K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.