対象読者
- Pythonの基本的な文法を理解しておりデータ解析のスキルアップに取り組みたい方
サンプルの動作確認環境
- MacOS 10.13
- Anaconda 5.1
- Python 3.6
- Jupyter Notebook 5.4
Pythonとデータ解析環境の概要
本連載ではPythonによるデータ解析について解説していきます。まずスクリプト言語としてのPythonとデータ解析環境の概要を確認します。
データ解析に適したスクリプト言語
データを集めたり加工したりする過程でよく使われるのがスクリプト言語です。データ解析の場面で必要なデータはさまざまな場所に存在してます。初めて見るデータを扱うことも珍しくありません。サーバーからダウンロードする場合もあれば、API経由で取得するものもあります。他のツールに受け渡すために、加工(前処理)が必要なデータもあります。スクリプト言語はこのような課題を解決するのに適しています。
データ解析の分野で使われるスクリプト言語はいくつかありますが、なかでも人気があるのは「R」と「Python」の2つです。Rはもともと統計解析のために開発された言語で、データ解析のライブラリが充実しており、統計解析の専門家に人気があります。
一方Pythonは、シンプルで汎用的なスクリプト型のプログラミング言語です。豊富なサードパーティー製のライブラリが公開されています。数値計算の分野で用いられてきた歴史があり、データ解析関連のライブラリも充実しています。代表的なものでNumPy(数値計算)、pandas(データ解析)、scikitlearn(機械学習)などがあります。データ解析以外でも、Web開発の分野ではWebアプリケーションフレームワークのDjangoやFlaskが人気があります。
PythonとRの特徴を比較すると下記の通りになります。
スクリプト言語 | Python | R |
---|---|---|
データ解析関連ライブラリ | ○ | ◎ |
API連携や複雑なデータ処理 | ◎ | ○ |
Pythonは最近ではディープラーニングに対応したTensorFlowなど、特に機械学習のライブラリ・フレームワークが充実してきています。そのためデータを扱うエンジニアの間ではPythonの人気が高まっています。本連載ではこういった理由からPythonを取り上げます。
Pythonによるデータ解析環境
Pythonによるデータ解析では下記のライブラリがよく使われます。
- NumPy(数値計算)
- pandas(データ解析)
- matplotlib(データ可視化)
また、これらを利用しながらPythonを実行し、メモや可視化を行うことができるツールとして「Jupyter Notebook」がよく用いられます。
Jupyter Notebookはウェブブラウザで動作します。対話型でPythonなどプログラムを実行することができる多機能なエディターです。上の画面の通り、Pythonのプログラムを実行し、結果を確認する、といったサイクルを回しながら使用します。マークダウン形式でメモを記述したり、グラフを表示したりしながら作成します。全体を表現力のあるドキュメントとしてファイル保存もできます。
以下ではこれらのツール・ライブラリの導入方法や概要を確認していきます。
データ解析環境の導入方法
ツールやライブラリを手元のパソコンで動かすための導入方法を紹介します。導入方法はいくつかありますが、Anacondaでの導入をお勧めします。Anacondaはデータ解析環境を導入するための無償のディストリビューションです。BSDライセンスで利用できます。ライブラリやツールを個別でも入れられますが、個別のツール導入時にトラブルが起こることがあります。特にPythonのライブラリ管理に慣れていない方はAnacondaを検討してください。
Anacondaは公式ページからダウンロードし、インストールします。OSはMac/Linux/Windowsに対応しています。Pythonは3系(Version 3.X)と2系(Version 2.X)があります。ダウンロード時にどちらかを選ぶようになっているので、特に理由がない限り3系を選んでください。
インストールはOSごとに用意されたインストーラーの指示に従います。インストール後、下記のコマンドをコンソールやコマンドプロンプトで実行してください。
なお、以下の文章ではMacのコンソールを用いています。Windowsではコマンドプロンプトに置き換えて実行してください。
$ cd ~/jupyter $ jupyter notebook
上記のようにブラウザでJupyter Notebookが立ち上がればAnacondaのインストールは成功し、ツールを利用できるようになっています。