0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

データ分析の一歩目(データ数、テーブル表示、欠損値)

Last updated at Posted at 2020-05-09

データ分析の初めの一歩目、データの様子見&前処理(今回は様子見メイン)
kaggleの勉強用コンペであるHouse Prices: Advanced Regression Techniquesのデータを用いる。
家のデータあれこれから価格予想してねってお題。
House Prices: Advanced Regression Techniques

データの中身チェック

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

どんなデータが入ってるかチェック

!ls ../input/house-prices-advanced-regression-techniques

↓↓↓

data_description.txt  sample_submission.csv  test.csv  train.csv

train.csvが訓練用データ
test.csvがテスト用のデータ
sample_submission.csvがこんな感じで答えを提出してねっていう例示
data_description.txtが各カラムの説明

次に pd.read_csvで各csvファイルをpandas.DataFrameとして読み込み

TEST_PATH = "../input/house-prices-advanced-regression-techniques/test.csv"
TRAIN_PATH = "../input/house-prices-advanced-regression-techniques/train.csv"
SUBMISSION_PATH = "../input/house-prices-advanced-regression-techniques/sample_submission.csv"

test_data = pd.read_csv(TEST_PATH)
train_data = pd.read_csv(TRAIN_PATH)
sample_submission = pd.read_csv(SUBMISSION_PATH)

訓練データの中身を試しに見てみよう。
テーブル先頭5件を以下で表示

train_data.head()

↓↓↓


	Id	MSSubClass	MSZoning	LotFrontage	LotArea	Street	Alley	LotShape	...	MiscFeature	MiscVal	MoSold	YrSold	SaleType	SaleCondition	SalePrice
0	1	60	        RL	        65.0	    8450	Pave	NaN  	Reg	        ... NaN	        0	    2	    2008	WD	        Normal	        208500
1	2	20	        RL	        80.0	    9600	Pave	NaN	    Reg	        ... NaN	        0	    5	    2007	WD	        Normal	        181500
2	3	60	        RL	        68.0	    11250	Pave	NaN 	IR1	        ... NaN	        0	    9	    2008	WD	        Normal	        223500
3	4	70	        RL	        60.0	    9550	Pave	NaN 	IR1	        ... NaN	        0	    2	    2006	WD	        Abnorml	        140000
4	5	60	        RL	        84.0	    14260	Pave	NaN 	IR1	        ... NaN	        0	    12	    2008	WD	        Normal	        250000
5 rows × 81 columns

81カラムもあるようです。いっぱい。
因みにテストデータにはSalePriceが抜けています。SalePriceを予想してねってお題ですから。

さて、先頭5件だけ確認しましたが、全部でどれだけあるのでしょうか。

print(len(train_data), len(test_data))
1460 1459

なるほど、1460行と81列で訓練データは構成されているのだなと分かるわけです。

欠損値の確認

これでデータ数の把握が出来ました。先ほどのテーブルを見ると、なにやら欠損値(NaNや空白)が散見されます。全体の欠損値が合計どれだけあるのか確認でもしてみましょう。

isnull()で欠損値があるかどうかを判定し(bool型で返す、つまりTrue False)、
sum()True=1``False=0として欠損値の合計個数を算出、
count()で欠損値でないものを数える処理を意味しています。


total = train_data.isnull().sum().sort_values(ascending=False)
percent = (train_data.isnull().sum()/train_data.isnull().count()).sort_values(ascending=False)
missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])
missing_data.head(20)

↓↓↓


	         Total	Percent
PoolQC	     1453	0.995205
MiscFeature	 1406	0.963014
Alley	     1369	0.937671
Fence	     1179	0.807534
FireplaceQu	 690	0.472603
LotFrontage	 259	0.177397
GarageCond	 81	    0.055479
GarageType	 81	    0.055479
GarageYrBlt	 81	    0.055479
GarageFinish 81 	0.055479
GarageQual	 81 	0.055479
BsmtExposure 38 	0.026027
BsmtFinType2 38 	0.026027
BsmtFinType1 37 	0.025342
BsmtCond	 37 	0.025342
BsmtQual	 37 	0.025342
MasVnrArea	 8  	0.005479
MasVnrType	 8  	0.005479
Electrical	 1  	0.000685
Utilities	 0  	0.000000

さて、欠損値に対して考えられる処理は、欠損値を何か違う値で埋め込むor欠損値を含む行または列を削除してしまうことです。例えば、一番上のPoolQCの行を見てみれば欠損値の割合がなんと99%なので、以下のようにして列を消してしまいましょう。

train_data = train_data.drop('PoolQC',axis=1)

本当に消えているか、先ほどのようにして欠損値のチェックすると


	         Total	Percent
MiscFeature	 1406	0.963014
Alley	     1369	0.937671
Fence	     1179	0.807534
FireplaceQu	 690	0.472603
LotFrontage	 259	0.177397
GarageCond	 81	    0.055479
GarageType	 81	    0.055479
GarageYrBlt	 81	    0.055479
GarageFinish 81 	0.055479
GarageQual	 81 	0.055479
BsmtExposure 38 	0.026027
BsmtFinType2 38 	0.026027
BsmtFinType1 37 	0.025342
BsmtCond	 37 	0.025342
BsmtQual	 37 	0.025342
MasVnrArea	 8  	0.005479
MasVnrType	 8  	0.005479
Electrical	 1  	0.000685
Utilities	 0  	0.000000

確かに一番上の行が消えてますね。
さて、データフレームばかりでなく、今度はグラフを使って様子を見てみましょう。
(そのためにmatplotlib.pyplotとseabornをインポートしてました。)

長くなったので次回に!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?