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 中的分類變數時,可以使用兩種有效的方法 - 眾數插補和隨機取樣。眾數插補方法用最常出現的類別填充缺失值,而隨機取樣方法用從現有唯一類別中隨機選擇的類別替換缺失值。透過使用這些方法,資料分析師和資料科學家可以確保分類資料的完整性和準確性。請記住,根據您的特定資料集調整這些技術,並始終評估所選方法對分析的影響。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP