全2495文字
『最短コースでわかるPythonプログラミングとデータ分析』
『最短コースでわかるPythonプログラミングとデータ分析』

 「身近なデータが宝の山に」。Pythonのプログラミングとデータ分析のスキルを身に付ければ、手元のデータを使って、見込み客の選定や、チームの売上予測などが手軽にできるようになります。Excelではできない緻密なデータ戦略が組み立てられます。Pythonのホントの基本からデータ分析の実践方法までを1冊にまとめた『最短コースでわかるPythonプログラミングとデータ分析』(日経BP)から、Pythonの主要なデータ分析ライブラリ「pandas」の基本的な利用法を紹介します。(プログラミング編集部)

 本連載で紹介するPythonコードは、すべてGitHubサイトで公開しています。GmailなどのGoogleアカウントを持っている方は、GoogleのクラウドPython実行環境「Google Colab」で手軽に動かせます。
「GitHubサイト https://github.com/makaishi2/data_analysis_book_info
の「3章 データ分析ライブラリ中級編・4章 データ分析実践編」のリンクを開き、「3.4節 データ集計」の「ch03_04.ipynb」をクリックします。Google Colabが開いたら、上の方にある「ドライブにコピー」にクリックします。最初のコードをクリックして「Shift+Enter」キーを繰り返し押していきます。

 データ分析の最終的な目標である「洞察」を引き出すための具体的な手段として有力なのが「データ集計」です。データ分析ライブラリの「pandas」では、この目的で利用可能な関数・メソッドが数多く用意されています。その中でも特に利用頻度の高い機能をピックアップして紹介します。

 今回、紹介するデータ集計機能はExcelが備えるものと重なる点が多いです。どちらがいいかは好みによる部分もありますが、筆者は使い方に慣れてしまえば、すぐに結果を出せるpandasの方が便利かと思っています。すでにExcelのデータ分析機能を活用している方は、本連載を読み終わった段階で、今後、どちらを使っていくか考えてみるといいでしょう。

銀行マーケティングデータセット

 ここから分析していく「銀行マーケティングデータセット」は、ポルトガルの銀行のダイレクトマーケティングキャンペーンに関連したデータです(図1)。インターネットに公開されていて、データ分析の例題として利用できます。

図1 銀行マーケティングデータセットのホームページ
図1 銀行マーケティングデータセットのホームページ
(出所:UC Irvine Machine Learning Repository https://archive.ics.uci.edu/ml/datasets/Bank+Marketing)
[画像のクリックで拡大表示]

 次の表1のようなデータ項目があり、電話営業の結果(y)が成功するかどうかを予測するモデルを作る目的でよく利用されます1)

1) 筆者自身、このデータセットは別の書籍「Pythonで儲かるAIをつくる」でも取り上げており、その際は、「今回販促結果」(y)を予測する「2値分類モデル」を構築しました。
表1 銀行マーケティングデータセットのデータ項目一覧
表1 銀行マーケティングデータセットのデータ項目一覧
(出所:『最短コースでわかるPythonプログラミングとデータ分析』(日経BP))
[画像のクリックで拡大表示]

 ここでは、機械学習モデルの構築まで踏み込まず、pandasのデータ集計でどの程度の洞察が得られるかにトライしてみます。

 自分がこの電話営業をする担当員であり、いかに効率良く営業活動をするかが業務課題であると想定して、以下の話を読み進めてください。

ファイルのダウンロード

 最初にデータの読み込みとデータの確認・加工(前処理)を実施していきます。

 それでは実装コードを見ていきましょう。

コード1 ファイルのダウンロードと解凍
コード1 ファイルのダウンロードと解凍
(出所:『最短コースでわかるPythonプログラミングとデータ分析』(日経BP))
[画像のクリックで拡大表示]

 コード1はUCI(カリフォルニア大学アーバイン校)のサイトからwgetコマンドで該当データをダウンロードし、unzipコマンドでzipファイルを解凍しています。次のコード2では、headコマンドで、解凍後のbank.csvファイルの先頭5行の内容を表示します。

コード2 ファイルの先頭5行の内容表示
コード2 ファイルの先頭5行の内容表示
(出所:『最短コースでわかるPythonプログラミングとデータ分析』(日経BP))
[画像のクリックで拡大表示]

 この結果から次のことが読み取れます。

  • ヘッダ行あり  
  • 区切り文字はセミコロン  
  • ヌル値は'unknown'  
  • True / Falseは'yes' / 'no'  
  • 文字列のクオートはダブルクオート(これはオプション指定不要)

 これらの結果は、この後のread_csv関数の呼び出しにおいて、オプション指定で対応することになります。