2020年6月30日火曜日

データ分析入門 (Jupyter notebook + pandas or matplotlib)

概要

最近というわけではないですがデータ分析をするのに 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()

他にも tailvalue_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 件のコメント:

コメントを投稿