この授業の目的
ビッグデータを使いたい場合を想定して「既にCSVとしてダウンロードできるデータを使う」ための,プログラム言語Pythonを使ったデータ処理の方法と統計の基礎についてを学ぶ.
実際の分析では,「データが少量の時に,表計算ソフトウェアで対話的にデータを整える」場合と,「大量のデータが存在する場合にデータを整える処理の部分もプログラムで自動化する」場合の2種類のテキストを用意した.
「プログラムなんか書かなくても,全部Excelでポチポチ対話的にやればいいじゃない.後ろの方はいらない」と思うかもしれないが,ビッグデータを使いたい場合,そもそもデータが大量である.CSVの行や列が1万もあった場合に,いちいちExcelで開いてちょこちょこ操作してというのを,さらに1万シート分も繰り返すのはとてもできない.そのような場合には「データを整える部分」プログラムで自動化する必要がある.
また,音楽の場合は,一つの音符ごとに計算をしなければならなかったりなど,本当に大量のデータを処理する必要がある.
「定型処理をまとめて繰り返す」のはプログラミングの得意技である.そこでプログラミングも一緒に学ぶ.
概要
近年PythonがそれまでのMATLABやR言語に代わって,データ処理に使われることが多くなった.また海外では教育用言語として90年代末から普及が始まり,現在様々なフレームワークが開発されているWebサーバ側をはじめとしたサーバ用途と,通常のデスクトップのスクリプト処理用途,両用のLL(Lightweight Language)として使われている.
Pythonの特徴として「Python本体はスクリプト言語だが,ライブラリをC言語で実装しPythonにAPIを用意することで,高速に実行可能」という点がある.近年ではデータ解析や機械学習などで頻繁にPythonが使われているが,これはこの「Cで書かれた高速ライブラリをPythonで実行」というスタイルに依るものである.
現在のPythonは大きく分けてVer.2.x系とVer.3系の2つが使われているが,本授業ではPython3を対象とする.(OSX標準のPythonは2.7なので,授業の下準備としてAnacondaをインストールしておくこと)
コンテンツ
Pythonの基礎
- Pythonの基本と配列(list)の取り扱い
- 関数とクラスの定義
- numpy配列(array)とmatplotlib
- CSVの取得とPlot,pandas.DataFrameの取り扱い
- 文字列の取り扱い
- lambda式,高階関数,内包表記
- HTMLParserクラスによるWebページの取得と分析
表計算ソフトウェアを使って対話的にデータを整える場合
- CSVデータを加工して相関係数を算出
- CSVデータを加工して単純線形回帰分析
- CSVデータを加工してt検定
- CSVデータを加工して分散分析と多重比較
- CSVデータを加工して重回帰分析と因果関係
- CSVデータを加工して主成分分析
- CSVデータを加工して線形二項分類
- CSVデータを加工して因子分析
大量のデータがある時にプログラムを書いてデータを整える処理を自動化する場合
- CSVデータからの相関係数の算出
- CSVデータからの単純線形回帰分析
- CSVデータからのt検定
- CSVデータからの分散分析と多重比較
- CSVデータからの重回帰分析と因果関係
- CSVデータからの主成分分析
- CSVデータからの線形二項分類
- CSVデータからの因子分析
授業の下準備
Google Colaboratoryを試用する場合(インストール不要,OS不問)
このページの内容は,Googleが提供している,Webブラウザから実行できるPythonの環境「Google Colaboratory」で全て実行可能である.従ってこのページの内容を学習するために自分のコンピュータにPythonの環境を整える必要はない.
C言語のツールや,他の環境(例えばアート系であればCycling'74のJavaScript環境)との通信・連動を行いたい場合は,自分のコンピュータ内に実行環境を整える必要があるため,後述のAnacondaをインストールするのがよい.
Windows
Anacondaを使う場合
Anacondaは現在標準となっているPythonのデータアナリシスディストリビューションである.こちらを使うのが一番楽.
Anacondaダウンロードページから,「64-Bit Graphical Installer」をダウンロードする.
「Next」
「I Agree」
「All Users」の方が実は楽.管理者パスワードがわからないときには「Just Me」
インストール場所に半角スペースなどが含まれているとエラーになるので,そのまま.もしくはCドライブ直下にするなど.
上の方(システムパスに追加)は,システム的に混乱する可能性があるので外して置いた方がいい.
逆に下はVisual Studio等のWindowsコンパイラのみに設定を与えるもので,GPUの利用などを考えているなら,チェックを入れておく.(基本的にチェックを入れて置いて大丈夫)
インストールが進む.
終わったら「Next」
Visual Studio Codeというエディタを追加インストールするか訊かれる.Visual Studio Communityが既に入っていたり,VS Codeを使わないなら「Skip」
「Finish」
WindowsでMSYSを使う場合
CやC++のツールと連携させたい場合のみ(VSのコンパイラが必要なCUDA系は除く),Cコンパイラとセットになるこちらを使う.MSYSを使ってインストールしたPythonは文字コードがWindowsのもの縛りになるので注意.データ分析ならAnacondaの方が使い勝手は良い.
まっさらな状態からのMSYS2+GCCでWindows上にC言語とC++の環境を整えるの通りにコンパイラ環境を整える.
その後「MSYS2 MSYS」ショートカットで起動する端末エミュレータから,
$ pacman -S mingw64/mingw-w64-x86_64-python3
$ pacman -S mingw64/mingw-w64-x86_64-python3-numpy
$ pacman -S mingw64/mingw-w64-x86_64-python3-scipy
$ pacman -S mingw64/mingw-w64-x86_64-python3-matplotlib
$ pacman -S mingw64/mingw-w64-x86_64-python3-pandas
の五つのパッケージをインストールしておく.依存関係にある必要なライブラリ(主にQt関係)も全て一緒に入ってくれる.(64bit Windowsの場合)
Pythonの実行時には,MSYS2 MSYSから,
$ /mingw64/bin/python3 MyPythonCode.py
と実行する.
OSX, macOS
OSX,macOSはPython本体とnumpy, scipy, matplotlibは標準で入っているのだが,バージョンが2.7である.HomebrewなどでPython3を入れるという方法もあるが,Homebrewでインストールを行うとシステム全体に影響を及ぼし,元々入っていたPython2.7とごちゃ混ぜになりシステムにダメージを与える可能性が高い.
そこでデータ処理に特化したPythonのパッケージであるAnacondaを「HDDのアプリケーション」以下にインストールして使う.Anacondaは/Applications/anaconda
フォルダ内で独立したファイルツリーを持つ.
Python3を使いたい場合はAnacondaのPythonを明示的に実行してやる形にすれば,通常のシステムの処理に必要なPythonは元々システムに入っていた2.7がそのまま使われることになる.この方法で,システムに必要なPython2.7と,プログラミング言語として使いたいPython3系を,安全に同居させることができる.
Anacondaのダウンロードページの「Download for macOS」から「Python 3.6 version」の「Graphical Installer」をダウンロードする.
ダウンロードされた.pkgを実行して,ライセンスに同意し,「インストール先を変更」して「特定のディスク」の「アプリケーション」フォルダにインストールする.そうするとマシンの「/Applications」に「anaconda」フォルダ内にanacondaがインストールされ,Terminal.appから実行するPythonはこの中のPythonを使うように設定される.
「このユーザがTerminal.appを開いた時はAnacondaのPythonを使う」という設定が記述されている~/.bash_profile
からexport PATH=/Applications/anaconda...
という行を削除しておき,Python3を実行する時は「Terminal.app」から,
$ /Applications/anaconda/bin/python MyPythonCode.py
と「Anacondaのpython」を明示的に実行するようにしておくと,システム的に混乱が起きない.
OSXのPython2.7には,この授業の目的である基本的なデータ解析で使うnumpy, matplotlib, scipyも標準で含まれているのだが,matplotlibが使うGUI部品(システム標準はおそらくTk, Anacondaや上記WindowsのMSYS2環境ではQt5)や,リストを使ったイテレータの言語仕様などが違うため,Python2.7と3で互換性がないプログラムもある.
Anacondaの環境を作って実行環境のターミナルを開く
Pythonはライブラリがたくさんあり,衝突するものもある.Anacondaは複数の「環境environment」を作り,「環境」ごとにライブラリをインストールすることができるため,ライブラリの衝突を防ぐことができる.
ここでは授業用の環境「for_class」を作ってみる.
「Environment」タブにして,下の「Create」ボタン.
環境の名前(ここでは"for_class")をつけて,「Create」.
環境が作られている.
環境の作成が終わったら,作成した環境の再生ボタンから「Open Terminal」.
Terminalが開いて実行できるようになるので,プログラムが置いてあるフォルダにcdコマンドで移動して,
python 実行したいpythonプログラムファイル.py
で実行できるようになる.
Anaconda-Navigatorでの追加ライブラリのインストール
AnacondaはGUIでライブラリが追加インストールできる.ここでは例としてTwitterのAPIを使うために必要なOauth認証に必要なrequests_oauthlibをインストールする.
conda-forgeというレポジトリ(AnacondaではChannelと呼称する)がよくメンテされているようなので,それを追加して,Anacondaから使えるようにする.
まず管理者権限をもつユーザでAnaconda-Navigatorを起動する.
「Environment」(環境)を選択→「当該プロジェクトで使っているAnacondaの環境(ここではrootだが,基本的には前述の通りプロジェクトごとに環境を作る)」が選択されていることを確認→「Channels」ボタンを押す.
ミニウィンドウが開くので「Add」
新たなフィールドに「conda-forge」チャンネルを入力.
追加したら「Update channels」
もとの画面に戻るので「Update Index」すると,下のバーでIndexをアップデートしている進行状況が表示される.
一番左のプルダウンメニューから「Not Installed」(まだインストールされていないライブラリの検索)→一番右のボックスに「ライブラリの名前」(ここでは「requests-oauthlib」)を入力すると,下のフィールドに検索結果が出てくる.
ライブラリにチェックを入れて,「Apply」
進行状況のミニウィンドウが出る.
入れたいライブラリに必要なライブラリ(依存関係と呼称する)が全て並んで出てくるので「Apply」.
プルダウンメニューを「Installed」にして,インストールされていることを確認する.
以上である.Environment→rootの再生マークからターミナルを呼び出しても使えるし,root環境に入れておけば,通常のターミナルから/Applications/anaconda/bin/python3
でPythonインタプリタを呼び出した時もライブラリが使える.
Anacondaで環境をたくさん作り,使用するライブラリを切り替えることもできる.