はじめに
日本政府観光局の訪日外客数データを使って Power BI Desktop でレポートを作成していく記事を3回(「データクレンジング 編」「データ可視化 基本編」「データ可視化 中級編」)に渡って書いてきました
3回で終わる予定だったのですが、国交省サイトから訪日外国人の日本国内流動データを見つけて、今まで作成したレポートと紐づけて見てみたい欲が出まして、続きの記事を作成することにしました
本記事は、「データ可視化 上級編」です
「データ可視化 中級編」までで作成したレポートをベースに、訪日外国人流動データを紐づけてレポート作成していき、可視化したグラフ結果からインサイトを得ていくという実践的な流れになっています
使用データについて
「データ可視化 中級編」までに使ってきたデータを改めて整理します
・訪日外客数データ(出典:日本政府観光局)
訪日外客数データ分析の軸となるデータで、2003 ~ 2022 年の各国の毎月の訪日外客数が記録されたデータ
・世界人口データ(出典:UNFPA 世界人口白書 2022 年版の統計より)
各国人口が異なるので、単純に訪日外客数の数だけで比較するのではなく、人口比(訪日外客数 / 人口数)で比較してみたいと思い、取り込んだデータ
・外国為替公示相場ヒストリカルデータ(出展:みずほ銀行)
訪日外客数の変動は、各国通貨 vs 円の為替レートに多少影響されるのではないかという仮説を確認するために取り込んだデータ
そして、今回新たに取りむデータは以下
・訪日外国人の国内流動データ(出展:国土交通省)
訪日外国人はどこから入国して、日本のどこを訪れているのだろうか?を確認するために取り込んだデータ
2017 ~ 2019 年の各国の 入国空海港→最初の訪問地、訪問地間、最後の訪問地→出国空海港 の人数を記録したデータ
レポート作成の流れ
- 訪日外国人の国内流動データの取り込みとクレンジング
- 年テーブル作成とテーブルリレーション追加
- 訪日外国人の国内流動データの可視化
- 訪日外客数の増減に相関がありそうな要因を可視化
それでは、「データ可視化 中級編」で作成したpbix ファイルを使って、レポートを作成していきましょう!
ここから参加したい場合は、以下の GitHub から「データ可視化 中級編」の完成見本の「F-data_report_sample_3.pbix」を手元にダウンロードしてご利用下さい
1. 訪日外国人の国内流動データの取り込みとクレンジング
訪日外国人の国内流動データのデータソース
国土交通省が公開している「訪日外国人の国内流動データ」というオープンデータを使用します
公表用データベースの方が使いやすいのでこちらのファイルの2017 ~ 2019 年の3年分を取り込みたいと思います
(2014 ~ 2019 年のデータがありますが、2016 年以前は項目が少なくレイアウトが異なるため、今回取込対象に含めず)
訪日外国人の国内流動データの概要は、こちらに国交省さんがまとめてくれています
手順
① データを取得 > Web > URL で上記のサイトURLを指定
まずは、2019 年分から取り込む、Webサイトの 2019 年のデータリンクを右クリック > リンクのコピーして、URL 情報取得
https://www.mlit.go.jp/sogoseisaku/soukou/content/001389736.xlsx
② ナビゲーター画面で「国籍別・性別・年代別・全機関」を選択し、右側のビューでデータ内容を確認し、「データの変換」を選択
③ Power Query で 2019 年分のデータクレンジング
(4回目なので操作の詳細説明少々省きます。わからなくなってしまった方は GitHub の完成形「F-data_report_sample_4.pbix」を参考にして下さい)
・プロパティで [2019_国籍別・性別・年代別・全機関] に名前変更
・上位の2 行削除
・各項目がコードと名称が別列で分かれているので、
2列を選択して右クリック > 列のマージ > コロンで結合する(先頭に数字が入っている方が並べ替えやすいので)
・国名は [国マスタ] とのリレーション考慮して、数字は含めない、項目名を [国名] に名前変更
・[訪日外国人流動量(人)] 系の列も、項目名を [訪日外国人流動量(人)_Q1] のように名前変更
・項目名が整ったら、上位の2 行を削除
・カスタム列の追加で [年] カスタム式には = 2019 と入れて、[年] 列を作成
・数値項目は10進数に型変換、列の並び順等整える
④ 2019 年のデータクレンジングステップを複製して、他の年のデータ作成
・「クエリ」ペインから [2019_国籍別・性別・年代別・全機関] を選択して右クリック > 複製し、
プロパティで [2018_国籍別・性別・年代別・全機関] に名前変更
・「適用したステップ」の一番上の「ソース」の右の歯車マークをクリックし、URL を 2018 年のファイルの URL に変更
・「適用したステップ」の「追加されたカスタム」の右の歯車マークをクリックし、[年] 列の値を 2018 に変更
・2017 年分も同様にデータ作成
⑤ 2017 ~ 2019 のデータを縦結合して新しいテーブル [訪日外国人_流動データ] を作成
・[2019_国籍別・性別・年代別・全機関] を選択し、クエリの追加 > クエリを新規クエリとして追加
・「3つ以上のテーブル」を選択し、2017 ~ 2019 のテーブルを選択する
⑥ 2017 ~ 2019 のテーブルはレポート読み込み対象から外し、「閉じて適用」を選択
・各テーブルを右クリック > 「読み込みを有効にする」をチェックオフ
2. 年テーブル作成とテーブルリレーション追加
年テーブル作成
[訪日外国人_流動データ] が [年] 単位の集計のため、[年月カレンダー] と多対多のリレーションとなってしまうため、[年テーブル] を作成する
・フィールドから[年月カレンダー]を選択した状態で、テーブルツール > 新しいテーブル
・数式バーに以下入力
年テーブル = DISTINCT('年月カレンダー'[年])
[訪日外国人_流動データ]と各種マスタテーブルとリレーション追加
① [年月カレンダー] と [年テーブル] を [年] でリレーション追加
[年月カレンダー] の [年] を選択して、 [年テーブル] の [年] に向かってドラック&ドロップ
② [年テーブル] と [訪日外国人_流動データ] を [年] でリレーション追加
③ [国マスタ] と [訪日外国人_流動データ] を [国名] でリレーション追加
3. 訪日外国人の国内流動データの可視化
冒頭のデータ概要サイトを確認したところ、訪日外国人の国内流動データは、
国毎に 入国空海港→最初の訪問地、訪問地間、最後の訪問地→出国空海港 の人数をそれぞれ集計しており、同一人物が複数回カウントされるデータであることを注意して可視化していきましょう
3-1. 2019 年の訪日外客数と訪日外国人流動データの入国人数の確認
まずは、[訪日外客数] の [人数] と [訪日外国人_流動データ] の 入国人数が概ね合っているかどうかを確認してみましょう
① 既存のページを複製し、[訪日外客人_流動(入国港)人数確認] ページを作成、[年月]スライサーを削除し、[年テーブル]の[年]スライサーを追加
② ビジュアル:テーブル、列に以下を選択
・[年テーブル] の [年]
・[国マスタ] の [地域] [国名]
・[訪日外客数] の [人数]
・[訪日外国人_流動データ] の [訪日外国人流動量(人)_年間]
③ フィルター > このページでのフィルターに以下条件追加
・[訪日外国人_流動データ] の [出発地_種別] = "02:入国港"
※入国空海港→最初の訪問地のみの流動人数を集計したいため
多少数字は前後しているが概ね数値は近くて、この見方で良さそうですね
可視化する前にデータをしっかり確認する
今回のデータは以下のような特徴があり、データを理解せずに可視化をしてインサイトを得ようとするとミスリードしてしまうので注意!
・単純に集計するとダブルカウントになってしまう
・[訪日外国人流動量(人)]は四半期毎に項目があるが、Q1~Q4は場所によって入っていたりいなかったりするため、[訪日外国人流動量(人)_年間] を使うこと
3-2. 訪日外客数の入国から目的地への流量
データの流量や組合せを見たい場合は、
ビジュアル:Sankey Chart や Pie Charts Tree (両方ともカスタムビジュアル追加で利用可能)で可視化するとよいでしょう
今回は、Pie Charts Tree を使います
Sankey だとスタートとゴールを1つずつしか項目設定できないので、今回のように[国名] [出発地] [目的地] 等複数ポイントがある場合はPie Charts Treeの方が融通が利きます
また、流量の降順に上から並ぶのでわかりやすいのも使い勝手がよいです
① カスタムビジュアル: Pie Charts Tree の追加
視覚化 > ビジュアルから[・・・]を選択 > その他のビジュアルの取得 を選択、
Power BI ビジュアルページで 「Pie Chart」とビジュアル検索し、Pie Charts Tree を選択して「追加する」を選択
② [訪日外客人_流動(入国港)人数確認] ページを複製し、 [訪日外客人_流動(入国港⇒目的地)] ページを作成し、テーブルビジュアルを削除
ページでのフィルターに、[訪日外国人_流動データ] の [出発地_種別] = "02:入国港" の条件が入っているのはそのまま使用
③ 視覚化 > Pie Charts Tree ビジュアルを追加し、
Categories にスタートや通過ポイント、ゴールを順番にイベント発生順に設定(ここでは [出発地_名称] [目的地_名称] を設定)、
Value には流量となる [訪日外国人流動量(人)_年間] を設定
可視化からの考察
✔ 訪日外国人の入国は、成田空港が1位、続いて関西空港、羽田空港
✔ 近隣アジアに絞ると、関西空港が1位になる
3-3. 沖縄を目的地とする訪日外国人の国と入国港の流量
同ページに、[出発地_名称] [目的地_名称] のスライサーを追加して、目的地に対してどの国の人がどの空海港から入国してくるか確認してみましょう
① [出発地_名称] [目的地_名称] のスライサーを追加
② Pie Charts Tree のビジュアルを選択し、Categories に[国名]を追加
③ [目的地_名称] スライサーを "沖縄" にして、どの国の人がどの空海港から入国してくるか確認してみる
④ [地域] スライサーを "近隣アジア" に絞って見やすくする
可視化からの考察
✔ 沖縄を目的地とする訪日外国人は、1位:台湾、2位:韓国、3位:中国
✔ 入国港は、各国とも那覇空港からの入国が98%超
⇒仮説:目的地に対して各国からの直行便有無は流量に大きく影響しそう
3-4. 都道府県別の訪問人数と各国構成比
沖縄以外の都道府県もどの国からどのくらい訪問されているか見てみたくなりますね
今度は地図にプロットしてみましょう
① [訪日外客人_流動(入国港⇒目的地)] ページを複製し、 [訪日外客人_流動(目的地)] ページを作成し、Pie Charts Tree のビジュアルを削除
② フィルター > このページでのフィルター で、
・[出発地_種別] のフィルター条件を外し「すべて選択」に戻す
・[訪日外国人_流動データ] の [目的地_種別] = "01:訪問地" の条件を追加
※入国空海港→最初の訪問地だけでなく、訪問地間の流動人数も集計対象にしたいため
③ 視覚化 > マップ ビジュアルを追加し、以下設定
・場所:[訪日外国人_流動データ] の [目的地_名称2]
・凡例:[訪日外国人_流動データ] の [国名]
・バブルサイズ: [訪日外国人流動量(人)_年間]
可視化からの考察
✔ 訪問都道府県ランキングは、1位:東京、2位:大阪、3位:京都、4位:北海道、5位:沖縄で、最下位は、高知、福井
⇒仮説:各都道府県の国際線発着便数と相関がありそう
✔ 近隣アジアに絞ってみてみると、韓国は西日本への訪問割合が多く、台湾には北国(北海道、東北、北陸)が訪問が多く人気がありそう
4. 訪日外客数の増減に相関がありそうな要因を可視化
データ間の相関がみたい場合は、
ビジュアル:散布図、主要なインフルエンサー、相関プロット(カスタムビジュアル)で可視化するとよいでしょう
ただし、[人口比] や [為替昨対比] [訪日外客数昨対比] のようなメジャー項目は、そのときのフィルターや軸によって毎回再計算されるため、相関系のビジュアルではそのまま使用できません
相関系ビジュアルを使う前に事前にキー項目で集計したテーブルにしておく必要があります
これを Power BI Desktop 上で簡易的に実施する方法は、国別月別の集計テーブルに可視化して、そのデータをエクスポートして再度データを取り込むことです
可視化からの考察
✔ 主要なインフルエンサーによると、訪日外客数の多い条件は以下である
・地域:近隣アジア
・国名:中国、韓国、台湾、香港、タイ
・人口比は0.749%以上の国
✔ これまでの各ビジュアルでの可視化から得られた内容と同等だが、何から見て良いかわからないときには最初にこのビジュアルでデータの当たりをつけるという使い方もよさそう
4-1. 国別月別の集計テーブル作成とエクスポート
① ページを新規作成
② 視覚化 > テーブル を選択し、列に以下を選択
・[国マスタ] の [地名] [国名]
・[年月カレンダー] の [年月] [四半期] [月]
・[訪日外客数] の [人数] [昨対比] [人口比]
・[外国為替ヒストリカルデータ] の [通貨為替レート(円)] [為替昨対比]
③ テーブルビジュアルの右上の [・・・] を選択 > データのエクスポート で任意のCSVファイル名で出力
④ データを取得 > テキスト/CSV > 先ほどエクスポートしたファイルを選択 > データの変換を選択
⑤ Power Query エディターにて、プロパティで[集計データ]に名前変更し、以下データ成形
・[国名] のフィルターで空白行を削除
・[昨対比] [人口比] [為替昨対比] のデータ側を % から 10進数 に変換
・[人数] のフィルターで null 行削除
⑥ 閉じて適用
⑦ [集計データ] と [年月カレンダー] [国マスタ] にリレーション追加
4-2. 訪日外客数の主要なインフルエンサーの可視化
主要なインフルエンサーについては、以下ドキュメント参照
① 「為替レートと訪日外客数」ページを複製して、「主要なインフルエンサー」ページを作成し、上部のスライサー以外のビジュアルは削除
② 2020 年以降はコロナの影響で大きく乱れているため、[年月] スライサーで比較的データが揃って安定している 2013 年 ~ 2019 年にフィルター
③ 視覚化 > 主要なインフルエンサー のビジュアル追加、以下項目セット
・分析:[集計データ] の [人数]
・説明:[集計データ] の他項目
可視化からの考察
✔ 主要なインフルエンサーによると、訪日外客数の多い条件は以下である
・地域:近隣アジア
・国名:中国、韓国、台湾、香港、タイ
・人口比は0.749%以上の国
✔ これまでの各ビジュアルでの可視化から得られた内容と同等だが、何から見て良いかわからないときには最初にこのビジュアルでデータの当たりをつけるという使い方もよさそう
4-3. 訪日外客数の昨対比と為替昨対比の相関関係を可視化
2つの項目の相関関係を可視化するには、
ビジュアル:散布図を使って可視化したり、メジャーで相関係数を作成したりするとよいでしょう
相関関係を可視化するための散布図の使い方は、このサイトがわかりやすく説明されています
散布図で相関関係を可視化
① 「主要なインフルエンサー」ページを複製して、「昨対比と為替昨対比の相関関係」ページを作成し、上部のスライサー以外のビジュアルは削除
② 2020年以降はコロナの影響で大きく乱れているため、[年月] スライサーで比較的データが揃って安定している 2013 年 ~ 2019 年にフィルター
③ 国別月別の粒度で [訪日外客数の昨対比] と [為替昨対比] を相関を確認したいため、[国名] と [年月] を連結してキー項目を作成
・フィールドから[集計データ]を選択して右クリック > 新しい列 を選択
・数式バーに以下入力
国名_年月 = '集計データ'[国名] & "_" & '集計データ'[年月]
④ 視覚化 > 散布図 のビジュアル追加、以下を選択
・値:[集計データ] の [国名_年月]
・X軸:[集計データ] の [昨対比]
・Y軸:[集計データ] の [為替昨対比]
⑤「分析」を選択し、「傾向線」にチェック入れて、「傾向線」を表示
相関係数を確認
① メジャーで相関係数を作成
・フィールドから[集計データ]を選択して右クリック > 新しいクイックメジャー を選択
・計算:相関係数 を選択、以下を選択
・カテゴリ:[集計データ] の [国名_年月]
・メジャーX:[集計データ] の [昨対比]
・メジャーY:[集計データ] の [為替昨対比]
・数式バーの式を確認
③ 視覚化 > カード のビジュアル追加、フィールドに先ほど作成した相関係数の項目をセット
④ フィルター > このページでのフィルターで、[昨対比] と [為替昨対比] に「空白ではない」のフィルターを追加
※ 空白(欠損)が含まれていると相関係数が正しく計算されないため
⑤ 国毎の相関係数を一覧確認するため、視覚化 > テーブル のビジュアル追加、列に [国名] [相関係数] をセット
可視化からの考察
✔ [昨対比]と[為替昨対比]の相関は、全体的には相関があるとは言えないが、香港、ロシア、台湾等、近隣アジアはやや相関あり
⇒仮説:目的が観光の訪日外客数が多い場合は、多少相関はあるかもしれない
さいごに
「訪日外客数データで Power BI レポート作成」シリーズを4回に渡って記事にしてきました
オープンデータを組合せて可視化するだけでも、色々なインサイトが得られて可視化しがいがありましたね
複数のデータを組合わせたり、様々なビジュアルを使って色々な角度から可視化する上でのポイントや注意点を体験頂き、皆様の日々の業務のお役に少しでも立てたなら幸いです