kaggleにpythonを使ってみる(1) 〜pandas
統計ライブラリのpandas
データマイニングのコンテストkaggleでpythonの統計ライブラリpandasを使ってみた。
こちらの記事で、Rを使って予測モデルを作っているので、参考に。
kaggleで予測モデルを構築してみた (1) - kaggleって何? - About connecting the dots.
コンテストはタイタニックの乗客の生存を予測するやつで、python用のチュートリアルもここに載ってる。
だけども、このチュートリアルはpandasを使ってなくて、csvを読み込んだあとに、numpyの配列にぶち込んでゴリゴリやってる。
pandasのいいところは、Rライクなメソッドがたくさんあるところ。csvを読み込んで、データフレームを作ってくれるから、普段Rに慣れてる人が、pythonの配列使ってハアハアすることもないと思う。
まずは、練習データを読み込む。このとき、pd.read_csv()で返ってくるのが、DataFrameオブジェクト。
import pandas as pd train = pd.read_csv('train.csv') print type(train) # >> pandas.core.frame.DataFrame
train.csvのカラムには、SurvivedとかAgeとかが入っていて、それぞれ簡単にアクセスできる。
columnsはRのnames()みたいに使える。各カラムはSeriesというオブジェクト。
print train.columns # >> Index([PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked], dtype=object) print type(train.Age) # >> pandas.core.series.Series
head()も使えるよー。
train.Age.head() """ 0 22 1 38 2 26 3 35 4 35 """
describe()は、Rのsummary()的なメソッド。
train.describe() """ PassengerId Survived Pclass Age SibSp \ count 891.000000 891.000000 891.000000 714.000000 891.000000 mean 446.000000 0.383838 2.308642 29.699118 0.523008 std 257.353842 0.486592 0.836071 14.526497 1.102743 min 1.000000 0.000000 1.000000 0.420000 0.000000 25% 223.500000 0.000000 2.000000 20.125000 0.000000 50% 446.000000 0.000000 3.000000 28.000000 0.000000 75% 668.500000 1.000000 3.000000 38.000000 1.000000 max 891.000000 1.000000 3.000000 80.000000 8.000000 Parch Fare count 891.000000 891.000000 mean 0.381594 32.204208 std 0.806057 49.693429 min 0.000000 0.000000 25% 0.000000 7.910400 50% 0.000000 14.454200 75% 0.000000 31.000000 max 6.000000 512.329200 """
csvファイルを見てみると、Ageに欠損データがたくさんあって、この辺をきれいに処理してみる。
train.Age = train.Age.fillna(train.Age.mean())
fillna()というメソッドを使って、欠損値が全て年齢の平均値で置き換わる。楽チン。
今回のコード、gistに上げて、IPython Notebook Viewer使ってみた(便利)。
-> http://nbviewer.ipython.org/6184055
あと、github。
-> https://github.com/akiniwa/kaggle_titanic