StatsBeginner: 初学者の統計学習ノート

初学者が統計学、機械学習、R、Pythonの勉強の過程をメモっていくノート。

Python入門初日:環境の構築など

 《2016.1.6追記》
 なぜか数日前からこの記事に数名の方にブックマークしていただいているのですが、これは結構古いエントリでして、その後Pythonの環境は、Anacondaというパッケージを入れて同梱されているSpyderというIDEを使う方法で落ち着きましたので、その記事(リンク)のほうをご覧いただければと思います。
 ↓の記事は、色々分かってない段階で書いたものでして、用語の使い方とかもイマイチです(;´▽`A``



 Python入門初日です。
 先日のエントリでも書いたとおり、↓の教科書を買って、通勤電車とかでパラパラ読んでるんですが、パソコンで実際に書いたりしてみるのは今日が最初です。
 とりあえず2時間ぐらいだけやりました。これから研究の作業に戻りますが、今日やったことだけメモっておきます。


Pythonスタートブック

Pythonスタートブック

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

 
 

環境の構築など

 まずそもそも、Pythonの勉強をするといっても、いきなりどこかにプログラムを書くのではなく、その前にまず開発・実行環境を用意しないといけないわけですが、プログラミングとかさっぱりな私にはまったくイメージが湧きません。
 意味を理解してないところも多いのですが、とりあえず今日やったことを書いておきます。内容はMacの場合です。
 まとめると、最初にやるべきことは「Python本体のインストール」「便利なツール一式(Canopy)のインストール」「プログラミングを支援してくれる機能のついたテキストエディタのインストール」ですね。
 
 

Python本体

 私はMacをつかってますが、MacにはPython2.7.5が最初からインストールされているので、Python本体をインストールする必要はないようです。
 なお、いまはPython2とPython3が両方とも使われている移行期で、Python3はPython2との互換性がないのでどっちを使うべきかというのは人それぞれのようです。3を使いたければPythonの公式サイトでダウンロードする必要があります。
 ↓の記事に2か3かの問題がまとめられていました。

 
よりPythonicなPythonを目指して(前編):Python 3が後方互換性を捨ててでも求めたもの (1/2) - @IT
Programing Bible:Python 3.0で大きく変わる言語仕様 (1/2) - ITmedia エンタープライズ


 ただ、とりあえず私が買った教科書『Pythonスタートブック』に書かれてある内容は、Python2を前提に解説されてはいるものの全て3でも動くらしく、『Pythonによるデータ分析入門』のほうもPython2で書いてるけど一部のコードを除いて問題なく両方で動くようです。
 
 

拡張版のインタラクティブシェルと各種パッケージのインストール

 私が買った教科書『Pythonスタートブック』では、ターミナルからPythonのインタラクティブシェルを起動して使うという使い方で解説されています。
 このシェルってのが何なのかそもそもよく分かってないのですが、Rでいうコンソールみたいなもので、コマンドを打ち込んでは実行してその結果を表示させてというのを対話的(インタラクティブ)にやるための画面のことを言ってるようです*1
 Macのターミナル(Windowsのコマンドプロンプト)みたいなものを指してると思えばいいんでしょうかね。


 で、Python標準のシェルについては、ターミナルに「python」と打ってPythonを起動すればターミナルの画面そのものがPythonのシェルになるので、それだけでいいようです。『Pythonスタートブック』はそういう方法で解説されてます。
f:id:midnightseminar:20140823114405p:plain
 
 ちなみにもう一冊の『Pythonによるデータ分析入門』は、IPython(IPython - Wikipedia)という拡張されたシェルを使えと推奨していました。これも、操作としてはターミナルから動かすようですが(という理解でいいのかな)。
 IPythonを単体でダウンロードしてもいいんでしょうけど、教科書ではそれよりも「Canopy Express」ってのをダウンロードしろと書いてあります。(ココからダウンロード)


 しかしこれは何なのか?
 データ分析目的でPythonを使い始めるときの環境構築について、↓このページに情報が一式まとめられていたのですが、
 データ解析のためのPythonインストールまとめ - Qiita
 このページの下のほうにも書かれてあるように、Canopy Expressをインストールすれば、NumPy、SciPy、matplotlib、IPython、pandasといった必要なツール(ライブラリ)がまとめて使えるようになるようです。


 『Pythonによるデータ分析入門』は、様々な計算に使うツールが詰まったライブラリである「NumPy」「SciPy」「pandas」、データ可視化のツールが詰まった「matplotlib」、そしてこれらをつかった開発を支援する「IPython」の使い方を解説する教科書です。IPythonの解説にも1章が割かれています。なんか、色々支援してくれるらしいです(意味不明w)。


 というわけで一応、Canopy Expressはインストールすることにしました。
 ただ、どうやらその前にXcode(MacとかiPhoneのアプリを開発する人たちがつかってるあれですね)をインストールする必要があり、Xcodeを開いてまずCommand Line Toolsというのをダウンロードしないといけないんですが、これが去年ぐらいからXcode本体からはダウンロードできないように変更されたらしく、教科書はそれ以前に書かれているので困りました。
 現在の適切なやり方は、↓このページにまとめてありました。
 Xcode5にCommand Line Tools(コマンドラインツール)をインストールする
 まずAppleのディベロッパーサイトに行って、ディベロッパーとして登録(一瞬で完了する)した上で、ダウンロード画面から「Command Line Tools (OS X 10.9) for Xcode」というやつを選んでダウンロードすればいいです。


 というわけでダウンロード・インストールはできたのですが、とりあえず私は『Pythonによるデータ分析入門』ではなく『Pythonスタートブック』に書いてあることをひととおりやってみようと思っているので、まずはターミナルから標準のシェルを使ってみることにして、IPythonはあとでやってみます。
 なので、現時点では、Xcodeが何に必要なのかも分かってません。
 
 

テキストエディタ

 ところで、計算とかはシェルというところにコマンドを打ち込んで実行していくわけですが、長い命令はテキストファイルにコードを書いて保存して、それを呼び出すことになります。
 ちなみに『Pythonによるデータ分析入門』の著者は、IDE(統合開発環境)を使いたい人もいるだろうが、自分はIPythonとテキストエディタでやるのが好きなのだと書いてます。


 私の場合、大して高度なことはやらないはずなので、逆の意味でテキストエディタで十分な気がします。Rだと、R本体についてるエディタをつかってスクリプトを保存してるんですけど。


 テキストエディタは、『Pythonスタートブック』ではTextWranglerというのがオススメされていましたが、私はいつもCotEditorというのを使っているので、それを使うことにします。
 たぶんこれはマイナーなエディタなんですが、ちゃんと CotEditorにもPythonモードがあるし、SQLやXMLのモードもあります。べつに高度なことはやらないし初心者なので、構文にあわせて色をつけてくれればそれでOKです。


 f:id:midnightseminar:20140823110623p:plain


 改行コード、文字コード、言語が簡単に分かる/選べるようになっていて、シンプルで使いやすいです。
 
 

最初のつまづき

 とりあえず『Pythonスタートブック』に書かれてある基本的な操作をやってみました。
 内容はしょうもないのでいちいちここに書きませんが、最初のつまづきとして、テキストエディタで書いたスクリプトを保存して実行する手順を間違えていたのでメモっておきます。


 さっきの画像と同じなんですが、教科書にしたがって、じゃんけんの「goo」「choki」「pa」をランダムに表示される4行だけのコードを

import random
data = ['goo', 'choki', 'pa']
data_choice = random.choice(data)
print(data_choice)


 というふうにテキストファイルに書いて、「janken.py」という名前で保存しました。
 で、教科書には、そのファイルがあるディレクトリに移動した上で

python janken.py


 と打ってみれば実行されるよ、と書いてあります。
 ところが、これをやってみると、

>>> python janken.py
  File "<stdin>", line 1
    python janken.py
                ^
SyntaxError: invalid syntax


 というふうにエラーになってしまって、意味がわかりませんでした。
 これはググってみると、Yahoo!知恵袋にも同じ問題に嵌まった人がいたので解決しました。
 Pythonでファイルを実行できなくなりました。 - 以前少し使っていたPythonを再... - Yahoo!知恵袋


 要するに、Pythonのシェルを起動した状態で打つのではなく、いったんquit()でPythonは終了してOSのシェルとして打たなければならなかったようです。
 教科書の解説の流れだと、Pythonのインタラクティブシェルでコマンドを打つ練習をしたあとに、同じ内容をテキストファイルに保存して呼び出してみよ〜という流れて書いてあったので、この間違いにハマってしまいました。
 一応教科書にも、

こうして保存されたPythonのスクリプトファイルは、OSのシェルから実行します。たとえば、script.pyという名前で保存されたプログラムを実行するときは、OSのシェルで「Python script.py」と入力します。


とは書いてあったのですが、「OSの」というところを意識してなくて間違ってしまいました。

*1:「対話的」というのは、命令を1個いれたらその反応が返ってきて、それをみてまた次の命令を……というふうに進めていくという意味で、長いプログラムを書き上げて一気に実行というのとは違うよという意味。