#WOW2024 | Week 33 | オリンピック国別獲得メダル表の作成
はじめに
Data Saber挑戦中のroです。パブリック・組織内課題にノータッチのまま残り約40日に突入しており焦ってます。
今回はパブリック課題の第一弾としてWork Out Wednesday (WOW) のWeek 33(リンク)にチャレンジしましたので、「あっ、これData Saberでやったところだ!」ということを備忘録的に残します。基本的にはWOWの課題をゴールに、同じようなものを作っていきました。
viz作成の振り返りだけでは退屈なので、使用したデータセットの確認作業についても書きました。
作成したviz
変更点として、Totalで降順に並び替え、上段にランキング表、下段にその国の競技種目の内訳表を配置しました。課題に掲載されているダッシュボードは3段構成で見た目は良いのですが、国別に確認するとなると変更後の方が良いのかなと個人的には思います。
また内訳表は空欄と1の表記でなく、そのメダルの色の円形マークでもいいかなと思いましたが、後述するように3位の銅メダルが2人に渡される競技もあるようなので、ここは変更しませんでした。
データセット
こちらからダウンロードできます。kaggleの登録方法は簡単なのでググってみてください。
使用したデータは以下の2つです。
・medallists.csv
・medals_total.csv
使用データの中身を見てみる
使用するデータの中身を確認することは大事なので、サラッとEDAをやります。
medallist.csv
メダリストの一覧表です。メダリストの名前、獲得したメダルの種類、獲得した日時等が記載されています。
データサイズ:21列×2315行
メダリスト名カラムのデータはメダル取得時の登録名(?)なのか、"Liu Qingyi"(ブレイキン女子銅メダリスト)は"671"として格納されています。
また、柔道の阿部一二三、阿部詩がそれぞれ姓→名の順に格納されていることがわかります。
メダル種別の獲得者数を確認しましょう。
銅メダリストの総数が特に多いことが確認できます。調べたところ、柔道、テコンドー、ボクシング、レスリングなどの格闘技では、準決勝で敗れた両選手に銅メダルを与える制度が採用されているそうです。
気になったので、競技種目別のメダリスト数の違いについて見てみました。
メダル種別のメダリスト数が異なる競技を抽出します。以下の計算フィールドを作成しました。この計算フィールドでは、メダル種別のメダリスト数が同じ競技に真、異なる競技に偽を付与します。
このような結果になりました。
陸上競技や水泳、サッカー等がヒットしています。競技によって登録可能選手数やメダル配布の規定が異なるようで、このことが影響しているのかもしれません。
最後に、メダル種別・国別のメダリスト数をバブルチャートで確認します。
USA、CHN、FRA、GBRが目立ちます。
medallists.csvには他にも誕生日や性別も含まれているので、様々な分析に使用することができそうです。
medals_total.csv
こちらは比較的シンプルなデータで、国別のメダル種別獲得数、またそれらの合計数が格納されています。
データサイズ:7列×92行
まずは、国別総メダル獲得数の全体的な傾向を確認します。
単純な結果ではありますが、合計数が多い国を左から並べると、指数関数的に少なくなっていることがわかりました。
次に、メダル総取得数Top10の国を確認します。Total列で上位10の国を抽出していきます。このような作業は頻繁に行われるため、今回作成したvizでは使用しませんが、セットを作成し作業の効率化を図ることができます。
セット作成からTop10の国の確認に至るまでの作業は以下の通りです。
最初に、Country Codeを右クリック→作成→セットをクリック。
次に、上位タブをクリック→フィールド指定→上位10・Total合計となっていることを確認しOK。
作成したセットをフィルターにすることで、該当するトップ10の国の銅メダル、銀メダル、金メダルの数の違いを確認することができます。
使用するデータセットの全体的な傾向や内容について理解ができました。
本来であれば、レコードの重複、各カラムのユニークな値の種類、値の件数、NULLの状況といった、データそのものの評価をしなくてはいけませんが、今回は省略しています。(kaggleのNotebookをいくつか覗いたところ大丈夫そうだったので。)
vizの作成を通じた学び
1.画像の挿入
今回のviz作成で、画像挿入が簡単にできるということを知りました。今までこの機能を使ったことが無く、今回初めて使用しました。
・計算フィールド作成
"https://gstatic.olympics.com/s1/t_original/static/noc/oly/3x2/180x120/"
+[Country Code]+'.png'
・型変換でURLをクリック
国旗の画像はこれだけでできました。
vizとは関係ないですが、店舗別売上のダッシュボードを作成するなんて作業があったら、お店の写真や従業員の写真を挿入すると喜ばれそうです。
2.ピボットでカラムをまとめ、画像挿入に使う
medals_total.csvの各種メダルとTotalをピボットでまとめました。作成したピボットのフィールド名は判別に使い、フィールド値は各国のメダル種別獲得数として表示するのに使いました。
これについてはタイミングが良く、最近似たようなvizを見て、その作り方についても聞く機会があったため、スムーズに作成できました。(とはいえ完全に自分で思いついたわけではなく、WOWに掲載されている正解のダッシュボードを調べて思い出した部分もあります。)
3.パラメーター、アクションの作成
Data Saberでもおなじみの、パラメーターとアクションを作成し、インタラクティブなダッシュボードを作る作業です。
まずパラメーターを作成します。データ型は文字列に変更します。
その後、アクションの追加でパラメーターの変更をクリック。ダッシュボード上のメダル獲得数シートをソースシートに、先ほど作成したNOCをターゲットパラメーターにし、ソースフィールドをCountryCodeにします。
これにより、ダッシュボード上のメダル獲得数シートからレコードを選択すると、ターゲットパラメーターであるNOCに現在の値としてその国名が返されます。
4.対象国の内訳表を表示させる
先ほど返されたNOCをもとに、対象国の内訳表のみ表示させます。
5.垂直コンテナで見栄えをちょっと良くする。
コンテナを使わずシートをベタ置きすると、デフォルトではこのようなダッシュボードになってしまいます。
そこで、垂直コンテナを配置してからその上にシートを置くと、メダル獲得数シートが画面いっぱいになり、見栄えが良くなります。もちろん、国を選択すると問題なく下半分に内訳表が出現するので、特に理由が無い限りはコンテナを配置するといいかもしれません。
最後に
コミュニティ課題の1つとして取り組みましたが、難易度が高い内容でした。苦手だったパラメーター、アクションについての復習もできたのでいい機会になりました。
最終試験に向けてしっかりと復習をしていこうと思います。