pandas と matplotlib で新宿・池袋・渋谷・東京・品川駅の乗車数データを可視化

マーケティングデータやログの収集は当たり前のことになってきましたが、収集される生データ(ローデータ)は膨大な数字や文字の羅列にすぎません。日々蓄積される膨大なデータを活用するには、人間が認知しやすい情報に変換する必要があります。

そのための最も身近で強力な手段がデータ可視化です。この記事では「駅の乗車数」という身近なデータを題材に、ローデータ(生データ)を Python 3 で可視化する方法をご紹介します。

入門以前につき数学や統計の知識は一切不要です。(ネタバレですが)最終的なアウトプットも以下のように極簡単なものとなっています。

新宿・池袋・渋谷・東京・品川駅の乗車数をデータ解析・比較

 

Python のデータ解析フロー

1. データの収集

データ解析は正しいデータの収集から始まります。本格的なデータ解析の書籍はWEB スクレイピングや API によるデータの自動収集を紹介しているでしょうが、多くの人はこの段階で挫折してしまいます。ここでは話を簡単に手作業で集めましょう。

各駅の乗車人員 2016年度 ベスト100:JR東日本 には、JR東日本エリア内の駅に関する乗車人員のランキングが掲載されています。1999年度までの過去データもあります。※この記事を書いている時点(2018年1月)での最新は2016年度になっています。

新宿駅、池袋駅、渋谷駅、東京駅、品川駅を対象に2010年代の乗車人員のデータを収集、可視化をしてみましょう。

(料理番組のようにすでに材料は用意済みです…)

アルバイトさんにまとめてもらったCSV(こちらからダウンロード)をもとに Python 3 で可視化していきます。

サンプルCSV

 

2. pandas によるデータの取り込み・加工・抽出

Python によるデータ解析では、収集したデータを pandas というパッケージを使って読み込みます。pandas は CSV / JSON / Execl ファイルの読み込みが可能で、少しの処理でMySQL / PostgreSQL / MongoDB 等のデータベースとの連携も可能です。

ローデータにはゴミ(不正値)や欠損がつきもので、pandas は取り込んだローデータの加工や抽出等を行うことができます。今回は収集時点でデータの精度が担保されていますが、通常のデータ解析ではデータクリーングに相当なコストがかかり、pandas の使用が必須になります。

pandas は Python のパッケージ管理ツール pip によりインストールできます。

pandas 公式ウェブサイト http://pandas.pydata.org

 

3. matplotlib によるデータの可視化

pandas によりクリーングされたデータを可視化するには matplotlib というパッケージを使用します。matplotlib は棒グラフ、折線グラフといったよくあるグラフから3Dのグラフ描画まで高機能な可視化ツールです。

matplotlib は Python のパッケージ管理ツール pip によりインストールできます。

matplotlib 公式ウェブサイト https://matplotlib.org/

 

実際にPython3のコードを書く

pandas / matplotlib ともに癖のあるパッケージです。まずは失敗してみましょう!

 

実行すると下の図(失敗)が保存されます。

新宿・池袋・渋谷・東京・品川駅の乗車数データ比較

3つの問題があります。

  • 右上の凡例がグラフに被っている
  • y軸ラベル「乗車人員(人)」が見切れている
  • y軸ラベルがわかりにくい(700000はパッ見で何人かわからない)

凡例はグラフの外側に出しましょう。y軸は見切れないようにして、さらに700000を70万人にしてみます。

言葉では簡単なのですが、matplotlib の場合にはこれがなかなか難しく、下記ソースコードを追加することで実現できます。(他にもあるかとは思います)

 

実行すると下の図が保存されます。

新宿・池袋・渋谷・東京・品川駅の乗車数をデータ解析・比較

matplotlib は軸の両端の値を自動的に(良い感じに)調整してくれますが、明示的に指定することも可能です。y軸が0でなく、30万人から始まっているのが気にくわないなら下記のコードを追加しましょう。

 

これでy軸が0から始まる図を得ることができます。

y軸を補正

補足

日本語設定をしていない、適切でない場合には下記のように四角(通称、豆腐)だらけになるので、注意しましょう。

matplotlib の日本語化ミス - 豆腐

 

データ可視化の効果

サンプルCSV

数字が羅列されただけのデータでは目を凝らさないとわかりませんが、可視化すると渋谷駅・東京駅・品川駅の順位変動や各駅の増減傾向もパッと見で把握することができます。

新宿・池袋・渋谷・東京・品川駅の乗車数をデータ解析・比較

順位変動はもちろんのこと、変化の割合(傾き)により、駅に何か変化があったこも把握できます。数字だけで変化の割合を頭に描ける人はいないでしょう…。

東京駅

東京駅は2011年〜2012年にかけ大幅な上昇、それ以降も増加傾向が見られます。2011年度以降に復元工事と丸の内周辺の再開発が進んだからのようです。事業は成功、費用を回収できることでしょう。

渋谷駅

東京駅と対象的に2012年〜2013年にかけて急減しています。東横線・副都心線の相互直通運転に向けて変わり始めた時期ですね。直通運転後もJR渋谷駅は唯一減少傾向が続いています。ダウントレンドは再開発完了まで続くのでしょう。

※このデータはJR渋谷駅の乗員数のため、私鉄(東急東横線、東急田園都市線、東京メトロ、京王井の頭線)の乗員数は含まれていません。

未来予測も

この時点で2017年度のデータは提供されていませんが、品川駅と渋谷駅の差が開くだろうことが容易に予想できます。データを可視化することで未来予測もできるようになります。

 

以上です。

データサイエンスというにはあまりに簡単な例ですが、Python3 / pandas / matplotlib により様々なデータ解析が可能になります。

ここで挙げた以外にも numpy / D3.js など解析や可視化ツールがあるので、データ解析の扉を開いてしまった方は、ぜひ試して見てください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です