昨日はこちらのイベントに参加してきました。
ヤマソンは、2人~4人のチームが東京を歩いたり走ったりするために競う募金活動です。
有名なJR山手線の30の駅すべてを12時間以内に訪れます。
一応、日常的にジョギングはしているのですがこれだけの長丁場は初です。結果完走できました。
これだけで終わると普通のブログになってしまうので、完走を記念してデータの可視化をします。というか筋肉痛や疲労で難しいこと考えられないので詳細な分析はできないです。
データのダウンロード
iPhone持って歩いていたのでGoogle MapsのTimelineとしては記録されています。これを以下のChrome拡張でダウンロードします。
なお、Begin Time
などの時刻タイプの列はいくつか存在しており、それぞれフォーマットが異なるので注意してください。列にはLatitude
とLongitude
を含めるようにします。
こんな感じのCSVです。本当はもう少し粒度の細かいデータが欲しいところですが。
データのアップロード
Databricksのサイドメニューから新規 > データの追加を選択します。CSVをドラッグ&ドロップします。
テーブルを作成するカタログとデータベース(スキーマ)を選択します。この時点でもデータ型を指定できるのですが、除外しなくてはいけない文字列などがあるのでデフォルトのままでテーブルを作成します。
テーブルの確認
カタログエクスプローラでテーブルを確認します。せっかくなのでAIコメントも承認しておきます。
データも確認しておきます。Distance in Meter
にカンマやmが入っていたりとなかなか前処理が大変そうです。
クエリーとダッシュボードの作成
最近リリースされたLakeviewを使ってもいいのですが、残念なことにまだ地図がサポートされていません。なので、素直にDatabricks SQLのクエリーとダッシュボードを使います。
不要な文字列を除外してあるべきデータ型に変化します。時間もタイムゾーンなどの処理をしなくてはいけないのですが、(疲れているので)今日はスキップします。
SELECT
`Begin Time`,
Name,
CAST(Latitude AS FLOAT),
CAST(Longitude AS FLOAT),
CAST(
REPLACE(TRIM(" m", `Distance in Meter`), ",", "") AS INTEGER
) AS Distance_meter,
CAST(
REPLACE(TRIM(" sec", `Duration In Seconds`), ",", "") AS INTEGER
) AS Duration_sec
FROM
takaakiyayoi_catalog.default.timeline_viewer_oct_21_2023_oct_22_2023
あとは、駅のマーカーを示す地図と移動時間・移動距離の散布図を作ります。
これをダッシュボードにまとめます。移動距離と移動時間は相関しているようですが、一部外れ値がありますね。あとで深掘りしたいところ。
これ以外にも時間帯と移動速度の相関といった分析観点がありそうです。ただ、今日はもう寝ます(年寄りは二日目の筋肉痛の方がキツい)。