Chapter31. Y U M I K O N A G ATA K E
D E C . 1 9 . 2 0 1 4
PYTHON FOR DATA
ANALYSIS (3)
9. 3.1.3 %run コマンド(1)
• %runコマンドを使うと、Pythonプログラムを起動でき
る。
(ファイルに保存されているスクリプトを実⾏行行する。)
chap3.py
実⾏行行中コードを終了了する場合は、<Ctrl-‐‑‒C>を押しましょ
う。
11. 3.1.5 キーボードショートカット
コマンド
説明
Ctrl-p or ↑
コマンド履履歴から⼊入⼒力力したものを遡って表⽰示
Ctrl-N or ↓ コマンド履履歴から⼊入⼒力力したものを時系列列順に表⽰示
Ctrl-R コマンド履履歴を遡ってインクリメンタルサーチ(?)
Ctrl-Shift-V クリップボードから貼り付け
Ctrl-C 実⾏行行中コードの中断
Ctrl-A カーソルを⾏行行頭へ
Ctrl-E カーソルを⾏行行末へ
Ctrl-K カーソル位置から⾏行行末までのテキストを削除
Ctrl-U 現在⼊入⼒力力している⾏行行の全てのテキストを削除
Ctrl-F カーソルを1⽂文字分進める
Ctrl-B カーソルを1⽂文字分戻す
Ctrl-L 画⾯面の消去
13. 3.1.7 マジックコマンド(2)
コマンド
説明
%quickref Ipythonのクイックリファレンスを表⽰示
%magic 全てのマジックコマンドの詳細な説明を表⽰示
%hist コマンド⼊入⼒力力の履履歴を表⽰示
%pdb
例例外発⽣生後のデバッガー⾃自動切切り替え
%paste クリップボード内の整形済みコードの実⾏行行
%cpaste Pythonコードの実⾏行行のための特別なプロンプトを表⽰示
%reset 名前空間から名前を削除する
%page OBJECT 引数のObjectを綺麗麗に表⽰示する(less と同じ?)
14. 3.1.7 マジックコマンド(3)
コマンド
説明
%run script.py 引数(script.py)を、IPython内で実⾏行行
%prun statement プロファイラ出⼒力力を表⽰示し、cProfile付きの命令令を実⾏行行
%time statement 命令令の実⾏行行時間を計測
%timeit
statement
命令令の実⾏行行時間を複数回計測
%who, %who_ls,
%whos
利利⽤用中の名前空間の中にある、変数のリストを返す
%xdel variable オブジェクトを削除
15. 3.1.9 Matplotlib 連携・Pylabモード
• Ipythonでmatplotlibを起動すると…
*IPythonシェルが、描画中も機能する
*IPythonをmatplotlib機能付きで起動するには…
$ ipython -‐‑‒-‐‑‒pylab
• matplotlibについては、後述で記載します
17. 3.3 オペレーティングシステムとの連携
コマンド
説明
!cmd
OSのシェル上でcmdを実⾏行行
output = !cmd args cmdを実⾏行行し、stdoutに出⼒力力される実⾏行行結果を保管
%alias alias_name
cmd
シェルコマンドに別名をつける
%bookmark ディレクトリブックマーク機能を有効にする
%cd directory
引数先のディレクトリへ移動
%pwd 現在の作業ディレクトリを表⽰示
%pushd directory 現在の作業ディレクトリを保存し、引数先へ移動
%popd スタックに保存されたディレクトリを削除し、そこへ
ディレクトリを移動
%dirs 現在のディレクトリのスタック状況を表⽰示
%dhist ディレクトリの訪問履履歴を表⽰示
%env
システム環境変数を、ディクショナリ変数に変換
21. 3.5 処理時間計測:%time と %timeit
• データ分析アプリケーションが⼤大規模になったり、
⻑⾧長時間実⾏行行する場合、どの関数がいちばん時間がかかっ
ているか、等実⾏行行時間の計測は⾮非常に重要!
(しかしレベルはさまざま…)
• でも、処理理時間の計測のためにコードを書くのが⾯面倒く
さい!
→%timeや%timeitを利利⽤用しよう
%time 指定した処理理を1度度だけ実⾏行行
(ex. ⽂文字列列リストのうち、特定の⽂文字列列から始まるものを抽出する
場合、各methodの⽐比較ができる)
22. 3.5 処理時間計測:%time と %timeit(2)
• 作業:600,000の⽂文字列列からなるリストから、ʼ’fooʼ’から
始まる⽂文字列列を抽出する
strings = ['foo', 'foobar', 'baz', 'qux',
'python', 'Guido Van Rossum'] * 100000
method1 = [x for x in strings if x.startswith('foo')]
method2 = [x for x in strings if x[:3] == 'foo']
このmethod2つを%timeで簡単に⽐比較できる!
24. 3.5 処理時間計測:%time と %timeit(4)
• ちなみに・・・Wall time : 実⾏行行処理理時間
この値は厳密な計測とはいえない(何度度かやると、毎回
値が違う可能性が⾼高い)
• そこで、%timeitの登場!
有⽤用な場⾯面:実⾏行行時間がものすごく短いもの
25. 3.6 IPython HTMLノートブック
• (今更更かもしれませんが・・・)
IPythonノートブック
:Web技術を基盤とした⽂文書フォーマット
コードの出⼒力力や図の共有に⾮非常に便便利利!
起動⽅方法は
$ipython notebook 00pylab=inline