如何使用 seaborn 处理缺失数据?

pythonseaborndata visualization

Seaborn 主要是一个可视化库,不提供处理缺失数据的直接方法。但是,Seaborn 可以与 pandas 无缝协作,pandas 是 Python 中流行的数据处理库,它提供了强大的工具来处理缺失数据,然后我们可以使用 Seaborn 来可视化清理后的数据。

通过将 pandas 处理缺失数据的数据处理功能与 Seaborn 的可视化功能相结合,我们可以清理数据并创建有意义的可视化效果,以从数据集中获取见解。

以下是有关如何使用 pandas 处理缺失数据以及如何使用 Seaborn 可视化清理后的数据的分步指南

导入必要的库

首先,我们必须在 Python 工作环境中导入所有必需的库。

import seaborn as sns
import pandas as pd

将数据集加载/创建到 pandas DataFrame 中

现在我们可以创建数据集通过使用 DataFrame() 函数,或者我们可以使用 pandas 库的 read_csv() 函数加载数据集。在本文中,我们将使用 DataFrame() 函数创建自己的数据集。

示例

import seaborn as sns
import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
res = df.head()

print(res)

输出

      Name  Age  Salary
0    Alice   25   50000
1      Bob   30   60000
2  Charlie   35   70000

识别缺失数据

Pandas 提供了识别 DataFrame 中缺失数据的方法。'isnull()' 函数返回与输入形状相同的 DataFrame,其中数据缺失时为'True',数据存在时为'False'。

由于我们的数据集中没有缺失值,因此数据集的所有行都将显示 False。

示例

import seaborn as sns
import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
missing_data = df.isnull()
res = missing_data.head()

print(res)

我们还可以使用其他方法,例如'info()'或'describe()'来获取 DataFrame 中缺失数据的摘要。

输出

    Name    Age  Salary
0  False  False   False
1  False  False   False
2  False  False   False

处理缺失数据

一旦我们确定了缺失数据,我们就可以根据我们的数据和我们想要执行的分析来选择如何处理它。处理缺失数据的一些常见方法如下。

删除缺失数据

如果缺失数据相对较小且不影响整体分析,我们可以使用"dropna()"方法删除包含缺失数据的行或列。

示例

import seaborn as sns
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
missing_data = df.isnull()
res = missing_data.head()
df_cleaned = df.dropna() #删除行
df_cleaned = df.dropna(axis=1) #删除列

插入缺失数据

如果缺失数据很重要,删除它会导致有价值的信息丢失,我们可以用合理的估计值插入或填充缺失值。Pandas 提供了各种插入方法,例如使用平均值、中位数、众数或自定义值。

示例

import seaborn as sns
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
missing_data = df.isnull()
res = missing_data.head()
df_cleaned = df.dropna() #删除行
df_cleaned = df.dropna(axis=1) #删除列
# 用平均值填补缺失值
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 用自定义值填补缺失值
df['Age'].fillna('N/A', inplace=True)
print(df.head())

输出

      Name  Age  Salary
0    Alice   25   50000
1      Bob   30   60000
2  Charlie   35   70000

scikit-learn 等库中提供了更高级的插补技术,我们可以将其与 pandas 结合使用来处理缺失数据。

使用 Seaborn 可视化清理后的数据

处理完缺失数据后,我们可以使用 Seaborn 可视化清理后的数据。Seaborn 提供了多种绘图函数,可以接受 pandas DataFrames 作为输入。例如,当我们想要在处理缺失数据后创建分类变量的条形图时,可以使用下面的代码行。

示例

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

data = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
missing_data = df.isnull()
res = missing_data.head()
df_cleaned = df.dropna() #删除行
df_cleaned = df.dropna(axis=1) #删除列
# 用平均值填补缺失值
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 用自定义值填补缺失值
df['Age'].fillna('N/A', inplace=True)
print(df.head())

sns.countplot(x='Salary', data=df_cleaned)
plt.show()

输出

我们可以使用各种 Seaborn 绘图函数来探索和可视化我们清理过的数据,从而让我们获得洞察力并有效地传达我们的发现。


相关文章