今までJava、Perlをその場しのぎとして業務をしてきましたが、昨今の流れもあってPythonを使い始めました。
Amazonやアキバのヨドバシを眺めてみましたが、Pythonってあまり書籍がでていない...。その一方、RubyなんかはWebシステムの構築で使われる頻度が増えて、本があふれんばかり。
Rubyもいつかは身に付けたいけど、データの前処理用途で使おうと思うと、多次元配列に対応しているかや、科学計算ライブラリとかも気になる点です。 あるみにはあるにはあるみたいですが(いつか試してみよう...)。
「Pythonによるデータ分析入門」から始める
そんなわけで、出だしに手をつけたのが「Pythonによるデータ分析入門」です。 著者のWes McKinney氏は、クオンツとしての経験をもとにデータ処理ライブラリのpandasを作成されたことでも知られています。
内容としては、NumPy, pandas, matplotlib, IPython, Scipyといったデータ分析で利用されるライブラリをハンズオン形式で解説しています。ところどころ事例紹介があり、後々参考になりそうです。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (7件) を見る
読むための環境を整備する
IT関連の書籍にありがちですが、手を動かさないと頭に入ってこないので、環境を構築します。 備忘録代わりに日記にしたためておくとしよう。
手元のPCのスペック;
- MacBook Air 13.3インチ
- 2011年頃購入
- OSX Yosemite 10.10.2
Macにがっつり構築しようとするとバージョンアップ時やに困りそうなので、 仮想環境として構築します。
VMの準備
手始めに、Oracle VM VirtualBox, Vagrantをインストールします。
1. Boxのダウンロード
利用したい仮想マシンをダウンロードしてきます。
社内の環境でも使っていることから、Redhat系のディストリビューションということで、CentOSを入れます。
( centos70
は仮想マシンの識別名なので、適宜変更してください。)
$ vagrant box add centos70 https://dl.dropboxusercontent.com/s/srw2tqh58507wik/CentOS7.box
Boxはいくつか提供しているところがあるみたいですね(前者しか知りませんでした...)。
2. 仮想マシンの作成
仮想マシンを作成すると設定ファイル(Vagrantfile)が生成されるため、適切なディレクトリを作成してそこで下記のコマンドを実行します。
$ vagrant cenos70
ログがつらつらと吐き出され、仮想マシンが立ち上がりました。 下記コマンドで入れます。
$ vagrant ssh
ログインユーザはvagrant
となっています。
またrootユーザの初期パスワードは、vagrant
です。
また今回は自宅なので、特に必要はないのですが、会社などでproxyの設定が必要な方は、
後々のパッケージのインストールに先立ち、vagrant-proxyconf
を入れておきましょう。
$ vagrant plugin install vagrant-proxyconf
Vagrantfileに下記の行を追加します。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ...(以下の行を追記) config.proxy.http = "http://(ユーザID):(パスワード)@(Proxyのドメイン名):(Proxyのポート)" config.proxy.https = "http://(ユーザID):(パスワード)@(Proxyのドメイン名):(Proxyのポート)" config.proxy.no_proxy = "localhost,127.0.0.1" ...(以上の行を追記) end
仮想マシンを再起動します。
$ vagrant reload
CentOSのセットアップ
1. 基本セットアップ
開発環境を一式入れておきましょう。
$ sudo yum groupinstall "Development tools"
さらに、pyenvの利用に際して以下を追加します(参考: Common build problems · yyuu/pyenv Wiki · GitHub)
$ sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
あと、matplotlibのインストールする際に必要なものとして、
$ sudo yum install python-devel libpng-devel freetype-devel
必要に応じてproxyの設定をします。
# sudo vi /etc/profile ...(以下の行を追記) PROXY=http://(ユーザID):(パスワード)@(Proxyのドメイン名):(Proxyのポート) export http_proxy=$PROXY export https_proxy=$PROXY ...(以上の行を追記)
あと、F/Wも切っておきたいところです(甘えですが)。
# systemctl stop firewalld # systemctl disable firewalld
2. Pythonのインストール
2.X系、3.X系とありますが、何をしたいかで変更したい場合もあるかと思いますので、インストールバージョンを管理できるpyenvを利用します(以下では、XXXenv系をまとめて管理するanyenvを利用)。
$ git clone https://github.com/riywo/anyenv ~/.anyenv $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile $ exec $SHELL -l
pyenvをインストールします。
$ anyenv install pyenv $ exec $SHELL -l $ anyenv versions # インストールされたか確認
それではpythonをインストールしましょう。 まずはどれをインストールするかリストから選びます。
$ pyenv install --list Available versions: 2.1.3 2.2.3 2.3.7 2.4 2.4.1 2.4.2 2.4.3 ...(以下、省略)
今回は、3.4.2
をインストールします。
また、今後バージョンを使い分けることを想定して、~/dev/python
配下のみ
3.4.2
を使うことにします。
$ pyenv install 3.4.2 $ mkdir -p ~/dev/python $ cd ~/dev/python $ python --version Python 2.7.8 $ pyenv local 3.4.2 $ python --version Python 3.4.2
ライブラリのインストール
pythonのライブラリを管理するpipを使ってインストールしていきます。 順番は、
- Numpy
- Scipy <- Numpyが先に必要
- Pandas
- matplotlib
- IPython
1. Numpyのインストール
$ pip install numpy
2. Scipyのインストール
インストール結構時間かかるな...
$ pip install scipy
3. Pandasのインストール
- RのあのDataFrameが利用可能
- group byやmergeなどデータの取り回し機能ライブラリ
$ pip install pandas
4. matplotlibのインストール
- 2Dのチャート描画ライブラリ
$ pip install matplotlib
5. IPythonのインストール
$ pip install “ipython[notebook]"
外部からブラウザでアクセスできるようにします。
デフォルトはいじらず、プロファイルmyprof
を作り、その設定に修正を加えます。
ポートの変更もこのプロファイルで変更できます。
$ ipython profile create myprof $ vi ~/.ipython/profile_myprof/ipython_config.py ...(以下の行を追記) c.NotebookApp.ip = u'*' ...(以上の行を追記)
ようやくスタートライン
これでようやく読み始められます。
--no-browser
オプションは起動時にブラウザを自動的に起動しないため--matplotlib inline
オプションはmatplotlibをnotebook上で描画するため
ipython3 notebook --profile=myprof --no-browser --matplotlib inline &
あと使用されているデータは、pydata/pydata-book · GitHubからcloneしてきましょう。 ipythonを起動(上記のコマンドを実行した)ディレクトリに降りて、下記のコマンドを入力します。
$ git clone https://github.com/pydata/pydata-book
本の中では~/ch0X/
となっている点を~/pydata-book/ch0X/
と読み替えればいけるかと。
最後にhttp://localhost:8888から始めるとしましょう。