Pythonのデータ分析用パッケージをさわってみる。
今回はほんとうに簡単に各パッケージを使ってみることが目的。
さわってみるパッケージはNumPy,SciPy,SymPy,Pandasの4つ。
Minicondaをインストールし、データ分析用仮想環境を構築済みとする。
仮想環境有効化。
source /Users/runble1/.pyenv/versions/miniconda3-3.8.3/envs/test01/bin/activate test01
IPythonを起動する。
ipython
目次
- NumPyをさわる
- SciPyをさわる
- SymPyをさわる
1. NumPyをさわる
NumPyについてWikipediaより
NumPyは、プログラミング言語Pythonにおいて数値計算を効率的に行うための拡張モジュールである。効率的な数値計算を行うための型付きの多次元配列(例えばベクトルや行列などを表現できる)のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供する。
NumPyをimportする。
In [1]: import numpy
まずnumpy.array()関数について。
numpy.array()関数はN次元配列を生成することができる。
1次元配列。
In [3]: numpy.array([1,2,3]) Out[3]: array([1, 2, 3])
2次元配列。
In [4]: numpy.array([[1,3],[2,4]]) Out[4]: array([[1, 3], [2, 4]])
生成した配列にアクセスする。
In [5]: a = numpy.array([[1,3],[2,4]])
In [6]: a[0][1] Out[6]: 3
N次元配列の演算も可能。
行列の和を求める。
In [7]: x = numpy.array([[1,2],[1,3]])
In [8]: y = numpy.array([[3,2],[2,1]])
In [9]: x + y Out[9]: array([[4, 4], [3, 4]])
NumPyで標準偏差を求める。
In [10]: score = numpy.array([80,70,75,82,90])
In [11]: numpy.std(score) Out[11]: 6.7409198185410872
NumPyで相関係数を求める。
corrcoef()関数を使う。
In [12]: x = numpy.array([1,2,3,4,5])
In [13]: y = numpy.array([1,2,3,4,5])
In [14]: y = numpy.array([1,3,3,4,5])
In [15]: numpy.corrcoef(x,y) Out[15]: array([[ 1. , 0.95940322], [ 0.95940322, 1. ]])
2. SciPyをさわる
SciPyとは、Wikipediaより
SciPy は、配列オブジェクトとその他の基本的な機能を備えた NumPy を基礎にしている。SciPy は統計、最適化、積分、線形代数、フーリエ変換、信号・イメージ処理、遺伝的アルゴリズム、ODE (常微分方程式) ソルバ、特殊関数、その他のモジュールを提供する。
つまり面倒な計算はSciPyがやってくれる、ほとんど。
試しにユークリッド距離を求めてみる。
In [1]: from scipy.spatial import distance
In [2]: x = [1,2,3]
In [3]: y = [1,2,4]
In [4]: distance.euclidean(x,y) Out[4]: 1.0
といった計算を簡単にできる。
自分で計算できないので合ってるのかは知らん!
また、数学定数もデフォルトで定数として入ってるので、それを取り出して使うこともできる。
In [5]: import scipy.constants
# 円周率を取り出す In [6]: scipy.constants.pi Out[6]: 3.141592653589793
# 重力加速度を取り出す In [7]: scipy.constants.g Out[7]: 9.80665
他にもSciPyを使って機械学習を行えるらしい。
ただそれ専用のscikit-learnほどではないとのこと。
3. SymPyをさわる
SymPyとは、Wikipediaより
SymPy は、プログラミング言語Pythonで記号計算を行うためののライブラリである。
記号計算については後述。
SymPyは、数学でよく使うxとyなどを定義し、数式で扱えるようにできる。
symbols()関数を使う。
In [1]: import sympy
In [2]: x,y = sympy.symbols('x,y')
In [3]: expr = 2*x + y
In [4]: expr Out[4]: 2*x + y
これで数式ができたので、値を代入し計算してみる。
In [5]: expr.subs([(x,2), (y,3)]) Out[5]: 7
元の数式を修正することもできる。
In [6]: expr -y Out[6]: 2*x
数式処理も行うこともできる。
数式処理とは下の処理のように数式を展開したり、数式自体を操作すること。記号計算ともよぶ。
In [7]: sympy.expand((x+y) ** 2) Out[7]: x**2 + 2*x*y + y**2
微分積分なんかもできたりする。
微分。
In [8]: sympy.diff(x**2 + 2*x + 1, x) Out[8]: 2*x + 2
積分。
In [9]: sympy.integrate(3*x**2 + 2*x, x) Out[9]: x**3 + x**2
コメント