如何在 Python 中处理分类变量的缺失值?

pythonserver side programmingprogramming更新于 2024/1/11 14:59:00

缺失值是现实世界数据集中的常见现象,正确处理它们对于准确的数据分析和演示至关重要。在 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 中使用绝对因子时,可以使用两种强大的方法 - 模式归因和随机检查。模式插补方法用最常见的类别填充缺失值,而随机抽样方法用从现有唯一类别中随机选择的类别替换缺失值。通过利用这些方法,数据分析师和数据科学家可以确保其分类数据的完整性和准确性。请记住调整这些技术以适合您的特定数据集,并始终评估所选方法对您的分析的影响。


相关文章