この記事は以下の人に向けて書いています。
- Pythonを使ったデータ分析に興味があるエンジニア
- Pythonを使ったデータ分析の手法と基本的なフローについて知りたい方
- Pythonを使うデータ分析の実践に役立つツールや書籍が知りたい方
はじめに
データ分析の世界において、いまや必須の言語ともいえる「Python」。
「稼げるプログラミング言語のランキング」でも上位にあるため、気になっている方も多いと思います。
Pythonの主な利点として、「大量のデータを高速に集計出来る」「集計したデータのビジュアル化が簡単」といったものが挙げられます。
では具体的に、どんなシーンで活躍するのでしょうか。
この記事では、Pythonの学習を考えている人向けに、その特徴や強み、またデータ解析によく使われる「R言語」との違いなどを解説していきます。
あわせて、実際にPythonでデータ分析を行う上でのフローや、今後の学習に役立つツール書籍も紹介していきますので、ぜひ参考にしてみてください。
1.「機械学習」を実装するならPython!その特徴やできること
データ解析でPythonを使う最も大きなメリットは「機械学習」を実装しやすいという点。
機械学習に必要となる大量のデータの取得・分類するためのパッケージが充実しており、他の言語と比べて比較的簡単に実装が可能となっています。
そのほか、Pythonで出来ることや、他の言語や分析ツールとの違いについてみていきましょう。
①Pythonを使ってできる具体的なこと
データ分析業務において、Pythonは下記のように様々なことが出来ます。
・ネット上にあるデータの取得(スクレイピング)
・APIを利用したサービス内のデータ取得
・データの加工
・機械学習の実装
・API構築やWebアプリの作成
これらを見てわかるとおり、データの収集、加工、機械学習モデルの構築から、Webアプリ作成まで、Python言語ひとつですべてカバーできるのが大きな強みです。
②使いやすさが断トツ!他のデータ解析言語との違い
Pythonは、プログラミング言語の中でも構成が非常にシンプルで、初学者でも覚えやすい言語と言われています。
加えて、エクセルやBIツールのTableauといったものよりも、処理出来るデータ量も多いことが特徴。
同じくデータ解析で使われるR言語や、エクセル、Tableauなどとの比較表を作成してみました。
③Pythonを使うべき場面・使わなくてもよい場面
とはいえ、どんな場面であれ無条件にPythonを使うべきか…といえばそうではありまあせん。
たとえば、扱うデータ量が比較的少なく、ビジュアル化に重点が置かれているような場合は、エクセルやTableauを使ったほうが早いでしょう。Pythonでも様々なライブラリを使ってデータをビジュアル化することは可能ですが、TableauなどのBIツールの手軽さには敵いません。
Pythonを使うべき場面は、ウェブサービスやアプリの行動ログ解析など、エクセル等では処理しきれない大量のデータを扱うような場合となります。
2.大切なのは「下準備!」Pythonを使ったデータ解析フロー4ステップ
では、実際にデータ解析をPythonを使って行う場合、どんなフローが必要となるのでしょう。
Pythonに限らず、データ解析で重要となるのは、課題の設定や適切なデータの集計といった前準備。例え技術を知っていても、ここがおろそかになっていると有用な結果を得
ることはできません。
ここではPythonを利用したデータ解析のステップを
①課題設定
②集計
③前処理
④モデル化
の4ステップに分け、それぞれ具体的な作業内容を紹介していきます。
①課題設定
まず最初に、分析によって何を知りたいのか…ということを定義していきます。
例えば、
・ソーシャルゲームの離脱者の要因について解析したい
・売上のデータに対して、異常な値が出ている期間をあぶり出したい
といった形です。
この課題設定が売上に直結している課題であれば、データ解析をすることで、売上増を達成できる施策を生み出すことができる可能性があります。
しかし、そもそも解析可能なデータが存在しないなど、データ解析者だけでは課題設定が出来ない場合も多々あります。
そんなときに頼りにすべきは、ビジネスサイド側にいる方。
「ビジネスにおける課題への肌感」をデータサイエンティストより持っているため、適切な課題設計のためにはその知見を借りることが重要。
念入りにディスカッションし、仮説・課題設定・データ解析の工数などを事前に擦り合わせることにより、適切な課題設計を行います。
②集計
集計の目的は、データの傾向を把握することです。
前章で説明した通り、「集計」においてPythonを使うメリットは、
・大量のデータを素早く捌くことが出来る
・ある項目ごとの合計・平均を算出したり、複数ファイルの結合が簡単にできる
の2つ。
集計作業であればエクセルやMicrosoft Accessも便利なツールです。一つ一つのデータを細かく見ていくのであれば、pythonを使うより使い勝手が良いツールだと思います。Accessであればgroupby機能やjoin機能もあるので、集計だけであればAccessでも十分対応可能です。pythonを利用するメリットは、大量のデータを素早く集計出来る点にあります。
③前処理
集計で、設定した課題に影響を与えている要素が特定できたら、アルゴリズムに適用可能な形に整えてあげます。
これは、言葉で説明してもなかなか伝わりづらいと思いますので、データ解析の問題を使いながら解説したいと思います。
データサイエンスのコンペサイトであるKaggleの最初の課題は、豪華客船タイタニックの生存者予測問題です。タイタニックに乗船していた方々のプロフィールデータ(性別や何等船室を取っていたかなど)を元に、どんな属性だと生き残ることが出来たのかを予測します。
「生存」に影響を与えている要素(性別など)を特定し、下記の表のように必要でない要素を削ぎ落とします。この状態を作れたら、モデル化のステップに進みます。
④モデル化
前処理が終わったら、Kaggleのタイタニックの問題でいう、生存者の予測に入ります。
予測するための様々なアルゴリズムはscikit-learn(サイキットラーン)という機械学習ライブラリから呼び出すことが出来ます。
アルゴリズムには
・ロジスティック回帰
・ランダムフォレスト
・SVM
など様々な種類があります。各アルゴリズムの特徴は別記事にて解説します。それぞれに特徴がありますので、どのアルゴリズムを選定すべきかの基準が必要になります。そこで「ブラックボックス性」と「ホワイトボックス性」、そして「精度が良いもの」と「精度が悪いもの」という2軸でアルゴリズムを分類してみたいと思います。
タイタニック生存者予測の問題を例とすると、ブラックボックス性とは、入力値(性別や何等船室を取っていたかなど生存へ影響を与えていた要素)と予測値(出力値)の間の関係性が理解できないことを言います。
逆にホワイトボックス性とは、入力値と予測値の関係性が理解出来ます。そのため、生存へ影響を与えているのはどの船室を取っていたかよりは、女性であることの影響が強いな、と判別することが出来ます。
精度が良い悪いとは、単純に予測の精度が高いか低いかです。予測がどの程度当たっているかですね。予測の精度を測る指標は様々な指標があるので別記事でご紹介します。
これらの軸でアルゴリズムを分類すると下記のように分類することが出来ます。
ここでもう一つ大事なことをお伝えします。
精度とホワイト・ブラックスボックス性はトレードオフの関係にあります。精度が高くなるアルゴリズムはブラックボックス性になってしまい、ホワイトボックス性のアルゴリズムは、精度は低くなってしまうのです。
そのため、課題の目的に合わせて精度が欲しいということであれば、SVMやディープラーニングを選択するべきです。
逆に精度の高さよりもホワイトボックス性が欲しいということであれば、ロジスティック回帰や線形回帰を選択するべきです。
このように最適なアルゴリズムを選択して、モデル化を行います。
3.もっと学びたい人へ…学習に役立つ書籍&実行環境やライブラリの紹介
ここまで読んで、本格的にPythonを学びたいと思った人のために、今後の学習のためのオススメの書籍やPythonを実際に使っていく上での環境やライブラリをご紹介していきます。
前の章で解説したフェーズごとに必要となるものを分類していますので、自分の状況にあわせて選んでみてください。
①課題設定時
データ解析をする上で最も大切なフェーズである課題設定は、ビジネスサイドとしっかり話し合うことが大切だと書きました。
データサイエンス側の意見としてビジネスサイドの方と共に理解しておきたい項目を挙げます。
・相関と因果は異なる
・因果を知りたいなら、ランダム化比較実験(ABテスト)すべし
・仮説検定
これらはどんな課題を設定する際に前提として理解しておきたい概念です。これらの概念を学べる書籍をご紹介します。
「相関と因果は異なる」という概念を学ぶのに良い書籍
「原因と結果」の経済学―――データから真実を見抜く思考法
「ランダム化比較実験(ABテスト)」の概念を学ぶのに良い書籍
データ分析の力 因果関係に迫る思考法 (光文社新書)
「仮説検定」の概念を学ぶのに良い書籍
完全独習 統計学入門
これらの概念を最低限押さえることで、ビジネスサイドへデータサイエンスの意見をしっかり反映してディスカッションが出来るようになるかと思います。
②実行環境の整備&データ集計時
実行環境を整えるには、
・Jupyter Notebookをローカルにインストール
・Google Drive上でGoogle Colabolatoryを使う
のどちらかの方法がオススメです。
Jupyter Notebookとはコードやグラフを作成可能なツールです。元はPhython用に開発されていましたが、現在は40以上のプログラミング言語に対応しています。
簡単にインストールするには、こちらのページからAnacondaをインストールします。「Python 3.7」のバージョンを選んでダウンロードして下さい。
そして、「ANACONDA NAVIGATOR 」を立ち上げ、 Jupyter-notebook 部分の “Launch” をクリックします。
これだけでJupyter Notebookを使うことが出来ます。
もう一つのGoogle Colabolatoryを使う方法を解説します。
まずは、Google driveへアクセスします。「新規」を押して「その他」「 アプリを追加」を選択し、「Colaboratory」と検索します。
その後、「接続」をクリックすると、Colaboratoryを使えるようになります。
これだけで「新規」「 その他」「 Colaboratory」を設定すると、Pythonの実行環境が使えるようになります。
また、データ集計時によく使うライブラリを2つご紹介します。
Numpy(ナムパイ)
配列同士の演算や多次元配列(行列)の扱いに長けたオブジェクトを提供するライブラリになります。このライブラリのおかげで行列計算が素早く計算出来ます。行列計算必須のディープラーニングがPythonで扱われるようになったのも、このライブラリの貢献は大きいです。
Pandas(パンダス)
Pythonでデータをデータベースでデータを扱う形(データフレーム)で編集することが出来るライブラリになります。データ分析をするなら真っ先に入れるライブラリです。
③モデル作成時
最後に、機械学習モデルを作る際によく使うライブラリをご紹介します。
scikitlearn(サイキットラーン)
分類や予測のためのモデルが詰まった機械学習用パッケージになります。前章で出てきたロジスティック回帰やランダムフォレストなど様々なモデルを揃えています。こちらもPythonでのデータ分析では必須のライブラリになります。
また本ブログでも、Pythonやデータ解析に関する様々な解説記事を掲載しています。こちらも合わせて参考にしてみてください。
4.まとめ
- PythonとR言語の主な違いはWebアプリケーションの作成し易さでした。
- Pythonを使ったデータ解析のフローは「課題設計」「集計」「前処理」「モデル化」の4ステップです
- さらに、学習を進める書籍やライブラリをご紹介しました。
おわりに
データ解析で使われるプログラム言語といえば、PythonとR言語。データ解析を始めたい時に、どちらの言語を選択すべきでしょうか?
結論から言うと、純粋に「データ解析のみ」を行いたいのであればPythonとR言語は機能的にどちらも変わりません。一部、時系列解析においてはR言語の方が便利なライブラリがあります(auto.arima等々)が、Pythonでも十分な機能を有しています。
ネット上にある記事やドキュメントはPythonの方が豊富にあります。実際にデータ分析する際に記事やドキュメントの豊富さはプログラム言語を選択する上でも有力な判断材料となります。そのため、どちらか迷っている方にはPythonをお勧めします。
Pythonでデータ解析を進めることのメリットがご理解頂け、データ解析を進める手順や学習を進める際の参考になりましたら幸いです。