【アンケートデータ可視化】アンケートデータを可視化してみた〜QuickSight編〜

2023.07.19

データアナリティクス事業本部のsutoです。

BIチームでは、アンケートデータの可視化をテーマにブログリレーを行っています。

今回は、アンケートデータを題材によくある可視化パターンの作り方をAmazon QuickSightを使って説明します。

QuickSightとは

AWSで簡単に分析環境を作成し、自動的にスケールするビジネス分析(BI)サービスです。

Athena、Redshift、S3等、多数のオンプレミスやSaaSのデータソース(データ供給元)に対応しており、管理者がデータソースから、データセット(データソース内の特定のデータ)を定義し、QuickSightのユーザに公開することが可能です。

また、QuickSightにはSPICEというインメモリ型の高速データベースにデータを取り込むことでより高速なアクセスをさせることもできます。

基礎的な使い方はGetting Startのページをご参照ください。

また、QuickSightを体系的に学べるワークショップもあります。

【注意】Paginated Reports料金について

上記ワークショップ項目にある「Paginated Reports」の料金は、一度利用するだけで$500/月の課金が一気に来ちゃうのでご注意ください。

データ準備

東京都の丸の内仲通りで、自動運転バス走行実証実験が実施されています。 実証実験の詳細に関してはこちらをご覧ください。

実証実験の結果がオープンデータとして公開されていますので、今回はその中から以下のデータを使用します。

上記データを下記のように加工してから取り込んでいます。加工については、ブログリレー企画のデータ加工編でご確認ください。

QuickSight可視化の流れ

今回のQuickSight可視化は以下のステップで実施していきます。

  1. データ取込
  2. 計算フィールドの追加
  3. 回答者の属性を可視化する
  4. 単一回答を可視化する
  5. 複数回答を可視化する
  6. 自由回答(フリー入力)を可視化する

各項目について、以下の内容を記載しています。

  • 「1.データ取り込み」でローカル上のcsvファイルをQuickSightにアップロードする方法をご紹介
  • 「2.計算フィールドの追加」で読み込んだデータセットの既存フィールドから関数による計算を行った新しいフィールドを追加する方法をご紹介
  • 「3.回答者の属性を可視化する」で以下のグラフを表示するパターンをご紹介
  • 4〜6の「回答を可視化する」で、属性以外のデータの可視化の方法を「単一回答」「複数回答」「自由回答」の3パターンについてご紹介

1.データ取込

ダウンロードしたcsvファイルをQuickSightに取り込みます。

AWSコンソールの「QuickSight」画面に遷移し、メニューの「データセット」→「新しいデータセット」をクリックします。

今回はデータ加工済みのcsvファイルがありますので、「ファイルのアップロード」をクリックして、対象ファイルを選択します。

その後のポップアップ画面で「設定の編集とデータの準備」をクリックすることでデータセットの編集画面に移ります。

データ編集画面の右上「保存して公開」をクリックすることでデータセットの保存ができます。

2.計算フィールドの追加

データセットの編集画面では、カラム名変更、データ型の見直し、計算フィールドの編集ができます。

例えば、職業のフィールドで未回答による空白(””)となっていた場合、それを埋めるため計算フィールドを使って以下のように変換することができます。

※今回は、前回のブログより既にデータソース側で上記を計算し「回答者ID」というフィールドを作成済みのためこの計算フィールドは使用しません。

回答者数を集計する

今回は計算フィールドの追加で回答者を集計します。

1人の回答者ごとに重複しないユニークなキーはどこになるかをデータセットから考えます。

単純に回答IDのdistinct_countで求められそうですが、今回は「歩行者」と「試乗体験者」の2種類のアンケートがあります。ここは前回のブログより「回答者フラグ」のフィールドで集計識別し、「”回答者_回答者フラグ”」という値を格納する「回答者ID」というフィールドを作成済となっています。

よって、以下のようにdistinct_count関数に回答者IDを指定した「回答者数」というフィールドを作成しました。

3.回答者の属性を可視化する

回答者数を性別、年齢、職業などの各属性に合わせて可視化してみました。

最終的に以下のようなダッシュボードを作成しています。

