jupyter notebookでいい感じに分析しよう

Pocket

jupyter notebookを使うまでの準備

jupyter notebookは、ノートブック形式で作成したプログラムを実行し、実行結果を記録しながら、データの分析作業を進めるためのツールです。ブラウザ上で気軽に試せる感じいいっすね!

Jupyterを動かすには、様々なパッケージが必要なので、あらかじめそれらをパッケージしてくれているAnacondaというpythonのディストリビューションを使ってやります。

まずは、pythonのバージョン管理をしてくれるpyenvをインストールしパスを通します。

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc

下記のコマンドを打ってバージョンが返ってきたらok

$ pyenv -v
pyenv 1.0.7-1-g99d1670

次に、python(anaconda)をインストールしよう。

$ pyenv install anaconda3-4.2.0
$ pyenv global anaconda3-4.2.0
$ pyenv rehash

下記のコマンドを打ってバージョンが返ってきたらok

$ python --version
Python 3.5.2 :: Anaconda 4.2.0 (x86_64)

ここまでできたら、jupyterが動くはずです。
下記のコマンドを打つとjupyterが起動してブラウザが立ち上がってくれる

$ jupyter notebook

オープンデータを使って分析結果を表示しよう

データの読み込み

気象庁のページから札幌と東京と那覇のデータを落としておきましょう。

まずは、下記のようにしてcsvデータを時系列データとして読み込み表示してみましょう。

%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd

df = pd.read_csv('data.csv', index_col=0, header=[0, 1, 2], skiprows=[0], encoding='shift-jis')
df = df.iloc[:, [0, 3, 6]]
df.columns = [u'東京', u'札幌', u'那覇']
df.index = pd.to_datetime(df.index)
df.head()

するとこんな感じで返してくれます↓

outputhead

read_csvの引数は以下の表の通りです

キー 意味
index_col indexとする列名を指定
header ヘッダー行の指定
skiprows 飛ばす行を指定
encoding 文字コードを指定

読み込んだデータからさらに、月次や週次で集計したい場合は、pandasのGrouperとを使います。

monthly = df.groupby(pd.Grouper(level=0, freq='M')).mean()
monthly.plot()

freq='M' のところを freq='W' とすると週次になります
また、ある期間だけを抽出したい場合は df['始まり':'終わり'] のようにします。具体的に春の期間だけ抽出したいときは、 ‘df[‘2016-03-01′:’2016-05-31′]’ とします。

また、平均や標準偏差、最小値、四分位数、最大値をまとめて表示するには

df.describe()

スクリーンショット 2017-01-28 20.52.59

グラフの描画する

続いてグラフを表示しましょう。
まずは、折れ線グラフを表示しましょう。
折れ線グラフは、DataFrameオブジェクトからplotを呼び出すだけです。

%matplotlib notebook

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd

df = pd.read_csv('data.csv', index_col=0, header=[0, 1, 2], skiprows=[0], encoding='shift-jis')
df = df.iloc[:, [0, 3, 6]]
df.columns = ['Tokyo', 'Sapporo', 'Naha']
df.index = pd.to_datetime(df.index)

df.plot()

outputlinegraph

グラフのタイトルや、軸ラベル名を設定するには、

plot = df.plot()
plot.set_title('line graph')
plot.set_xlabel('date')
plot.set_ylabel('temperature')

とすればok

次は、月平均を棒グラフで表現します。

monthly = df.groupby(pd.Grouper(level=0, freq='M')).mean()
monthly.plot.bar()

outputbar

色を変えたい場合は、 color=['カラーコード'] とします。

ヒストグラムを描きたい場合は hist() を使います

df.plot.hist(bins=100, alpha=0.5)

outputhist

x軸の範囲を指定したい場合は、 range=(下限, 上限)とします。

より詳しくなりたかったら、pandasやmatplotlib、DataFrameでぐぐってみてくださいmm

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>