Pandas – 填补分类数据中的NaN

Pandas – 填补分类数据中的NaN

现实世界中的数据充满了缺失值。为了对其进行处理,我们需要对这些缺失的数值进行估算,并从中得出有意义的结论。在这篇文章中,我们将讨论如何填补分类数据中的NaN值。在分类特征的情况下,我们不能使用统计学的归因方法。

让我们首先创建一个样本数据集,了解填补缺失值的方法。

# import modules
import numpy as np
import pandas as pd
 
# create dataset
data = {'Id': [1, 2, 3, 4, 5, 6, 7, 8],
         
        'Gender': ['M', 'M', 'F', np.nan,
                   np.nan, 'F', 'M', 'F'],
         
        'Color': [np.nan, "Red", "Blue",
                  "Red", np.nan, "Red",
                  "Green", np.nan]}
 
# convert to data frame
df = pd.DataFrame(data)
display(df)

输出:

Pandas - 填补分类数据中的NaN

为了填补分类特征中的缺失值,我们可以采用下面提到的任何一种方法。

方法1:用最多出现的类别进行填充

填补这些缺失值的一个方法是用最常见的或出现过的类来代替它们。我们可以通过使用value_counts()方法来确定最常见类的索引来做到这一点。让我们来看看这个例子是如何工作的。

# filling with most common class
df_clean = df.apply(lambda x: x.fillna(x.value_counts().index[0]))
df_clean

输出:

Pandas - 填补分类数据中的NaN

方法2:用未知类填充

有时,缺失的信息本身是有价值的,用最常见的类来归纳它并不合适。在这种情况下,我们可以使用fillna()方法用 “未知 “或 “缺失 “这样的值来替换它们。让我们来看看这个例子–

# filling with Unknown class
df_clean = df.fillna("Unknown")
df_clean

输出:

Pandas - 填补分类数据中的NaN

方法3:使用sklearn-pandas库的分类输入法

我们有scikit learn imputer,但它只对数字数据起作用。所以我们有sklearn_pandas,它的转化器与之相当,可以对字符串数据起作用。它用该列中最频繁的值来替换缺失值。让我们看一个替换 “颜色 “列的NaN值的例子 —

# using sklearn-pandas package
from sklearn_pandas import CategoricalImputer
 
# handling NaN values
imputer = CategoricalImputer()
data = np.array(df['Color'], dtype=object)
imputer.fit_transform(data)

输出:

Pandas - 填补分类数据中的NaN

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程