準備 †
インストールとセットアップ †
$ python --version
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)
iPython Notebook (Jupyter Notebook) の使い方 †
- Jupyter Notebook を起動 (ブラウザ上のページに遷移)
$ ipython notebook
- New >> Python 3 を選択すると Python コード入力画面に遷移
- Ctrl + Enter でコード実行
- Shift + Enter でコード実行&新しい入力欄を表示
- Save するとターミナルのカレントディレクトリ配下に .ipynb ファイルが保存
- Markdown を選択すると Markdown 記法でコメントを記述可能
- iPython Notebook を終了するにはターミナル上で Ctrl + C
資料 †
- Udemy 資料
- レクチャ毎のコードを html 形式で表示可能 且つ ipynb 形式でダウンロード可能
Numpy †
- 科学計算のための基本的なパッケージ
- アレイの作り方など
numpy 入門 †
$ python
Python 3.6.1 |Anaconda 4.4.0 (x86_64)| (default, May 11 2017, 13:04:09)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__file__
'/Users/y.shimojo/anaconda/lib/python3.6/site-packages/numpy/__init__.py'
アレイの作り方 †
- アレイの作り方
- numpy のアレイを作る最も簡易的な方法は Python のリスト型から変換して作成
- リストのリスト (my_lists) を作成
- my_lists を元に numpy のアレイを作成 -> 多次元配列
- shape 属性: 多次元配列 (例: 2行4列) の属性がタプルで格納されている
- dtype 属性: 格納されているデータのデータ型が格納されている
- numpy のアレイは Python のリスト型と異なり全ての要素が同じデータ型である必要あり
- zeros() 関数を利用すると引数に指定した数の要素数を持つ要素が全て0の特殊なアレイを作成可能
- ones() 関数は全ての要素が1のアレイを作成可能
- 引数にタプルを与えると多次元配列を格納したアレイが作成可能
- empty() 関数は全ての要素が空のアレイを作成可能
- eye() 関数は単位行列が可能されたアレイを作成可能
- arange() 関数は Python の range に類似 (リストではなくアレイを返す)
アレイを使った計算 †
- Python 3 では int 型同士の除算でも float 型が返るが Python 2 では int 型が返る
- Python 2 を使っている場合は int 型同士の除算でも float 型が返るように以下の1行を実行
from __future__ import division
- アレイ同士の計算
- 乗算: それぞれの要素同士の乗算となる
- 引算: それぞれの要素同士の引算となる (arr1 - arr1 は全ての要素が0となる)
- スカラ (数字) とアレイの計算
- 除算: 指定したスカラに対してそれぞれの要素の除算となる
アレイの添え字 †
- 特定のアレイ内の要素にアクセスするには arr[n] 等と指定する (n は要素番号)
- スライスを使って要素番号を指定することも可能
- スライスは参照が返ってくるので同時に複数要素に値を代入することも可能
- 参照のため元のアレイの値も変更されることに注意
- 元のアレイの値変更を避けたい場合 copy() 関数を使ってアレイを複製することが可能
- 多次元配列 (例えば2次配列) の個別要素にアクセスしたい場合
- arr_2d[1][0] または arr_2d[1,0] 等と指定
- 多次元配列の特定部分のみ切り出して抽出することも可能
行と列の入れ替え †
- arange() 関数 -> reshape() 関数を使用してアレイを作成
- T または transpose() 関数を利用して行と列の入れ替え (転置) が可能
- transpose() は第1引数は行、第2引数に列のタプルを指定
- transpose*1 とすると元のアレイと変わらない値を返し transpose*2 とすると転置になる
- swapaxes() 関数でも転置可能 (軸を入れ替える関数)
- swapaxes(0,1) でも swapaxes(1,0) でも転置になる
- swapaxes() は2つの軸を入れ替える時に利用し行と列を入れ替える時は T または transpose() を利用する
- dot() 演算子: 行列の掛算が可能
- 3次元のアレイ (行列) に対する演算も transpose() を利用可能
アレイと計算のための関数 †
- sqrt() 関数: 引数にアレイを取り各要素の平方根を計算
- exp() 関数: 自然対数の底 e のべき乗を計算
- random.randn() 関数: 正規分布に従う乱数を返す
- add(A,B) -> 引数で指定したアレイの各要素の足算
- maximum(A,B) -> 引数で指定したアレイの各要素の値が大きい方を返す
- Jupyter Notebook の Help に Numpy のリンクがあるためそちらから関数一覧を確認可能
アレイを使ったデータ処理 †
- numpy に加えて描画ライブラリの matplotlib.pyplot もインポート
- 描画するグラフをブラウザ内にそのまま描画するために %matplotlib inline と記述
- meshgrid() 関数 を使って dx, dy のグリッドを作成
- imshow() 関数を利用して描画可能
- colorbar() 関数: グラフにカラーバーを付加
- title() 関数: グラフにタイトルを付加
- where() 関数: リスト内包表記のようにアレイ定義時に条件を付加することが可能
- sum() 関数
- アレイ内の全ての要素を足す
- 引数 0 は行を意味し列毎に足し算される
- any() 関数: アレイ内に1つでも True があれば全体を True で返す
- all() 関数: アレイ内の全てが True の場合 True を返す
- in1d() 関数
- 第1引数 (アレイ) に入っている要素が第2引数 (アレイ) に入っているか判別し True / False を返す
アレイの入出力 †
- save() 関数
- アレイをバイナリとして保存
- 第1引数にファイル名を文字列として指定
- 第2引数にアレイを指定
- load() 関数: バイナリファイルを読み込み可能
- savez() 関数
- 複数アレイを zip 形式で保存可能
- ファイル名の拡張子は npz
- 第2引数、第3引数、、にそれぞれアレイを指定
- load() 関数で読み込むことも可能
- savetxt() 関数
- テキスト形式で保存可能
- 第3引数に delimiter を指定可能 (delimiter=',' 等)
Pandas †
- Python でデータ処理をするために作られた超高機能なライブラリ
- SeriesやDataFrameを使ったデータの処理方法と可視化など
データの入出力 †
データの可視化 †
MatplotlibとSeaborn †
実際のデータ解析 †
タイタニック号 †
株式市場 †
米大統領選挙 †
機械学習 (Scikit-Learn) †
- Scikit-Learn
- 線形回帰
- ロジスティックス
- SVM (サポートベクターマシン)
- 決定木とランダムフォレスト
付録 †
統計入門、SQLとPython、Webスクレイピング †