Appleの移動データを加工したらわかった東京の厳しい現実

# Appleの移動データを加工したらわかった東京の厳しい現実

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/08f4425e-0b53-abc1-381a-219510114e48.png)


こんにちは、[Exploratory](https://exploratory.io?utm_campaign=data_wrangling&utm_medium=blog&utm_source=qiita)の白戸です。

Appleは新型コロナウイルスの対策支援として、Appleマップでの経路検索をもとにした移動傾向のデータを公開しています。ところが、残念ながらこのデータはそのままでは簡単に可視化できるようなフォーマットになっておらず、ちょっとした加工を行う必要があります。

しかし逆に、加工の仕方さえわかってしまえばそれぞれの都市や地域の移動データを可視化することで、恐怖を煽るばかりのマスコミからは見えてこない現状を理解することができるようになります。

今回はこのAppleの移動傾向データを簡単に可視化できるようにするための基本的な加工方法を、みなさんと共有させていただければと思います。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/299c9ff1-41d0-fa6c-4b75-a5caaaee4113.png)



データは[こちら](https://covid19.apple.com/mobility)からダウンロードすることができます。

以下は「モダンでシンプルなUIを使ってデータサイエンスができる」[Exploratory](https://exploratory.io?utm_campaign=data_wrangling&utm_medium=blog&utm_source=qiita)を使って、「日本で最も自粛している都道府県はどこか？」といった問いに答えていきます。

# データを使える形に加工・整形する

ExploratoryにAppleの移動傾向データをインポートすると、列数が453列と非常に多いことがわかります。これは、1日ごとに列があるデータになっており、2020年1月13日から2021年の4月までのデータがあるためです。ちなみに、1行はregion（地域）の単位になっていて、日本では都道府県や市区町村の単位でデータがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/5d530770-0013-f3db-e068-4c3e64fe6c5e.png)


例えば、時系列の推移を可視化する時によく使用する「ラインチャート」を使って移動傾向の推移を可視化したいとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/375f5466-928c-813c-2d35-262b812e7e15.png)


しかし、多くの可視化ツールでも同じように、X軸に日付を割り当てようとしても、1日単位で列があるデータでは一つの列しか選べないためうまく可視化ができません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/1647056a-898c-838a-1d04-850d1bc30e70.png)


データにはワイド型（横長）とロング型（縦長）の2つの持ち方があります。

Appleの移動傾向のデータは、日付ごとに列がある横長のデータのためワイド型になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/da54b4c2-6a18-e0f6-87fd-be90c1debe49.png)


一方で、値の列が一列にまとまっている縦長のデータのことをロング型と言います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/170100d3-2732-5df8-52f6-e8df40bff7ea.png)


データを可視化する時には「列」を選択するため、ロング型のデータが望ましいと言われています。

ロング型にすることで、X軸に日付の列を、Y軸に値の列を割り当てていくことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/00c568b6-5775-79b5-bdc8-b38cecda3efd.png)


そのため、ワイド型からロング型へ変換する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/4864cfab-f67a-474e-2bc3-0f465bf913d4.png)

Exploratoryでは、ロング型にしたい列を選んだ状態で、列ヘッダメニューから「ワイド型からロング型へ」を簡単に呼び出して実行できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/404422e3-fc28-ae1e-0da7-946a2aceda46.png)


ワイド型からロング型へのダイアログで、開始に最初の日、末尾に最後の列を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/94b89a96-6f2f-cfed-3c5d-06b4f1013542.png)


あとは、列名を指定して実行するだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/9271ef69-9717-032e-2263-3c32d6345bff.png)


これにより、日ごとに列があるワイド型のデータを、日付と移動傾向の値をそれぞれ一つに列にまとめたロング型のデータに変換できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/5653dbb7-87ca-d44a-d58f-6eb07be8e2b4.png)


データはロング型のデータにできましたが、「データタイプ」にも注意を向ける必要があります。
Dateの列はcharacter型（文字列型）になっており、チャートで可視化する際にはDate型（日付型）にした方が可視化しやすくなります。（これはExploratoryが裏で使用しているRでも同じです。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/de81c31f-a48c-d295-df1a-bda4fcad8058.png)


データタイプの変換は列ヘッダメニューから簡単に実行できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/f50ea942-1a2c-9feb-5517-1201853ce283.png)


データタイプをcharacter型からDate型に変換できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/ed8de234-51f1-0e45-ef7b-9e1b8aff31ec.png)

最後に、今回は日本のデータを可視化したいために「フィルタ」機能を使って日本のデータに絞り込んでいきます。

Exploratoryでは列ヘッダメニューから簡単にフィルタを呼び出すことができ、データタイプに合わせた多様な演算子が選べます。ここでは、countryの列からフィルタの等しいを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/5f065651-55ee-6144-5d8a-1e49c0a4016a.png)


あとは値に"Japan"を選択して実行するだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/3c9a3b39-30f6-710e-5000-622a06f85942.png)



国を日本のデータだけにフィルタできました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/3d906d93-7bd5-4d6c-3ea5-e935cf780c33.png)


このデータでは市区町村レベルのデータと都道府県レベルのデータが入り混じっているので、先程と同じくフィルタで絞り込む必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/8d5c2c47-c7c8-407b-64d4-0ad23290f5f0.png)

geo_type列の"sub-region"にフィルタすることで、都道府県レベルのデータにフィルタできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/cbd62e25-6b6e-f724-c7e7-08ca6b726a63.png)


