#初めに
データ分析をする上で大切なことの1つが、データの内容の確認です。今回は、非エンジニアでもできる、欠損値の確認方法について紹介します。
#データセットの読み込み
pandasをimportしてデータセットを読み込みます。今回は、kaggleのHouse Prices: Advanced Regression Techniquesのtrain.csvのデータを使用します。
House Prices: Advanced Regression Techniques
https://www.kaggle.com/c/house-prices-advanced-regression-techniques
import pandas as pd
data = pd.read_csv('../train.csv')
#欠損値が多い項目から表示
dfに確認したいデータをセットします。今回の場合は上記でセットしたtrain.csvを見ていきます。
#欠損値の確認方法
df=data #dfにデータセットを登録
total = df.isnull().sum()
percent = round(df.isnull().sum()/df.isnull().count()*100,2)
missing_data = pd.concat([total,percent],axis =1, keys=['Total','Ratio_of_NA(%)'])
type=pd.DataFrame(df[missing_data.index].dtypes, columns=['Types'])
missing_data=pd.concat([missing_data,type],axis=1)
missing_data=missing_data.sort_values('Total',ascending=False)
missing_data.head(20)
print(missing_data.head(20))
print()
print(set(missing_data['Types']))
print()
print("---Categorical col---")
print(missing_data[missing_data['Types']=="object"].index)
print()
print("---Numerical col---")
print(missing_data[missing_data['Types'] !="object"].index)
#欠損値の可視化
上のコードを使えば、欠損値の割合がわかります。しかし時系列のデータセットなど、どこに欠損値があるか
を知りたい時があります。そのような場合は、heatmapを使います。
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
df = data
plt.figure(figsize=(16,16)) #サイズ調整
plt.title("Missing Value") #タイトル
sns.heatmap(df.isnull(), cbar=False) #ヒートマップ表示
#まとめ
各コードのdfに様々なデータセットを登録すると、自動的に、各列がテキスト型か、数値型かの判定と、欠損値可視化ができます。