df2gspread
で、スプレッドシートのデータを padas の dataframe 化して利用するのか結構便利だったので、前々から使ってみたかった plotly の 入力データとして使えるか試してみました。
結果を以下に記載します。
前提
OS 、Python の version は以下の通りです。
-
OS
% sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G1114
-
Python
% python3 -V Python 3.6.2
参考
必要なライブラリのインストール
df2gspread
と、 plotly
をインストールします。
python3 -m pip install df2gspread --user
python3 -m pip install plotly --user
手順
以下手順を踏んで、可視化します。
-
Google Analytics からデータをエクスポート
-
df2gspread で データを DataFrame として取り込む
-
plotly で可視化
Google Analytics から データをエクスポート
Google Analytics - Google スプレッドシート アドオン を使って、 1日あたりのPageView 、 Session 、 ユニークユーザー数変遷データを取得します。
設定は以下の通りです。直帰率などの取得していますが、今回は使用しません。
df2gspread で データを DataFrame として取り込む
df2gspread で スプレッドシートのデータを DataFrame として取り込みます。
start_cell の値は、A15
は、Google Analytics - Google スプレッドシート アドオン を使用したデータの取り込みであれば、基本的にA15
になると思います。
スプレッドシートには、キーのアカウントのアクセス権限が必要になりますので、403エラーになるようであれば、権限を付与してください。
from oauth2client.service_account import ServiceAccountCredentials
def download_as_df():
from df2gspread import gspread2df as g2d
# key_file 以下の指定方法だと、notebook と同じディレクトリにあるキーファイルを取得しています。
key_file = "spreadsheet_api_key.json"
scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_file, scope)
# 1brCpWvk2uofc3MEt-ASb2cuZ-u8Zmx-ICxSTltlbVBQ はスプレッドシートのID なのでそれぞれ取得対象のスプレッドシートで変わります。
df = g2d.download("1cMLBDPbPkoYYX9tXIlHunAA0mt7eBEq2HaHTAxVszh4", wks_name="日次レポート", col_names=True, row_names=False, credentials=credentials, start_cell = 'A15')
df = df.sort_values(by='ga:date')
return df
download_as_df
を呼び出し、dataframe として読み込んだ後、グラフ描画のため、不要なカラムの削除と、Indexの付け替えを行います。
import pandas as pd
df = download_as_df()
# datetime に変換する
df["ga:date"] = pd.to_datetime(df["ga:date"])
# ga:date を index として設定する
df.index = df["ga:date"]
# グラフ描画に不要なカラムの削除
df = df.drop("ga:date", axis=1)
df = df.drop("ga:avgSessionDuration", axis=1)
df = df.drop("ga:pageviewsPerSession", axis=1)
df = df.drop("ga:bounceRate", axis=1)
# 2016-10-01 から 30日間でデータを絞り込む
span = pd.date_range('2016-10-01', periods=30)
df = df[df.index.isin(span)]
plotly で可視化
import plotly
plotly.offline.init_notebook_mode(connected=False)
plotly.offline.iplot([{
'x': df.index,
'y': df[col],
'name': col
} for col in df.columns], filename='ga_daily_reports', show_link=False, config={"displaylogo":False, "modeBarButtonsToRemove":["sendDataToCloud"]})
まとめ
plotly で Google Analytics の時系列データを可視化しました。以下まとめます。
-
スプレッドシート > Pandas DataFrame > plotly への変換は容易にできます。
-
スプレッドシート から Pandas DataFrame に変換後は、多少データの加工が必要でした。
-
Google Analytics 上で可視化が可能なものは、Google Analytics 上で閲覧し、もう少し込み入った可視化、他のデータソースとの統合は、Data Studio を使い、 込み入ったデータ処理が必要な場合は、Python 上での可視化なのかなと思いました。
以上です。
コメント