読者です 読者をやめる 読者になる 読者になる

AnacondaでPython(データ解析の真似事)

/IT系 /Python @機械学習

AnacondaでPython環境を作って、データ解析の真似事としてタイタニック号の乗客名簿を読み込んで、乗客の年齢のヒストグラムを表示してみる。

Anacondaのダウンロードとインストール

下記サイトから実行環境に応じたインストーラをダウンロードしインストールする。

Download Anaconda Now! | Continuum

いまPythonデファクトPython 3系だそうなので、自分はWindows版のPython 3系のインストーラをダウンロードしインストールした。

Jupyter Notebookの起動

Pythonを書いたり実行結果を表示したりするREPLにあたるのがJupyter Notebook。 Windows版のAnacondaに付属するJupyter Notebookをスタートメニューから起動すると、ログインユーザのドキュメントフォルダをカレントディレクトリとして起動する。
だが個人的にここにコードを置くのは好きではないので、自分はコードを置くフォルダをカレントディレクトリとして起動するように、コードを置くフォルダに下記のようなバッチファイル(boot-jupyter-notebook.bat)を作ってそこから起動するようにした。

%USERPROFILE%\Anaconda3\Scripts\jupyter-notebook.exe
pause

boot-jupyter-notebook.batを起動すると、コンソールに「The Jupyter Notebook is running at: http://localhost:8888/」と出力され、このアドレスを開いたブラウザが起動する。

f:id:nave_kazu:20170307171954p:plain

Jupyter Notebookの最初に表示するページはカレントディレクトリのファイル一覧なので、boot-jupyter-notebook.batが表示されている。

次は、このJupyter NotebookからPython環境を作ったり、パッケージの管理をしたり、Pythonを書いたり、実行結果を表示したりする。

実行環境を作成する

実行環境はCondaによって管理されている。
Jupyter Notebookの上に「Conda」というタブがあるのでそこをクリックして開くと、デフォルトで構築されている実行環境「root」がある。

f:id:nave_kazu:20170307172005p:plain

それをそのまま使っても良いが、せっかくなので新しい環境を作って、そこで色々試してみる。

右上の「+」をクリックして新しい実行環境を作成する。
今回は名前を「test-env-01」とする。
「Type」はPython 3系が欲しいので、「Python 3」のまま。

f:id:nave_kazu:20170307172011p:plain

「Create」をクリックする。

しばらくすると環境一覧に「test-env-01」が現れる。

f:id:nave_kazu:20170307172017p:plain

続いてその「test-env-01」をクリックして、下のパッケージ一覧をrootからtest-env-01に切り替える。

f:id:nave_kazu:20170307172025p:plain

左側の利用可能パッケージから、データ解析ライブラリの「pandas」を選択し、「→」をクリックしてインストールする。

f:id:nave_kazu:20170307172038p:plain

続いて作図ツールの「matplotlib」を選択し、「→」をクリックしてインストールする。

f:id:nave_kazu:20170307172049p:plain

これで今回使う環境「test-env-01」は完成。

続いて、実行環境での作業内容を記録するNotebookを作成する。
Notebookは作成した実行環境のREPLで、実行環境に対していくつでも作成できる。
Anacondaには複数の実行環境「Conda」がぶら下がり、「Conda」にはその実行環境で実行することを記した複数の「Notebook」がぶら下がる。
Notebookは保存が可能なので、作業途中を保存して翌日それを読み込んで再開、というようなことも出来る。

Notebookは「Files」タブの右側「New」から作成する。
プルダウンの中から先程作成した環境「test-env-01」を選択する。
プルダウンが更新されていないことがあるので、もしプルダウンに「test-env-01」がなければページの再読込を行う。

f:id:nave_kazu:20170307172055p:plain

そうすると新しいブラウザタブが開いて、test-env-01でのREPLが表示される。

f:id:nave_kazu:20170307172103p:plain

データ解析の真似事をする

kaggleからタイタニックの乗客名簿(CSV)をダウンロードする(ダウンロードにはユーザ登録が必要)。

Titanic: Machine Learning from Disaster | Kaggle

タイタニックの乗客名簿「train.csv」をダウンロードする。
ダウンロードしたtrain.csvをカレントディレクトリ(boot-jupyter-notebook.batを実行したディレクトリ)にコピーする。

まずは手始めにダウンロードしたCSVファイルを読み込んで画面に表示してみる。
Cellと呼ばれる「 In [ ] 」の部分に下記コードを貼り付ける。

import pandas as pd

data = pd.read_csv("train.csv")
data.head(3)

この簡単なコードの説明としては、まずはじめにインストールしたパッケージpandasを読み込み、そのpandasを使ってダウンロードしたtrain.csvを読み込み、先頭から3行だけを表示している。
実行はメニューから「Cell -> Run Cells」を選択するか、再生ボタンのような右向き三角のボタンをクリックする。
すると下記のような結果が得られる。

f:id:nave_kazu:20170307172110p:plain

CSVが読めたので、続いてデータ解析の真似事として、乗客の年齢のヒストグラムを表示してみようと思う。

Cellの内容を下記のように変更する。

import pandas as pd
import matplotlib.pyplot as plot

data = pd.read_csv("train.csv")
age = data.Age.fillna(-1)
plot.hist(age, range=(0, 100), bins=101)
plot.show()

今回はpandasに加えて作図ツールのmatplotlibを読み込む。
先程と同様にtrain.csvを読み込んだ後、年齢の列「Age」の欠損箇所に「-1」を埋めている。
train.csvを見てみるとわかるが、年齢の列は空欄が目立つ。空欄があるとヒストグラムを作成する際にエラーとなるため、目印として一旦「-1」を入れる。
ヒストグラム作成のためhistを呼び出し、データageと、データの範囲として0歳~100歳、表示するビンの数として101(つまり1歳ごとに1本)のヒストグラムを作成する。データの範囲を0歳~100歳としているので、欠損データに埋めた-1は無視される。
最後にヒストグラムを表示している。
すると下記のような結果が得られる。

f:id:nave_kazu:20170307175253p:plain

なるほど、乗客の分布としては、20~30代が多かったのね。
最年少は0歳で、最高齢は80歳。なるほどなるほど。

以上、ここまで。