[Work/Class/Python3の基礎とデータ処理]

Python3の基礎とデータ処理

この授業の目的

ビッグデータを使いたい場合を想定して「既に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の基礎

  1. Pythonの基本と配列(list)の取り扱い
  2. 関数とクラスの定義
  3. numpy配列(array)とmatplotlib
  4. CSVの取得とPlot,pandas.DataFrameの取り扱い
  5. 文字列の取り扱い
  6. lambda式,高階関数,内包表記
  7. HTMLParserクラスによるWebページの取得と分析

表計算ソフトウェアを使って対話的にデータを整える場合

  1. CSVデータを加工して相関係数を算出
  2. CSVデータを加工して単純線形回帰分析
  3. CSVデータを加工してt検定
  4. CSVデータを加工して分散分析と多重比較
  5. CSVデータを加工して重回帰分析と因果関係
  6. CSVデータを加工して主成分分析
  7. CSVデータを加工して線形二項分類
  8. CSVデータを加工して因子分析

大量のデータがある時にプログラムを書いてデータを整える処理を自動化する場合

  1. CSVデータからの相関係数の算出
  2. CSVデータからの単純線形回帰分析
  3. CSVデータからのt検定
  4. CSVデータからの分散分析と多重比較
  5. CSVデータからの重回帰分析と因果関係
  6. CSVデータからの主成分分析
  7. CSVデータからの線形二項分類
  8. CSVデータからの因子分析

授業の下準備

Google Colaboratoryを試用する場合(インストール不要,OS不問)

このページの内容は,Googleが提供している,Webブラウザから実行できるPythonの環境「Google Colaboratory」で全て実行可能である.従ってこのページの内容を学習するために自分のコンピュータにPythonの環境を整える必要はない.

C言語のツールや,他の環境(例えばアート系であればCycling'74のJavaScript環境)との通信・連動を行いたい場合は,自分のコンピュータ内に実行環境を整える必要があるため,後述のAnacondaをインストールするのがよい.

Windows

Anacondaを使う場合

Anacondaは現在標準となっているPythonのデータアナリシスディストリビューションである.こちらを使うのが一番楽.

Anacondaダウンロードページから,「64-Bit Graphical Installer」をダウンロードする.

インストール画面1

「Next」

インストール画面2

「I Agree」

インストール画面3

「All Users」の方が実は楽.管理者パスワードがわからないときには「Just Me」

インストール画面4

インストール場所に半角スペースなどが含まれているとエラーになるので,そのまま.もしくはCドライブ直下にするなど.

インストール画面5

上の方(システムパスに追加)は,システム的に混乱する可能性があるので外して置いた方がいい.

逆に下はVisual Studio等のWindowsコンパイラのみに設定を与えるもので,GPUの利用などを考えているなら,チェックを入れておく.(基本的にチェックを入れて置いて大丈夫)

インストール画面6

インストールが進む.

インストール画面7

終わったら「Next」

インストール画面8

Visual Studio Codeというエディタを追加インストールするか訊かれる.Visual Studio Communityが既に入っていたり,VS Codeを使わないなら「Skip」

インストール画面9

「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を使うように設定される.

Anaconda3のインストールパッケージ一覧の画面 Anaconda3のライセンス表示 Anaconda3のライセンス同意 Anaconda3「インストール先を変更」 Anaconda3「特定のディスクにインストール」を選択 Anaconda3メインのシステムHDDが選択されていることを確認し「フォルダを選択」 Anaconda3 フォルダを選択.ハードディスク直下の「アプリケーション」 Anaconda3 選択終了「続ける」

「このユーザが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

環境の作成が終わったら,作成した環境の再生ボタンから「Open Terminal」.

Terminalが開いて実行できる

Terminalが開いて実行できるようになるので,プログラムが置いてあるフォルダにcdコマンドで移動して,

python 実行したいpythonプログラムファイル.py

で実行できるようになる.

Anaconda-Navigatorでの追加ライブラリのインストール

AnacondaはGUIでライブラリが追加インストールできる.ここでは例としてTwitterのAPIを使うために必要なOauth認証に必要なrequests_oauthlibをインストールする.

conda-forgeというレポジトリ(AnacondaではChannelと呼称する)がよくメンテされているようなので,それを追加して,Anacondaから使えるようにする.

まず管理者権限をもつユーザでAnaconda-Navigatorを起動する.

管理者権限を持つユーザでAnaconda-Navigatorを起動する

「Environment」(環境)を選択→「当該プロジェクトで使っているAnacondaの環境(ここではrootだが,基本的には前述の通りプロジェクトごとに環境を作る)」が選択されていることを確認→「Channels」ボタンを押す.

環境を選択しChannelを追加する

ミニウィンドウが開くので「Add」

ミニウィンドウが開く

新たなフィールドに「conda-forge」チャンネルを入力.

新たなフィールドに「conda-forge」チャンネルを入力

追加したら「Update channels」

「Update channels」

もとの画面に戻るので「Update Index」すると,下のバーでIndexをアップデートしている進行状況が表示される.

「Update Index」

一番左のプルダウンメニューから「Not Installed」(まだインストールされていないライブラリの検索)→一番右のボックスに「ライブラリの名前」(ここでは「requests-oauthlib」)を入力すると,下のフィールドに検索結果が出てくる.

「Not Installed」→「ライブラリの名前入力」→検索結果がでる

ライブラリにチェックを入れて,「Apply」

ライブラリにチェックを入れて「Apply」

進行状況のミニウィンドウが出る.

進行状況のミニウィンドウ

入れたいライブラリに必要なライブラリ(依存関係と呼称する)が全て並んで出てくるので「Apply」.

依存関係の表示

プルダウンメニューを「Installed」にして,インストールされていることを確認する.

「Installed」で確認.

以上である.Environment→rootの再生マークからターミナルを呼び出しても使えるし,root環境に入れておけば,通常のターミナルから/Applications/anaconda/bin/python3でPythonインタプリタを呼び出した時もライブラリが使える.

Anacondaで環境をたくさん作り,使用するライブラリを切り替えることもできる.