たなブログ 教養を高めて生涯資産を増やすブログ(`・ω・´)

【Python Coding】Plotlyを用いてデータを可視化する方法を紹介

PR Pythonを学ぶ

こんにちは、TAKです。
今回は、pythonを使ったデータ可視化手法の一つ「plotly」の基本的な使い方について紹介していきます。

plotlyとは、基本無料で利用することが可能なデータ可視化のプラットフォームのことを言います。
このplotlyを用いることで、「インタラクティブ」なグラフを描くことが出来るのですが、シンプルにお伝えすると以下のようなグラフを描くことが出来ます。

「plotly」を用いて描けるグラフのイメージ(今回作成するグラフ)

描いたグラフ上にカーソルを合わせることで、数値を表示させたり、拡大・縮小が出来る点が特徴的です。

今回はシンプルな例を用いて、上記グラフを作成していくので、「plotlyの基本的な使い方を知りたい」方や「インタラクティブなグラフを描いてみたい」という方は参考にしてみてください。

【こんな人に読んで欲しい記事です】

● 「plotly」の基本的な使い方を知りたい方

● データをインタラクティブに可視化する方法を知りたい方

必要ライブラリのインポート

まず最初に、今回使うライブラリをインポートしておきます。
色々とインポートしていますが、今回メインとなるのは下2つのライブラリです。
(numpyは使わないのでインポート対象外としてください。)

今回使うライブラリのインポート

「plotly」を描くために必要となるライブラリですが、最初は意味や使い方がわかりにくいかもしれません。
僕も最初使う時は「?」って感じでしたが、何回も繰り返してpythonでコードを描いていれば、少しずつわかるようになるので大丈夫です。

利用データの確認

ライブラリをインポートしたので、今回グラフ用に使うデータを確認していきます。
今回は、以下のような特徴を持ったシンプルな時系列データを利用していこうと思います。

今回使うデータのイメージ例

今回使うデータの内容

● Date : 7月1日から7月5日の5日間におけるデータを想定

● Time : ランチ(Afternoon)とディナー(Evening)の区分

● Customer : 店に来店した顧客人数

● Sales : 各時間帯における売上高

かなりシンプルですが、ランチ営業とディナー営業をしているプロントのような飲食店を想定してもらえばわかりやすいかと思います。

このデータを用いて「日付ごとに顧客合計数と売上合計高の推移」を「plotly」で可視化することを目的としていきます。今回の流れのイメージは以下のようになります。

「plotly」を用いた可視化までの全体イメージ

利用データの作成

続いて、pandasを用いてデータフレームを作成していきます。
最終的に先ほどのデータ例と同じ形になれば問題ありませんので、以下と異なるコードでもOKです。

データフレームの作成(1/2)
データフレームの作成(2/2)
【参考】カラム「Date」のデータ型を変更

これでデータの作成が完了しました。
今回は、「日付別」にデータ推移を見ることにしているので、「plotly」を用いてグラフ化する前に「グルーピング」しておきます。

データを日付別にグルーピングした結果

「グルーピングがよくわからない」という方は、以下記事で紹介しているので参考にしてみてください。

【具体例①】「plotly」を用いたグラフ化

では実際に、「plotly」を用いてインタラクティブなグラフを作成する方法を見ていきましょう。
色々な書き方がありますが、今回は比較的理解しやすい方法で紹介したいと思います。

ここでは、「1行2列」の形で「左側に顧客数の推移」「右側に売上高の推移」のグラフを並べていきます。
コードの基本的な流れは「figの作成」「fig.add_trace()でデータ指定」「fig.show()でグラフ化」といったイメージになっています。

「plotly」を用いたpythonコード例①

いくつかコードに関する補足説明をしておきます。

● 「make_subplots」を用いることで、〇行〇列のグラフを描くことが出来る

● 「add_trace」の引数における「go.Scatter」部分でデータを指定

● 「add_trace」の引数で「row/col」を指定することでグラフ場所の指定が可能

● 「update_layout」でグラフに関する細かな調整が出来る

「plotly」を用いたpythonコード結果①

すると、このようなインタラクティブなグラフを描くことが出来ます。
カーソルをグラム上に合わせると数字が表示されるので、わかりやすくて非常に便利ですね。

【具体例①】plotlyを用いたグラフのイメージ

【具体例②】「plotly」を用いたグラフ化

続いて、グラフを重ねて表示する方法を見ていきたいと思います。

先ほどのデータに「昨年分のデータ」を仮定したカラムを追加し、「顧客数の前年比推移」と「売上高の前年比推移」を見ていきます。

まず、以下のように前年度データを追加します。
顧客数は今年度の8割、売上高は今年度の7割と仮定して設定しています。

追加データの作成

このデータを用いて、先ほどと同じく「plotly」で可視化するためのコードを書いていきます。
基本的なコードは先ほどと同じですが、「y軸に指定しているデータ」と「row/colの指定」が先ほどと異なる点となります。

「plotly」を用いたpythonコード例②
「plotly」を用いたpythonコード結果②

その結果、このようなインタラクティブなグラフが描けたかと思います。
グラフを拡大・縮小することも可能なので、より複雑なデータを可視化した際には積極的に使っていきたいですね。

【具体例②】plotlyを用いたグラフのイメージ

さいごに

今回は、pythonとplotlyを用いてデータをインタラクティブに可視化する方法を紹介してきました。

この記事ではpythonを用いていますが、RやMATLABなどでも使えるそうなので、興味のある方は使ってみてください。

では今回はこのへんで。