Google の Looker Studio を使って競馬の勝率とかを可視化する

**この記事は [フリュー Advent Calendar 2023](https://qiita.com/advent-calendar/2023/furyu) の3日目の記事となります。**


最近、よく競馬の予想AIとかの話も聞く様になり、調べてみると色々な記事があるようで Python 自体は使ったことないですが、勉強しながら自分で作ってみたいなと思う様になってきました。


AIを作っていく中で、色々な情報を可視化していきたいなと計画しているので、無料で使える集計ツールを探していたところ、以下の3つぐらいがよさそうかも先輩に教えてもらいました。

- [Looker Studio](https://cloud.google.com/looker-studio)
- [Quick Sight](https://aws.amazon.com/jp/quicksight/)
- [Redash](https://redash.io)


どれもよさそうなのですが、作成したAIをクラウドで動作させたいなとも思っているので、Google Cloud または AWS で動かすことを考慮すると、Looker Studio か Quick Sight どちらかにしようと思います。

なので、まずは Looker Studio を試していきたいと思います。


# Looker Studio の準備

[Looker Studio](https://lookerstudio.google.com/) にアクセスすると、レポート一覧画面が表示されます。
見た目的には、Google Drive に似ていて、作成や管理もしやすそうですね。
さらに、テンプレートも表示してくれているので、初見の人でも触りやすそうです。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/b1223dad-85c1-4a35-37de-9d6395fd044d.png" />


新規作成を進めると「接続するデータ」を選択する画面が表示されます。
色々あるのですが、今回は Google Spread Sheet に接続してみようと思います。

と、いうのも、今回は初めての利用であるのと「競馬の収支」をスプレッドシートに残していたのでそれを活用します。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/02ba3533-e218-1480-fd53-cda4497c1271.png" />

# Looker Studio にスプレッドシートのデータを表示させる

データソースとして Google Spread Sheet を選択すると、アクセス権の許可をもとめられます。
「承認」すると、ログインしているGoogleアカウントが持っているスプレッドシートの一覧が表示されるので、連携も簡単にできます。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/5ca49964-9690-1914-95a9-707736da3538.png" />


「2023年_競馬まとめ」を選択します。
スプレッドシートを選択すると、ワークシートも選べる様になっています。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/9508b8c7-740f-1513-2ff2-9f84f510b08e.png" />

ワークシートを選択し、追加するとこの様な画面が表示されます。
表示させるグラフは選択形式で、表示させるデータなどもドラッグ&ドロップで変更できるのでエンジニア以外でも使えそうなUIとなっています。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/b3074518-6df1-a7b9-a4d2-64da00cbd138.png" />


# グラフを作成する

レポートの作成準備もできたので、今度は「競馬の収支・勝敗」のデータをもとに、色々なグラフを作っていきます。

データ分析の知識あまりないので、どんなデータをどんなグラフで表示するのが適切なのかは分かりませんが、とりあえず色々試していきます。

## 勝率周りをグラフ化

「勝率」を計算するには「勝ち・負け」を数値化する必要がありますが、競馬の場合であれば「払い戻しがあったかどうか？」で考えるのが一番簡単そうです。

データとしてはスプレッドシートの方で `IF(払い戻し > 0, "勝ち", "負け")` という関数を入れています。
ですので、比率などを表す「円グラフ」ではそのま利用できます。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/b252bf9a-3915-d538-bb82-4a51aeb6b268.png" />

次に「月ごとの勝ち負け」をグラフ化してみます。
ここで少し問題が出てきます。
「勝率」は「勝ち・負け」の集合データなので「月毎に分ける」て表示することができません。
「勝ち」と「負け」を別々のデータとして扱う必要があるのですが、データソース上の構造を「勝ちフラグ、負けフラグ」の様にしても良いですが、必ずしもその手段が取れるとは限らないので今回はあえて「データの加工」を試してみます。

Looker Studio にはスプレッドシートの様な「関数」が用意されています。
- https://support.google.com/looker-studio/table/6379764

とはいえ、どうするか？？というところですが「月ごとの勝ち・負けが数値として分けられている」状態を作れば良いので、`SUM` と `CASE` を使うことにしました。
（`CASE` の代わりに `IF` でも良いですね）

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/6945552c-d00c-84ba-c1d2-b586508c164d.png" />

「負け」も同じ様に作成し「指標」部分に設定すると意図通りの表示ができました。

ここら辺のデータの加工などはデータ分析の経験が増えてくると、すぐに最適解を出せる様になるのでしょうか・・

## 収支周りをグラフ化

今度は収支周りをグラフ化して見ます。
こちらは、すでにデータとしても分けて管理していたので、そのまま読み込めばそれなりのものになりましたね。

「支出」「払戻」はそのまま表示し、「収支」について全体を通しての推移を見たいので、スタイルの変更で「累計」に設定しています。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/5d746ddf-e38e-1635-cc85-0ef73f52920c.png" />

スプレッドシートで収支の合計も出していたのですが、グラフにするとだいたい負け続けてるなーというのも実感できますね・・・・😔
（金額は！！消して！！います！！！！！😂）


## 回収率をグラフ化

競馬といえば「回収率」をよく気にすることが多いと思います。

なので、これも一目でわかる様にしたいと思いますが、グラフ化するといっても「最新の状態」さえわかれば良いものなので、スコアカードというものを使ってみたいとおもいます。

「数値の表示」だけを行うシンプルなものなので、使い所としてはもかなり多くなりそうですね。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/1337bc7c-43dd-6459-af11-a5a53a883f2d.png" />

回収率の場合は合計値を使うので、勝率計算のところで使った「関数」使い、全体の合計を個別に計算するフィールドを用意したものを使用します。


# 成果物
画面上の「👁️表示」をクリックすると「表示専用（共有した時の見た目）」にすることができます。
今回は適当配置ですが「見やすさ・操作しやすさ」などを考慮することが必要そうです。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/10c8b89e-f8dd-70d6-da27-1862d696ba4d.png" /> <img width=300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172730/4bb2b769-827f-7b2c-81d6-c6ecbae98df3.png" />


# さわってみた感想

[Looker Studio](https://cloud.google.com/looker-studio) を初めて使ってみた感想としては「使い慣れたものを使っている」という感じでした。
普段の業務とかでもちょっとした集計にスプレッドシートでグラフ化するとかをしていたので、入りやすさはあったと思います。

また、すでに集計で使うデータをスプレッドシートに残していたので、そのまま加工せずに使えるのも良かったですね。

今度は、AWSの [Quick Sight](https://aws.amazon.com/jp/quicksight/) も試してみたいと思います。


## よかったところ、きになったところ

- Excel や Spread Sheet を使ってグラフ作成の経験がある人はすぐに使えそう
- 「関数」を使うことで取り込んだデータを加工するのが簡単
- テンプレートには「Google提供の標準」以外に「コミュニティ ギャラリー」から選択が可能（β版です）
- レイアウト簡単に変更できる
- データソースに設定できるものが豊富
  - Google Cloud 関連のサービス使っていれば連携はもっと簡単（あたりまえですね）
  - CSVのデータアップロードもある
- 「コントール」オブジェクトによる、集計データの切り替えも可能
- 「列データ」を追加した場合、自動で読み込まれないが、再接続することでは反映される
  - メニューのリソース > 追加済みのデータソースの管理 > 編集 > 接続を編集 > 再接続
- 規定の設定しかできないので、細かいところには手が届かなそう