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

R から Python に乗り換える

プログラミング Python

r は統計処理やグラフ作成では非常に便利だが、プログラミング言語として使うとなるとうんざりさせられる。
r はこれで動くだろう、と言った直感的なやり方が滅多に通用せず、"r ではこうやることになっている" といったようなことをいちいちネットや分厚い本から探す必要がある。ruby などの糖衣にくるまれた言語に慣れているとこういったことは非常にストレスになる。
それでも圧倒的なライブラリとユーザ数の暴力でこれまでは使わざるを得なかったが、近年の機械学習のブームで? python の科学計算も r と遜色が無くなってきたようだ。
プログラミング言語としてはどう考えても r より python の方が使いやすいので、乗り換えることにした。
python を使うのは久しぶりだが、これを機に 3.5 系に移行しようと思う。
しかし python は未だに大部分の人が 2.7 を使っていて驚きだ。macubuntu のデフォルトも未だ 2.7 だ。
ruby で言えば 1.8 位を未だに使っているイメージだろうか?
以前は ruby の過去バージョンの切り捨てとコロコロ変わる仕様にいらいらさせられたものだが、python の現状を見るとそれも一つの戦略なのか、と思える。
ruby は確かに使いやすくなっている。
バージョンアップ時の手間は最新のプログラミングのための税金のような物だ。
そしてそれはきっと払う価値はあるのだろう。
安定性や過去の資産の利用という意味では python の戦略もありなのだろうが、新たな概念や方法を取り込むのが難しくなる。
この辺りはどちらが良いと言うわけではなく、状況に依ったトレードオフがあるのだろう。

話がそれたが、現在の私の環境は 2.7 系なので、まずは 3.5 をインストールする。
バージョン管理もすべきなのだろうか?
とりあえずは Download Python | Python.org から 3.5.1 をダウンロードしてインストールする。

$ python -V
Python 2.7.10
$ python3 -V
Python 3.5.1

3.5 を使うには python3 まで入力しないといけないようだ。
挙動が変わるといやなので面倒だが当初はこのまま使うことにする。
python におけるパッケージ管理は pip で行う。

$ pip3 install numpy scipy matplotlib

この辺りがあればとりあえず R の代用にはなる。後は追々。
試しに何かグラフを書いてみる。参考 : matplotlib: python plotting — Matplotlib 1.5.1 documentation

# pltest.py

import matplotlib.pyplot as plt
import numpy as np

# 3 種類のデータセット
M = [70, 74, 63, 92, 45]
E = [66, 90, 59, 78, 52]
J = [70, 64, 78, 77, 67]

# グラフの描画
bplot = plt.boxplot([M, E, J], vert=True, patch_artist=True)

# 色づけ
colors = ['pink', 'lightblue', 'lightgreen']
for patch, color in zip(bplot['boxes'], colors):
	patch.set_facecolor(color)

# GUI の起動
plt.show()

f:id:gensym:20160407141402p:plain
良い感じだ。
少しずつ勉強していこう。