読者です 読者をやめる 読者になる 読者になる

Pythonで統計の環境構築から集計とグラフ描画まで

これまでRとかExcelとかで回帰分析やってたけど、Pythonでもできるように環境整えるところから始めます。 メモって置かないと次、構築するときに忘れるのでメモです。

OSはWindows7(64bit)で試しましたが8でも同じはず。 Pythonは2.7.5(32bit)。

0. Pythonのインストール

すでに終わってるとは思いますが念のため。 http://www.python.org/ からPython2.7.x系のインストラーをダウンロードします。 対応しているモジュールの関係でまだ32bit版のほうがいいです。 3.3.x系でも特に問題はないと思いますが、多少文法変わってたり、モジュールが使えなかったりするので、2.7.x系のほうが無難だと思います。

インストールが終わったら、環境変数に「python.exe」のあるディレクトリ(特に変更していない場合はC:\Python27)を追加するのを忘れずに。 ちゃんと追加されていればコマンドプロンプトで以下のように入力して実行するとインストールしたPythonのバージョンが表示されるはずです。

> python --version

1. NumPy, SciPy, Matplotlibのインストール

NumPyはN次元の配列を扱いやすくするパッケージ。

SciPyは科学計算関係の統合パッケージ。

Matplotlibは様々なグラフを描くためのパッケージ。

http://www.numpy.org/

http://www.scipy.org/

http://matplotlib.org/

の各ページからWindows用のインストーラーをダウンロードして実行。 Pythonのバージョンと32bit, 64bitを間違えないように注意。

2. easy_install, pipのインストール

easy_install

easy_installはPHPでいうPEARみたいなもので、各種パッケージのインストールをその名の通り簡単にしてくれるツール。 pipはそれを置き換えるものとして開発されています。

https://pypi.python.org/pypi/setuptools 上記サイトからWindows用のインストールに進み、「ez_install.py」をダウンロードする。

コマンドプロンプトから

> python ez_install.py

と実行すると、Pythonのインストールディレクトリ/Scripts/に「easy_install.exe」ができているはず。

環境変数Scriptsディレクトリを追加。標準だとC:\Python27\Scripts;と追加すればOKなはず。

その後コマンドプロンプトを再起動して、

> easy_install --help

Global options:~~~って感じでずらずらとオプションの説明が出てくれば完了。

pip

easy_installからインストールする。 コマンドプロンプトから以下のコマンドを実行。

> easy_install pip

以下のコマンドを実行してずらずらっと表示が出ればOK。

> pip -h

3. その他のパッケージのインストール

Matplotlibに必要なパッケージをeasy_installでインストールします。 pyparsing コマンドプロンプトから

> pip install pyparsing

でインストールできます。

dateutil

> easy_install python-dateutil==1.5

でインストールできます。 バージョン指定しないと3.0以降でしか使えないバージョン2がインストールされてしまうので注意。

4. 実際に適当に集計してみる

適当な乱数を出力して、それの基本的な統計量をとってみます。 ソースコードは以下に置きました。

Pythonで基本的な統計量を出力してみる · GitHub

実行すると以下のように出力されるはずです。(乱数でデータを生成しているので数値は変動します)


Max x: 189.75 y: 84.73
Min x: 153.17 y: 41.2
Avg x: 172.1967 y: 62.3155
1Q x:167.815 y: 57.0675
Med x: 172.425 y: 61.68
3Q x:176.495 y: 67.35
Var x: 39.31919611 y: 63.87700275
S.D. x: 6.27050206204 y:7.99230897488
Correlation Coefficient : 0.870409290776

各項目の説明。

最大値、最小値

配列の中で最も大きな数値と小さな数値です。

平均値

算術平均をとった値です。

中央値

全体の配列をソートしたときに、ちょうど真ん中に位置する値です。 平均値と違い、極端に大きい値や小さい値(外れ値)が入っていても影響を受けないという点があります。

第1四分位、第3四分位

全体の配列をソートしたときに、それぞれ25%と75%に位置する値です。 この値と中央値をみると、データがどのような分布になっているのかが少しわかります。 図にしたほうがわかりやすいですけどね。

分散、標準偏差

分散はデータのばらつき具合を表す数値です。 標準偏差は、分散の平方根をとった値で、同じくデータのばらつき具合を表します。

相関係数

2つのデータが、どの程度比例を表す数値です。 1に近いほど同じ傾向があることになり、0だと全く関係がないことになります。 -1だと反対の傾向があるということになります。

5. 実際にグラフを描いてみる

ソースコードは以下に置きました。

Pythonでヒストグラムと箱ひげ図を描く · GitHub

実行すると以下のように図が出ます。

左側の棒グラフはヒストグラムで、下軸の各区間に入るデータが何個あるかを表しています。 右図は箱ひげ図というもので、中央の赤い線が中央値、箱の上下が第3四分位、第1四分位を表します。

箱から生えている棒は、箱長さの最大1.5倍(引数で変更可)まで伸び、データの存在範囲を示します。

もしそれを超えるデータがある場合は点でプロットされます。

以上でグラフ描画まで終わりです。

この後、Pythonで回帰分析してみようと思って、statsmodelsとかを調べていたのですが、predict()とかがうまく動かなくて断念。

Pythonの統計パッケージ、種類いっぱいあって、逆に資料が少なくてよくわかないです・・・。

このへんの分析パッケージの使い方はRのほうがいろいろ資料まとまってていいなぁと思いましたが、グラフはPythonのほうが描きやすいと思ったのでどうしたものかなぁという次第です。

関連エントリ


Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!]

Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!]

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)