Think Stats 第2版第1章のnsfg.pyを動かす

Think Stats 第2版 第1章 1.3 データのインポート。
ThinkStats2/code/nsfg.pyを実行してください。

これを実行するのにすごい時間がかかった・・・
まだ1章だぞ!?4ページ目だ!知識がなさすぎて嫌になってくる・・・

結論から言うと、IPythonのシェルを起動した状態で、%runマジックメソッドで実行する。
他に方法あったら教えて下さいー

  1. pyenvでAnacondaをインストール
  2. nsfg.pyを実行したらエラー
  3. IPythonを使って実行

1. pyenvでAnacondaをインストール

ThinkStatsではPythonの解析ツールが色々入ってるAnacondaを進めている。
素直に従おう。

ローカルのMac環境にanacondaをインストール。
pyenvのインストール方法はこちらを参照

pyenv install anaconda3-2.3.0

anacondaを有効にする(自分の環境ではpyenv localもしないと有効にならないんだけど?)

pyenv global anaconda3-2.3.0
pyenv local anaconda3-2.3.0

anacondaが有効になったか確認。

pyenv version

## 以下が表示されるはず
anaconda3-2.3.0 (set by /Users/runble1/.pyenv/version)

2. nsfg.pyを実行したらエラー

実行ファイルなどはgithubからダウンロードできる。

GitHub - AllenDowney/ThinkStats2: Text and supporting code for Think Stats, 2nd Edition
Text and supporting code for Think Stats, 2nd Edition - GitHub - AllenDowney/ThinkStats2: Text and supporting code for T...

今回はgit cloneで。

git clone https://github.com/AllenDowney/ThinkStats2.git

何も考えずに実行。

python ThinkStats2/code/nsfg.py
## いかが表示された
Traceback (most recent call last):
 File "Downloads/ThinkStats2-master/code/nsfg.py", line 106, in <module>
 main(*sys.argv)
 File "Downloads/ThinkStats2-master/code/nsfg.py", line 82, in main
 df = ReadFemPreg()
 File "Downloads/ThinkStats2-master/code/nsfg.py", line 26, in ReadFemPreg
 dct = thinkstats2.ReadStataDct(dct_file)
 File "/Users/runble1/Downloads/ThinkStats2-master/code/thinkstats2.py", line 2610, in ReadStataDct
 for line in open(dct_file, **options):
 FileNotFoundError: [Errno 2] No such file or directory: '2002FemPreg.dct'

2002FemPreg.dctファイルがないって。
いやいや!ディレクトリ確認したらあるし!

ここで詰んでた。

3. iPythonを使って実行

iPythonを起動。

ipython

ipythonのシェルが起動している状態でnsfg.pyを実行。
%runはマジックコマンドと呼ばれ、pythonファイルを実行する。

%run nsfg.py

## いかが表示された
/Users/runble1/work/ThinkStats2/code/nsfg.py:42: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
 df.birthwgt_lb[df.birthwgt_lb > 20] = np.nan
(13593, 244)
nsfg.py: All tests passed.

Warningとか出ているけど、All tests passedなんで成功か。

参考

Think Stats 第2版 ―プログラマのための統計入門

IPythonの使い方 – Qiita

コメント

タイトルとURLをコピーしました