如何在 Python 中处理分类变量的缺失值?
缺失值是现实世界数据集中的常见现象,正确处理它们对于准确的数据分析和演示至关重要。在 Python 中处理所有因素时,有几种方法可以解决缺失值问题。在本文中,我们将探讨两种有效的方法来处理完整因素的缺失值,并为每种方法提供详细的计算。此外,我们将引入真实且可执行的 Python 代码指南来展示这些策略的执行。
语法
让我们熟悉我们将要使用的方法的语法 -
# 使用 method_name 填充缺失值的语法 dataframe['column_name'].fillna(method_name, inplace=True)
算法
步骤 1 - 导入必要的库
步骤 2 - 加载数据
步骤 3 - 识别缺失值
步骤 4 - 处理缺失值
步骤5 - 验证缺失值
步骤 6 - 进行进一步分析
Dataset Taken
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 # 加载数据集 data = pd.read_csv('your_dataset.csv') # 识别具有缺失值的列 column_with_missing_values = 'Country' # 计算模式 mode_value = data[column_with_missing_values].mode()[0] # 用模式填充缺失值 data[column_with_missing_values].fillna(mode_value, inplace=True) # 验证更改 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 # 加载数据集 data = pd.read_csv('your_dataset.csv') # 识别缺失值的列 column_with_missing_values = 'Gender' # 为缺失值生成随机索引 missing_indices = data[data[column_with_missing_values].isnull()].index # 获取列中的唯一类别 unique_categories = data[column_with_missing_values].unique() # 用随机抽样替换缺失值 data.loc[missing_indices, column_with_missing_values] = np.random.choice(unique_categories, len(missing_indices)) # 验证更改 print(data[column_with_missing_values].isnull().sum())
输出
0
解释
随机抽样是处理分类变量中缺失值的另一种方法。这种方法不是用众数来估算缺失值,而是用从列中现有唯一类别中随机抽样的类别替换缺失值。下面是这种运作方式的明确说明 -
识别具有缺失值的绝对列 - 首先识别数据集中包含缺失值的列。这些部分将成为随机检查过程的焦点。
为缺失值生成随机记录 - 接下来,创建与绝对列中缺失值相关的随机列表。这可以利用库来实现,例如 numpy。
在列中创建唯一类别列表 - 提取具有缺失值的分类列中存在的唯一类别。此列表将用于随机抽样。
用随机抽样替换缺失值 - 使用随机索引和唯一类别列表,通过从列表中随机抽样类别来替换分类列中的缺失值。这可以使用 fillna() 方法完成,将随机抽样的类别分配给指定索引处的缺失值。
随机抽样提供了一种灵活的方法来处理分类变量中的缺失值。通过随机分配类别,它允许估算值的变化,并避免引入可能因使用模式估算而产生的偏差。但是,重要的是要考虑到随机抽样可能会改变列中类别的分布,从而可能影响后续的分析或建模任务。此外,与模式插补一样,每个有缺失值的列都应单独处理。
模式插补和随机抽样都提供了处理分类变量中缺失值的可行方法。两者之间的选择取决于数据集的特定属性和调查的目的。在做出选择之前,评估每种方法对信息可信度和可靠性的可能影响是至关重要的。
结论
处理缺失值是信息预处理的一个基本阶段,在 Python 中使用绝对因子时,可以使用两种强大的方法 - 模式归因和随机检查。模式插补方法用最常见的类别填充缺失值,而随机抽样方法用从现有唯一类别中随机选择的类别替换缺失值。通过利用这些方法,数据分析师和数据科学家可以确保其分类数据的完整性和准确性。请记住调整这些技术以适合您的特定数据集,并始终评估所选方法对您的分析的影响。