データ解析でよく使われるPythonライブラリ
データ解析でよく使われるPythonの下記のライブラリをそれぞれ紹介します。
- NumPy(数値計算)
- pandas(データ解析)
- matplotlib(データ可視化)
NumPy(数値計算)
NumPyは数値計算をPythonよりも高速に行うことができるライブラリです。Pythonはインタープリタ型のスクリプト言語ですので、C言語のような低級言語と比べるとパフォーマンスは良くありません。NumPyは内部実装でC言語を利用することにより高速化しています。例えばPythonのループではなくCのループを用います。また、メモリ上で連続した領域に格納されるためCPUを効率よく使用できます。
下記のコードでは、Pythonの標準機能での計算とNumPyによる計算をそれぞれ行っています。
import random import numpy as np %precision 3 n = 10000 x = [random.random() for _ in range(n)] y = [random.random() for _ in range(n)] x[:3],y[:3] z = [x[i] + y[i] for i in range(n)] print("Python標準機能での計算:") %timeit [x[i] + y[i] for i in range(n)] xnp = np.array(x) ynp = np.array(y) znp = xnp + ynp znp[:3] print("NumPyによる計算:") %timeit xnp + ynp
結果は下記のように表示されます。計算結果は同じですが、計算結果は2桁以上の差でNumPyが速い結果になっています。
Python標準機能での計算: 995 µs ± 12.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) NumPyによる計算: 4.76 µs ± 59.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
pandas(データ解析)
データ解析向けのライブラリであるPandasはデータフレームを扱うことができます。データフレーム(data frame)は、表形式のデータを抽象化したオブジェクトです。スプレッドシートにおける1つのシート、あるいはデータベースにおける1つのテーブルを、まるごと1つのオブジェクトにしたものです。
表形式のデータは縦・横の2次元の配列です。「配列の配列」によりデータフレームを作成できます。
import pandas as pd df = pd.DataFrame({'男': [11, 21, 31], '女': [13, 23, 33]}, index=['東京', '大阪', '福岡']) df
Jupyter NotebookではPandasのデータフレームは、テーブルとして表示します。上記の実行結果は下記のように表示されます。
Pandasのデータフレームを利用することにより、Pythonによるデータの加工や集計が効率的にできるようになります。
matplotlib(データ可視化)
MatplotlibはMATLAB風の描画を行うライブラリです。MATLABは数値計算の特にアカデミックな分野ではデファクトとして使われている描画ツールです。
Jupyter NotebookではMatplotlibを用いることで、出力したグラフをNotebook内に表示させることが可能になります。'%matplotlib inline'という行を記載する必要があります。
import matplotlib.pyplot as plt import numpy as np %matplotlib inline x = np.arange(0,20,0.1) y = np.sin(x) plt.plot(x,y)
上記の実行結果は下記のように表示されます。
まとめ
Pythonによるデータ解析の場面でよく使われるツールであるJupyter Notebookを中心にデータ解析環境を整える方法を紹介しました。
次回以降は今回紹介したツールやライブラリを用いながら具体的なデータ解析の手順など解説を予定しています。