Python 欠損値分析「pandas × missingno」

 本記事では、欠損値(NaNや空欄など)をグラフで可視化する「missingno」の雛形コードを載せました。はじめに、インストール方法は次の2通りです。
■pipの場合

pip install missingno

■Anacondaの場合

conda install -c conda-forge missingno

本記事で使用した例題は、機械学習で有名なタイタニックのデータセットです。

import pandas as pd
import missingno as msno

# データをpandasデータフレーム形式で読み込む
df = pd.read_csv('train.csv')
df

下図がそのデータで、891行×12列あります。f:id:HK29:20211108232025p:plain

pandas標準メソッドで、数値的に欠損を確認することができます。

# 各列の欠損数を調べる
df.isna().sum()

下図はその結果です。欠損値がAgeで177個、Cabinで687個あるとわかります。

f:id:HK29:20211108232525p:plain

また、非欠損数と列の型を調べることもできます。

# 各列の非欠損数と型を調べる
df.info()

下図はその結果です。各列の非欠損データ数と型がわかります。

f:id:HK29:20211108232737p:plain

数値型の列に対しては、基本統計量を算出できます。

# 各列の数値型列に対して、基本統計量を算出
df.describe().T

下図はその結果です。数、平均値、標準偏差、最小値、中央値、最大値などを出力します。

f:id:HK29:20211108233416p:plain

 

以降については、missingnoを用いてグラフ化する方法です。

■棒グラフ

# 棒グラフ
# 欠損列が視覚的にわかります。
msno.bar(df)

f:id:HK29:20211108233757p:plain

 

マトリックスプロット

# マトリックスプロット
# (時系列データがある場合に、)時系列の偏り有無を把握できる
msno.matrix(df)

f:id:HK29:20211108233842p:plain

 

■ヒートマップ

# ヒートマップ
# 欠損値同士に相関があるかを調べる。
# +1に近いほど正の相関が高い。-1に近いほど負の相関が高い。0に近いのは関連が薄い。
msno.heatmap(df)

f:id:HK29:20211108233919p:plain

 

■デンドログラム

# デンドログラム
# クラスタリングによって、欠損値と関連性のある列をグループ化する。
msno.dendrogram(df)

f:id:HK29:20211108234252p:plain

以上

<広告>