前回、「Kaggle」のアカウントを作成したものの、何から手をつけていいかわからないので、まずは、知り合いの勧めで「Kickstarter Projects」に挑戦したいと思います。
0. まずは、「Kaggle」のホームページにアクセスする。
1.検索窓に「Kickstarter Projects」を入力して検索する。
検索窓に「Kickstarter Projects」と入力すると候補にすぐ出てくるので選択します。
2.「Kickstarter Projects」にアクセスする。
検索で選択した「Kickstarter Projects」が表示されます。
3.何はともあれ、データCSVをダウンロードしてみる。
まずは、メニューから「Data」を選択し、Data Sourcesから2つのファイルをダウンロードして解凍します。
4.データを読み込む準備として、もろもろライブラリをインポートする。
%matplotlib inline import pandas as pd import numpy as np import matplotlib.pyplot as plt import codecs as cd from sklearn.preprocessing import LabelEncoder from sklearn.linear_model import SGDClassifier from sklearn.metrics import log_loss, confusion_matrix import seaborn as snsデータを扱うためにpandas,もろもろ計算するためにnumpy,グラフを書くためmatplotlib,seaborn,コード変換のためにcodecs,各種機械学用にsklearnの各種モジュールをインポートします。
5.データを読み込んで、概要を確認する。
#201801のデータを読み込んでみる df_f18 = pd.read_csv('ks-projects-201801.csv')
#最初の五行を表示してみる。 display(df_f18.head())最初の5行を表示して、おおよそどのような列があり、どのような値が入っているかを把握します。
6.統計値と、欠損値、各列のデータタイプを確認する。
#統計値を表示してみる。 display(df_f18.describe()) #欠損値がある行数を数えてみる。 display(df_f18.isnull().sum()) #各列のデータタイプを確認してみる。 display(df_f18.dtypes)統計値から、データの個数や、平均、標準偏差、最大値、最小値など大まかなデータを把握します。カテゴリ変数の列は数値化されていないため表示されていません。
「usd pledged」には2373件の欠損があります、ほかの項目も欠損があります。
データタイプからは、数値データか、それ以外かの大まかな情報が得られます。数値データ以外は、何らかの方法で数値化する必要があります。
7欠損値がある行は、いったん除外してみる。
#1個でも欠損値がある行はとりあえず削除してみる。 df_f18_dna = df_f18.dropna(how='any') #欠損値がある行数を数えてみる。 display(df_f18_dna.isnull().sum())dropna()を利用して、引数にhow='any'を指定することで、1項目でも欠損がある行は除外します。なお、すべて欠損している場合にのみ除外する場合は、how='all'を指定します。
無事、すべての列で欠損値がなくなりました。
8.成功(successful)と失敗(failed)の行に絞って考えてみる。
#stateの要素の個数を数えてみる。 df_f18_dna['state'].value_counts()
8割以上が、失敗(failed)か成功(Successful)なので、成功と失敗の行に絞って考えてみることにします。
#成功だけを抽出したDFと失敗だけを抽出したDF df_f18_success = df_f18_dna[df_f18_dna['state']=='successful'] df_f18_failed = df_f18_dna[df_f18_dna['state']=='failed'] #両方を結合 df_f18_SorF = pd.concat([df_f18_success,df_f18_failed]) #stateの要素の個数を数えてみる。 df_f18_SorF['state'].value_counts()成功の行を抽出したデータフレームと、失敗の行を抽出したデータフレームを抽出し、concat()の引数に、両方のデータフレームを渡すことで、結合したデータフレーム(df_f18_SorF)を取得します。
無事、成功と失敗の行に絞ったデータフレームが作成できました。
9.カテゴリ変数は、文字列から数値に変換してみる。
#LabelEncoderのインスタンスを生成 le = LabelEncoder()
#categoryに出てくるカテゴリを覚えて #categoryを数値に変換 le = le.fit(df_f18_SorF['category']) df_f18_SorF['category'] = le.transform(df_f18_SorF['category'])
#main_categoryに出てくるカテゴリを覚えて #main_categoryを数値に変換 le = le.fit(df_f18_SorF['main_category']) df_f18_SorF['main_category'] = le.transform(df_f18_SorF['main_category']) #currencyに出てくるカテゴリを覚えて #currencyを数値に変換 le = le.fit(df_f18_SorF['currency']) df_f18_SorF['currency'] = le.transform(df_f18_SorF['currency']) #stateに出てくるカテゴリを覚えて #stateを数値に変換 le = le.fit(df_f18_SorF['state']) df_f18_SorF['state'] = le.transform(df_f18_SorF['state']) #countryに出てくるカテゴリを覚えて #countryを数値に変換 le = le.fit(df_f18_SorF['country']) df_f18_SorF['country'] = le.transform(df_f18_SorF['country']) df_f18_SorF.head()
sklearnのLabelEncoderのインスタンスを作成して、fit()の引数にカテゴリ変数となっている列を渡すことで、その列に出てくる変数の種類を覚えさせて、transform()の引数に当該カテゴリ変数の列を渡すことで、カテゴリ変数の文字列を数値に更新します。(特定の列だけ更新するなといったような警告がでますが、今回は、無視しました。)
最初の五行を表示させたところ、無事にカテゴリ変数が数値化されていることが確認できました。
これで、データを整理したりグラフ化するために、データの前処理ができました。
このデータを使って、引き続き分析を進めていきたいと思います。
2019年3月9日(土)にG検定を受験し、見事合格できました!
受験の体験記や勉強法などを別のブログにまとめました。
これから受験される方がいらっしゃいましたらご参考まで。