データ・ラングリングは以上です！

こうしてデータの準備さえできてしまえば、あとは簡単にデータを可視化して人の移動傾向を理解していくことができます。

# 最も自粛している都道府県はどこか？


ラインチャートでX軸にDateを、Y軸にValue（移動傾向の値）を割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/ada588ae-e8d5-18ef-a6d0-ffa1139996e9.png)



しかし、日毎に移動傾向の値は上下するため、大まかなトレンドがわかりづらくなっています。

そのため、一定区間ごとの平均値を区間をずらしながら求める「移動平均」を使用します。

ExploratoryではY軸のメニューにあるクイック表計算から簡単に移動平均を実行できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/a567cf07-57a4-9f6c-6e98-f0fb70bf22e8.png)

今回は、ウィンドウサイズを7にして実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/978675a4-e8b2-6842-06ac-f84a2d9af194.png)


これにより、移動傾向の大まかなトレンドを可視化できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/c2c28a29-a00f-17bc-e308-f29c04af6dd4.png)


1回目と2回目の緊急事態宣言が行われた期間は移動が減少しており、自粛している人が多かったことがわかります。

次に、都道府県別で可視化するために色（グループ化）にalternative_name（都道府県）を割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/271682f2-cd3c-845a-145d-7212ef7c44a4.png)


今回は、東京都と大阪に注目したいため色のメニューからハイライトを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/7624272a-cfcc-abee-8c39-852816926262.png)


ハイライトする色に東京都と大阪を選択して適用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/0c40797c-7b61-695c-ec22-68b27c68d265.png)


このチャートを見ると、東京は移動傾向の値がほぼ全ての期間で他の都道府県よりも低く、2021年3月以降は最も自粛していることがわかります。報道では東京の人出が増えていると言われていますが、他の都道府県に比べて実は自粛している人が多くいます。大阪も東京と同じく、移動する人は減少しているようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/74a21ef3-9d20-8e40-ca25-2c3086eddd3e.png)


# まとめ


今回は、Appleの移動傾向データを使って、「日本で最も自粛している都道府県はどこか？」といった質問に答えるためのデータラングリングの方法について紹介しました。

ここ10年近くのテクノロジーの進化によって様々な場所からデータを収集、取得することが格段に簡単になりました。

しかし、こうした時代の一番の問題はそういったデータを取得することではなく、データの加工・整形ができないがためにデータを活かしきれないということです。

Appleですら扱いづらいデータを公開していることからもわかるように、世界には沢山の「扱いづらいデータ」で溢れかえっています。

そのままでは、思うように可視化や分析ができずに、せっかくあるデータも宝の持ち腐れになってしまいます。

そこで必要になってくるのが、データを加工・整形して可視化や分析に沿った形に変えていくデータ・ラングリングです。

一度使えるように形を整えてあげれば、後は可視化するだけでも多くのことがデータからわかるようになります。

これが「データの分析の80％の時間はデータの加工に費やされる」と言われる所以ですね。

それでは、また近いうちに他にもまだたくさんあるコロナ関連のデータの加工の仕方を共有させていただきたく思います。

お楽しみに！

---

# 追記

このデータは「汚くない」とのコメントがあったので、補足をさせていただきます。

確かに、Appleの移動傾向データはよくあるExcelファイルのようにごちゃごちゃしたデータではないので汚くないと思われるかもしれません。

ただ、データの持ち方は、ハドリー・ウィッカム氏が提唱したTidyデータ（整然データ）にして扱いやすい形式にする必要があります。

整然データのルールは以下となります。

1. それぞれの変数はそれぞれの列を持っているべき。
2. それぞれの観測はそれぞれの行を持っているべき。
3. それぞれの値はそれぞれのセルを持っているべき。

Appleのデータはこの整然データには該当しない、雑然データと言われるものになります。

理由としては、

1. 日付と移動傾向の値はそれぞれ変数となりますが、このデータでは日付が列となり1番目のルールに合致しません。

2. このデータの本来の観測はそれぞれの地域ごとの1日の移動傾向の値になりますが、1行は1地域になっています。そのため、2番目のルールに合致しません。

このことより、行きすぎた言葉かもしれませんが汚いと使用していました。
もし気分を害された方は大変申し訳ございません。（タイトルなどは修正しております。）

データを可視化する時には、データの見た目上は綺麗だとしても整然データになっていなければ
結局は加工しないと使えないデータになってしまいます。

そこで、Rではtidyrの`pivot_longer`や`gather`コマンドが必要になります。

Excelでも同じように、整然データにできるかもしれませんが、全ての人が同じように加工できる訳ではないと思っています。

そこで、少しでもデータの持ち方や加工方法についてご紹介した次第です。

ご参考になれば幸いです。

---

# データラングリング・トレーニング、5月開催決定！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/6fa27018-1496-abbe-6aea-5b43859c59f7.png)


データラングリング（データの加工）の手法を1から体系的に、そして効果的に身に着けていただくために、データラングリング・トレーニングを提供しています。

データを自由自在に操れることで、実は思った以上に役に立つデータが身の回りにあるということに気づかれるはずです。そして思った以上にデータを使って答えることのできる質問がこの世の中には多くあるということにも気づいていただけると思っております。

詳細は[こちら](https://exploratory.io/data-wrangling-training-jp?utm_campaign=data_wrangling&utm_medium=blog&utm_source=qiita)のページにあります。