QuickSightでは、以下のようにグラフのフォーマットを変更することができます。

  • ビジュアライズのフォーマット
    • グラフ右上の設定より鉛筆アイコンをクリックすると、左メニューに設定項目が表示されます

  • データのフォーマット
    • 変更対象フィールドは、「フィールドリスト」または「フィールドウェルに設定したフィールド」のいずれかを選択しします
    • 変更したいフィールドの設定アイコンから「形式」→「その他のフォーマットオプション」をクリックすると、左メニューに設定項目が表示されます
    • 小数位、単位、負数の表示設定、区切り文字の設定、Null値の扱いなどを変更できます

ダッシュボードの各分析シートの詳細設定以下のとおりです。

(デフォルト設定から変更した部分を記載します)

回答者数値カード(KPI)

ビジュアライズのフォーマット

  • タイトル
    • 回答者数
  • KPI
    • サイズ:大

データのフォーマット

  • 単位
    • サフィックス:人

考慮ポイント

  • 単純に回答者数をカウントして表示するものなので、ビジュアルタイプはKPIが最適と判断しました。

やりたかったが出来なかったこと

  • タイトルやサブタイトルと値の表示位置を横並びにできるよう調整できる機能が欲しかったです。

回答者構成比(ドーナツグラフ)

ビジュアライズのフォーマット

  • タイトル
    • 回答者構成比
  • ドーナツグラフ
    • サイズ:中
    • 合計を非表示
    • タイトル、ソートを非表示
  • グループ/色
    • タイトル、ソートを非表示
  • 凡例
    • 凡例タイトルを非表示
    • 位置:上
  • データラベル
    • メトリクスのラベルスタイル:値およびパーセント
    • フォントサイズ:大

データのフォーマット

  • 単位
    • サフィックス:人

考慮ポイント

  • 凡例が2件のカウント数比較なのでドーナツグラフで表現してみました。
  • 凡例の位置はグラフの「右」がデフォルトで、他に「上」、「下」も選択可能です。
  • 真ん中に合計値を表示させる機能もありますが、今回はKPIに数値を表示させているのでこちらでは非表示にしました。
  • データラベルでは、ラベルスタイルに値とパーセンテージ両方を表示できる機能があります。

やりたかったが出来なかったこと

  • ラベルのテキストの表示位置を細かく調整できる機能が欲しかったです。

性別構成比(円グラフ)

ビジュアライズのフォーマット

  • タイトル
    • 性別構成比
    • タイトル、ソートを非表示
  • グループ/色
    • タイトル、ソートを非表示
  • 凡例
    • 凡例タイトルを非表示
    • 位置:上
  • データラベル
    • メトリクスのラベルスタイル:値のみ
    • 位置:内側
    • フォントサイズ:大
    • ラベルのオーバーラップを許可

データのフォーマット

  • 単位
    • サフィックス:人

考慮ポイント

  • 3色の円グラフで表現してみました。
  • ドーナツグラフと同様に、ラベルスタイルは「値およびパーセンテージ」も選択可能ですが、今回は「値のみ」にしました。
  • 「未回答」のような数値の少ない要素はラベルテキストが非表示になりがちですが、「ラベルのオーバーラップを許可」にチェックをいれることで必ず表示させることができます。

やりたかったが出来なかったこと

  • QuickSightのデータラベルのフォントサイズは、どのビジュアルタイプでも「スモール」、「中」、「大」、「エクストララージ」の4段階から選ぶのが基本で、数値による細かいサイズ指定が出来ません。今後のアップデートで出来るようになると嬉しいです。

年齢別構成比(積み上げ棒グラフ)

ビジュアライズのフォーマット

  • タイトル
    • 年齢別構成比
  • X軸
    • タイトル、ソートを非表示
  • Y軸
    • タイトル、ソートを非表示
  • グループ/色
    • ソートを非表示
  • 凡例
    • 凡例タイトルを非表示
    • 位置:上
  • データラベル
    • ラベルのオーバーラップを許可

ソート設定

  • Y軸(回答者フラグ):降順

考慮ポイント

  • 「試乗体験者」と「歩行者」ごとに1本の棒グラフのなかで年代別に色分けして表現できるように積み上げ棒グラフを使いました。
  • 棒グラフにおいても「ラベルのオーバーラップを許可」にチェックをいれることで全項目の値を表示させるようにしています。

