如何使用seaborn處理缺失資料?


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() #this drops the rows
df_cleaned = df.dropna(axis=1) #this drops the columns

插補缺失資料

如果缺失資料很大,刪除它會導致有價值的資訊丟失,我們可以對缺失值進行插補或填充合理的估計值。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() #this drops the rows
df_cleaned = df.dropna(axis=1) #this drops the columns
# Impute missing values with mean
df['Age'].fillna(df['Age'].mean(), inplace=True)
# Impute missing values with custom value
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 DataFrame作為輸入。例如,當我們想要在處理完缺失資料後建立分類變數的條形圖時,可以使用下面的程式碼行。

示例

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() #this drops the rows
df_cleaned = df.dropna(axis=1) #this drops the columns
# Impute missing values with mean
df['Age'].fillna(df['Age'].mean(), inplace=True)
# Impute missing values with custom value
df['Age'].fillna('N/A', inplace=True)
print(df.head())

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

輸出

我們可以使用各種Seaborn繪圖函式來探索和視覺化清理後的資料,從而有效地獲得見解並傳達我們的發現。

更新於:2023年8月2日

瀏覽量:770

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告