さて前回大量のカラムを雑に英訳しました。今回はそれらにざっと目を通して、使用するデータの決定と、それに伴う結合をやっていこうと思います。データ解析手順の3番に相当します。
- 明らかにしたい問いや、問題の定義
- 訓練およびテストデータの取得
- データの整形、作成、クレンジング
- パターンの分析、特定、また探索的にデータを分析する
- 問題のモデル化、予測、解決
- 問題解決のステップと最終的な解決方法を視覚化、報告
- 結果の提出
たくさんカラムありますが、その前にデータ中身をみてみようと思います。
#おさらいも兼ねて、データを読み込み
import pandas as pd
import numpy as np
import matplotlib as plt
import sklearn
train_df = pd.read_csv("application_train.csv")
test_df = pd.read_csv("application_test.csv")
bur = pd.read_csv("bureau.csv")
bur_b = pd.read_csv("bureau_balance.csv")
cd_b = pd.read_csv("credit_card_balance.csv")
ins_p = pd.read_csv("installments_payments.csv")
pos_c = pd.read_csv("POS_CASH_balance.csv")
prv_a = pd.read_csv("previous_application.csv")
#train_df, test_dfにおいてIDがユニークか確認。
print(train_df["SK_ID_CURR"].nunique())
print(train_df["SK_ID_CURR"].count())
print(test_df["SK_ID_CURR"].nunique())
print(test_df["SK_ID_CURR"].count())
実行結果はこちら。全カラムがIDでユニークとなっていることが確認できたので、基本的にはSK_ID_CURRをキーにして追加していけば特徴量を追加することができそうです。 307511 307511 48744 48744
続いて他のテーブルの構成も見ていきましょう。train_df, test_dfに正確に加えるためにはSK_ID_CURRごとにデータをまとめる必要があります。
bur(“bureau.csv”)
bur.head()で確認したところ、1つのSK_ID_CURRに対して、複数のSK_ID_BUREAUがくっついているようです。なのでまずはSK_ID_CURRをベースとして平均化すれば良さそうです。
bur_b(“bureau_balance.csv”)
SK_ID_BUREAU、MONTHS_BALANCE、STATUSからなるカラムですので、burにまずくっつけるべきのようです。MONTHS_BALANCEが複数並んでいるので、STATUSごとにカウントしたデータをくっつければ使えそうです。
cd_b (“credit_card_balance.csv”)
こちらも1つのSK_ID_CURRに対して複数のSK_ID_PREVがありますので、burと同様に平均やカウントで追加していくことになりそうです。
ins_p(“installments_payments.csv”)とpos_c(“POS_CASH_balance.csv”)、
prv_a(“previous_application.csv”)も同様ですので、データ型が数字のものは平均をとり、オブジェクトのものはカウントして、train_dfにくっつくようにしたいと思います。
ということでデータ前処理の方向性を定めました。次回は実際にコードを書きながらデータ整形を行っていきます。