職業別構成比(ツリーマップ)

ビジュアライズのフォーマット

  • タイトル
    • 職業別構成比
  • グループ化の条件
    • タイトルを非表示
  • サイズ
    • タイトルを非表示
  • 凡例
    • 凡例、凡例タイトルを非表示
  • データラベル
    • フォントサイズ:大

データのフォーマット

  • 単位
    • サフィックス:人

ソート設定

  • 値(回答者数):降順

考慮ポイント

  • 回答の選択肢が多いので、円グラフなどにすると色分けも多くなり見づらくなってしまうので、人数比率をわかりやすく見せるデザインとしてツリーマップを使ってみました。

やりたかったが出来なかったこと

  • 最小の要素数(無職の人数)を上手く表示させることができませんでした。
    • 棒グラフのように「ラベルのオーバーラップを許可」の機能がツリーマップにはありませんでした。今後の今後のアップデートで追加させると嬉しいです。

4.単一回答を可視化する

次はアンケートの回答を可視化していきます。まずは質問に対して単一の回答を行なっている以下の質問に絞って可視化してみました。

前提として、フィルタ機能でフィールド「質問」に対して絞り込みを行っている状態でグラフを作成していきます。

Q1.エリアとの関わり

考慮ポイント

  • こちらの質問は選択肢が少ないこともあり、円グラフを使って見やすく表現できていると思います。

Q2.丸の内仲通りアーバンテラスのご利用頻度

考慮ポイント

  • 5段階の選択肢から回答数と回答比率を棒グラフで表現しました。傾向の大小をわかりやすくするためにビジュアルタイプ「水平積み上げ100パーセント棒グラフ」を選択しました。
  • 回答のカウント数については選択肢をX軸とした棒グラフで表現してみました。
  • 回答のソートに関しては、文字列のソートだと以下キャプチャ画面のように意図した順番に並んでくれなかったので、計算フィールド「利用頻度(回答番号付)」というフィールドを追加しました。
    • 以下の計算で回答の値に番号付与する形に置換させました。

やりたかったが出来なかったこと

  • X軸のラベルの表示サイズ幅を増やして棒グラフのサイズ(太さ)を減らすなどのカスタマイズが出来ればよかったのですが、QuickSightの仕様では出来なそうでした。

5.複数回答を可視化する

次に「複数回答可」であった質問について可視化してみます。つまり、1人が1つの質問の中で2個以上選択できる回答となります。

よって回答者よりも回答数の合計が多くなる可能性があります。

選択肢ごとの件数を可視化

  • まずは単純に回答数を横並びの棒グラフで表し、ランキング形式を意識して回答数に対して降順にソートしました。これなら回答者全体のとして多数派の意見はどれなのかが明確になっていると思います。

選択肢ごとの件数を年齢別に分けて可視化

  • 次に上記グラフからさらに年齢ごとに選択肢の件数の傾向に違いが出るかを可視化してみました。
  • 色別に年齢で分け、棒グラフのタイプで表しています。やはり棒グラフは、複数回答(MA)の設問で選択肢ごとの回答者数や割合を可視化するのに便利です。

  • その他、回答数の比較を見ていく他に、複数回答をしたユーザーがどれくらいいたのかをKPIで出してみるのもいいかもしれません。

6.自由回答(フリー入力)を可視化する

  • 自由回答の場合、項目を分けることができないため、一般的なグラフで表現するのは難しいです。
  • 今回は「テーブル」による一覧表として表現しました。

やりたかったが出来なかったこと

  • QuickSightにはビジュアルタイプに「ワードクラウド」が使えますのでやってみましたが、文章をそのまま読み込ませても以下キャプチャ画面のように上手くいきません。やはり回答の値を、事前に形態素解析(文章を単語に分割し、品詞の分類を行うこと)することが必要ですね。

最後に

アンケートデータをQuickSightを使った可視化についてご紹介しました。

ラベル位置、フォントの大きさなど細かな設定はできませんが、よく使われるビジュアルタイプや計算フィールドで使用できる関数は揃っているので、オーソドックスに表現することができました。