IPython は非常に強力な対話環境で、探索的なデータ分析には欠かせません。対話的な操作環境からコードを実行することができ、インタプリタ言語の生産性を十二分に体感することができるでしょう。似たような環境として Ruby における pry が挙げられるかと思いますが、インタラクティブシェルの完成度においても IPython が一歩リードしているのではないかと思います。
最新の IPython を使う
IPython コミュニティは開発のスピードが速く、昨年 2013 年の夏にリリースされたバージョン 1.0 から今年 2014 年 4 月にリリースされた IPython 2.0 までの間に 650 のプルリクエストがマージされ 400 のイシューと 4000 のコミットがされています。また現在は 3.0 系が開発中でそのロードマップは GitHub で知ることができます。シングルコードベースでの Python 3.x 系のサポートなどさまざまな点で進化しており、セキュリティなども改善されているため、旧 1.x 系を利用しているならすぐに最新の 2.0 系にアップデートするべきです。執筆時点での最新版は 8/6 にリリースされセキュリティフィックスがされたばかりのバージョン 2.2 です。
最新情報はこちらから確認できます。また、最新版へのアップグレードは次のようにおこないます。
ipython --version # IPython のバージョンを確認する
pip install --upgrade ipython # 古ければ最新にアップグレード
また pip でインストールされたパッケージを、フリーズされたものを除いて最新にアップグレードするには次のようにします。
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip install -U
初期化スクリプト
Python ならいつもインポートするお決まりのライブラリがあると思います。例えば sys, os や numpy as np などです。
~/.ipython/profile_default/startup/ ディレクトリに IPython 起動時に実行したいスクリプトを入れておくと実行されます。なお、読み込み順はファイル名の辞書順なので GNU/Linux のデーモン起動スクリプトのように 00-first.py のように頭に番号を付けておくと管理しやすくなります。
import sys, os
import readline
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib.pyplot as plt
最低でもこれくらいは書いておくと便利でしょう。
イントロスペクション
オブジェクトの前または後に ? をひとつ付けると docstring が、 ?? を付けるとソースコードが表示されます。ソースコードは環境にもよりますがシンタックスハイライトされて表示されるので非常に強力です。使いたいライブラリの関数についてその都度コードを手軽に確認できるのは挙動を理解するのに役立ちます。
ipython
df = pd.read_csv("data.csv")
df?? # データフレームのソースコードが表示される
df.plot?? # プロット関数のソースコードが表示される (オプションなど確認可能)
既存コードの実行
書き途中のコード片をテストしたいがためにインタラクティブシェルにソースコードをコピペするのはあまりにナンセンスです。
IPython は %run コマンドで既存のソースコードを実行することができます。この % ではじまるコマンドはマジックコマンドと言われます。 % のあとにタブキーを押すことでどのようなマジックコマンドが存在するのかわかります。意味も名前だけ見てたいていは推測できるでしょう。
%run ~/source/your_code.py
上の例では your_code.py が実行されるだけでなく、クラス、変数などのオブジェクトがその後も IPython で使用可能になります。
シェルにコピペをする場合
少々ダサいながらもコードをインタラクティブシェルに貼り付けたい場面というのはあります。筆者のおすすめは %cpaste を使う方法です。
%cpaste
# このあとコードを貼り付ける
履歴の保存
前回も最後に紹介しましたが readline.write_history_file で履歴をファイルに保存できます。
readline.write_history_file("history.py")
またセッション全体の保存には %logstart でロギングをすると便利です。既定で ipython_log.py というファイルに履歴が保存されます。
その他の豊富な機能
IPython には他にも紹介しきれないほどの便利な機能が充実しています。本家のドキュメントを読むのが良いでしょう。