背景
技術的な高度さがビジネスにおいてより高い価値貢献を行うケースは稀であり、 データ利活用においてはそこから得られる示唆の大きさが一番大きな要因だと考えています。 そのため理解を手助けするビジュアライズはとても重要だと言えます。 今回は日頃よく利用するアクセスデータ(Google Analytics)に関して、 デフォルトにある可視化に加えてネットワーク型で見ることでより直感的に理解できるのではないかと考え試してみました。
ネットワーク型
設計意図
アクセスデータ基礎分析において重要な要素は主に以下三つだと考えています。
- 人の流れと大きさ: 流入 ・ 回遊 ・離脱
- 人の属性:性別・年齢・ロイヤリティ
- コンバージョンへの寄与:CVR
今回はその中の 流入と回遊 に注力をし、より「ページごとの流入・回遊の比較ができる」可視化としてネットワーク型を考えました。 ネットワーク型を検討した理由としては点を線で繋ぐことで、 「回遊の繋がり」を可視化できることに大きなメリットを感じたためです。
- 円の大きさ:流入の大きさ
- 線の向き:回遊の繋がり
- 線の大きさ:回遊の大きさ
離脱や流入経路、回遊の向きなど削り落ちた情報も多いですが、 全体概要の直感的理解においては一つ優れた手法だと考えています。
弊社サイトで出来上がったもの
グラフ
示唆
上記グラフは弊社サイトのものですが、 これを見るだけでも以下のような示唆が浮かび上がってきます。
- 流入が大きい(円が大きい)のにサイトへの流入につながっていないブログがいくつか存在
- サイトとの回遊が多いブログから、サイトにくるユーザー層は「firebaseやNuxt周りの技術興味ありor相談したい」と「経営者個人を知りたい層」の2つがありそう
- 「ブログからのサイト流入が太い箇所の向きや属性情報をGA側で確認することでCVを増やせそう」といった深掘りの戦略
当然概要を見ているだけのため精度が低かったり仮説に留まるものですが、 概要を理解する上ではとても役に立つように思えます。
過去案件に沿ったユースケース検討
では実際に過去ご担当した案件などに照らし合わせてユースケースを考えると、 以下のようなケースで利用価値があるのではないかと感じました。
- ブログ流入からCVを目標とされていたケース:弊社における仮説同様に初期分析で深掘り箇所の特定に利用
- SaaSのカスタマーサクセスでのケース:課題解決に向けて誘導したいページに誘導できているかを判断(お客様が迷っていないか)
- GAを入れたが未活用のケース:直感的に理解の手助けとして利用し、今後のデータ利活用を検討する際の共通言語に利用
感想
今回実は「ネットワーク型はなんとなく綺麗でそれっぽい(が使い道がない)」にとどまってしまうだろうという予想があったのですが、 想像よりも使い道がありそうでとても良い結果だったと感じました。 今後円の大きさや棒の太さの意味を変えることで、 UUや時系列といった様々なケースにおいて利用ができるのではないかと感じています。 ただ文中でも述べている通り削ぎ落とした情報も多く、 得られるしさは仮説程度のものなので解釈には注意が必要だと感じました。
最後になりますがもしこういった初期分析を行いたいと言う方がいらっしゃれば、 気軽にご相談をいただけると幸いです!数ヶ月後にはこのブログから弊社サイトへ太い線(流入)が引かれていることを願っています…笑
+α:技術的な話
最後に技術的な話を簡単に載せておきます。
動作環境
今回利用した環境・ライブラリ等は以下になります。
- Google Colaboratory
- pythonの実行環境として利用
- GA4のもとデータ(Bigquery)への接続も容易
- GA4:次世代の Google アナリティクスのご紹介
- Google Analyticsの最新バージョン
- 旧バージョンと違い無料でBigqueryへのデータ連携可能
- NetworkX(pythonのライブラリ)
- ネットワーク型の可視化が容易にできる
元データ準備
元データとてはGA4のデータのみなので、 [GA4] BigQuery Export のセットアップ を参考にデータを準備しました。 クエリはUNNEST等が必要なため少し工夫が必要です。
データ前処理
今回BQに連携された analytics_********.events_*
のデータを元データとし、 以下の処理によってデータ前処理を行いました。
- ラベルに利用するためURLからパスの部分を抽出(
/blogs/firebase_lt/
など) - セッション毎に回遊したページをリストに入れる
- 各ラベルと出現回数を辞書形入れる
データ可視化
みやすくするため以下のような調整を行なっています。
- add_nodes_from:各ページのノード(点)を追加
- add_edge:各ページのつながり(線)を追加(線の太さも定義)
- 特定の量以下のつながりを削除
- draw_networkx_nodes:大きさを指定しノードを描写する
- draw_networkx_edges:太さを指定しつながりを描写する
- draw_networkx_labels:ラベルを追加