概要
最近というわけではないですがデータ分析をするのに Jupyter notebook + pandas を使うのが流行ったので自分も今更ながら試してみました
環境
- macOS 10.15.5
- Python 3.8.3
- jupyter notebook 6.0.3
Jupyter notebook のインストール
Jupyter notebook は簡単に言えばブラウザ上で動作するエディタです
Python のコードを直接実行したり作成した notebook を公開することもできます
anaconda というツールからインストールするのが公式の手順のようです
brew cask install anaconda
Anaconda-Navigator.app
というアプリがインストールできたら開きましょう
そして jupyter notebook を Launch すれば OK です
デフォルトだと localhost:8888
で起動するようです
そこにブラウザでアクセスすると以下のようにユーザのホームディレクトリが表示されます
Hello Jupyter notebook
とりあえず動かしてみましょう
Python が動作するので「Hello World」でも表示してみましょう
「New」->「Python3」で新しく notebook を作成します
すると Python のプログラムを入力できるエディタになるのでここに
print("Hello")
と入力してみましょう
あとは「Run」ボタンを押せば Hello が表示されると思います
Pandas でデータを読み込んでみる
さてここからデータ分析っぽいことをしてみましょう
まずは Pandas に適当な二次元データを読み込ませてみます
二次元データを扱う場合には DataFrame というクラスを使います
pandas のデータ作成するには numpy のデータを元にしているのでそれぞれ import します
import pandas as pd
import numpy as np
そして numpy で二次元配列を作成してみます
試しに出力もしてみましょう
data = np.array([[10, -20, 64, -54], [-18, 43, 9, -34], [-41, 0, -30, 71], [1, -40, -21, 60], [11, -21, 49, -39], [-45, -26, 9, 62], [-48, 11, -13, 50]])
data
これを使って DataFrame オブジェクトを作成します
df = pd.DataFrame(data, index=range(1, len(data) + 1), columns=["A", "B", "C", "D"])
df
index は行番号で colums はそれぞれのデータのカラムになります
今回 index は 1 からスタートさせてみました
これを Jupyter notebook で表示させるとキレイなテーブルとして表示されるのが確認できると思います
Pandas の関数を使ってみる
pandas のデータにできればあとはいろいろな関数を使ってデータの抽出や加工ができます
例えば各列のデータの合計を求めたい場合は sum()
を使います
df.sum()
また A 列のみを求めたい場合はカラム名を指定します
df["A"].sum()
他にも tail
や value_counts
(出現数のカウント) など様々な関数が用意されています
使い方はチートシートを見るのが手っ取り早いと思います
matplotlab でグラフにしてみる
Dataframe オブジェクトにできれば簡単にグラフにすることも可能です
df.plot()
これだけで折れ線グラフが作成されます
A カラムだけ見たい場合は df["A"].plot()
という感じで先程と同じようにカラムを指定すれば OK です
グラフの見た目をちょっと変えたい場合は ggplot を使いましょう
これだけでもだいぶ見やすくなります
import matplotlib.pyplot as plt
plt.style.use('ggplot')
df.plot()
画像として保存したい場合は savefig
を使いましょう
以下の場合はホームディレクトリの直下に作成されます
df.plot()
plt.savefig('graph.png')
plt.close('all')
最後に
Jupyter notebook でそれっぽくデータ分析してみました
ポイントはデータを如何にして Pandas のデータに落とし込むかかなと思います
Pandas のデータにさえできればあとは好きな関数を使って好きな分析ができるというわkです
また使ってみて感じましたが正直データ分析がしたいだけなのであればわざわざ Jupyter notebook や pandas を使わなくてもエクセルで十分だと思います
これらを使うメリットはいろいろあると思いますが一番大きいのはこの後行うであろう機械学習のフェーズで scikit-learn や Tensorflow などのツールををそのまま Python で使えることだと思います
0 件のコメント:
コメントを投稿