身近なデータの分析 参議院議員選挙の結果をQlikViewで分析してみよう

身近なデータの分析 参議院議員選挙の結果をQlikViewで分析してみよう

Pocket

前回までは、QlikViewの基本的な使い方を学んでいただくことを目的にしていましたが、QlikViewの使い方を覚えるには、やはり身近なデータを使って、実際に分析をしてみるのが一番です。
そこで、先日実施された参議院議員選挙の結果を、QlikViewで分析してみましょう。
分析と言っても複雑な数学の知識は必要ありません。普段選挙のときによく聞く、投票者数、投票率などの値を実際に自分で確認してみて、データの特徴を捉えられないか試してみましょう。


改訂 2016年3月7日

東京都選挙管理委員会のWebサイトが改訂され、URLなどが変更になりました。現状このままの手順では操作できませんのでご注意ください。
確認したところHTMLのCAPTION要素を処理できていないようです。すぐに試したい方は以下の手順で操作してください。
  1. 以下のページをローカルに保存する。
    http://www.senkyo.metro.tokyo.jp/election/sanngiin-all/sanngiin-sokuhou2013/sangiin-turnout2013-end/
  2. <thead>タグと<tbody>タグの間にある<caption>タグを削除する。(<caption>~</caption>までをすべて削除します。)
  3. QlikViewで[相対パス]のチェックを外した上で、[Webページ]ボタンをクリックする。
  4. [ローカルファイル]から保存したファイルを選択する。
  5. [文字セット]から「Unicode(UTF-8)」を選択する。
  6. 変換オプションを有効にして、「計」で終わるものを削除する。(文字化けしていても設定はできます。)
  7. ファイルウィザード終了後、PurgeChar関数などを使用して、数値の末尾についている「人」と「%」の単位を削除する。
LOAD 開票区, 
     PurgeChar(当日有権者数, '人') as 当日有権者数,
     PurgeChar(投票者数, '人') as 投票者数,
     PurgeChar(棄権者数, '人') as 棄権者数,
     PurgeChar(投票率, '%') as 投票率,
     PurgeChar(前回投票率, '%') as 前回投票率
FROM
[C:\Users\qlik\Desktop\参議院議員選挙(平成25年7月21日執行)(東京都選出)投票結果 _ 東京都選挙管理委員会.htm]
(html, utf8, embedded labels, table is @1, filters(
Remove(Row, RowCnd(CellValue, 1, StrCnd(end, '計')))
));


使用するデータの確認

2013年7月21日に実施された参議院議員選挙の、東京選挙区のデータを使用します。
ここでは東京都選挙管理委員会がWeb上に公開している、以下のデータを使用します。

使用するデータ
http://www.senkyo.metro.tokyo.jp/h25sangisokuho/h25san_stou_2200.html
http://www.senkyo.metro.tokyo.jp/election/sanngiin-all/sanngiin-sokuhou2013/sangiin-turnout2013-end/
analyze-sangiin-giin-senkyo-2013-101残念ながら、ExcelなどのファイルではなくHTMLのページです。このページをExcelなどに貼り付けて保存しなおしてもいいのですが、QlikViewにはWeb上のデータを簡単に取り込む機能がありますので、今回はその機能を使用してみます。
ここでは、ひとまず取り込むデータの確認だけしておいてください。

東京都選挙管理委員会のトップページから以下のようにリンクをたどることでも、今回使用するデータを確認できます。
画面左の「選挙結果&データ」→「投開票結果」の「参議院議員選挙(H25)」→「参議院議員選挙(H25)」のバナー→「選挙区」の「投票結果」のリンク。
画面上の「都内選挙日程/データ」→「参議院議員選挙・投開票結果」→「参議院議員選挙(平成25年7月21日執行) 投開票結果」→「投票」「東京都選出」にある「投票結果」のリンク。


データの取り込み

ロードスクリプトの編集画面の起動

それではデータを取り込んでみましょう。
まずはファイルを新規に作成し、[ロードスクリプトの編集]画面を起動します。

QlikViewを起動してスタートページを表示します。
[ファイル]→[新規作成]を選択します。
analyze-sangiin-giin-senkyo-2013-102ウィザードが起動したら[キャンセル]ボタンをクリックしてウィザードを終了します。

空のドキュメントが表示されます。
ツールバーの[ロードスクリプトの編集]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-103

Webページからのデータの取り込み

これからデータを取り込みますが、前述のとおり元のデータはHTMLのページでした。QlikViewにはWeb上のデータを簡単に取り込む機能がありますので、今回はその機能を使用してみます。

ロードスクリプトで「SET」の下の行をクリックして、最下行にカーソルをあわせます。
この状態で画面右側の[Webページ]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-104
[ファイルウィザード]画面で[インターネットファイル]に以下のURLを指定します。
http://www.senkyo.metro.tokyo.jp/h25sangisokuho/h25san_stou_2200.html
analyze-sangiin-giin-senkyo-2013-105
ご注意
[次へ]ボタンをクリックすると、QlikViewから指定されたURLに接続します。
ここでは東京都選挙管理委員会のサーバーに接続しますので、連続した実行は控えてください。またサーバーへの接続は自己責任でお願いいたします。
サーバーに接続できなかった場合は処理が停止してしまいますので、事前にブラウザなどを起動して、上記URLに正しくアクセスできるか、あらためて確認してください。

準備ができたら[次へ]ボタンをクリックしてください。

HTMLのページに接続し、データを認識できました。
QlikViewはHTMLの表(TABLEタグ)を自動で認識して、表として取り込んでくれます。
1つ目のテーブル「@1」には、投票率のデータが読み込まれています。
analyze-sangiin-giin-senkyo-2013-1062つ目のテーブル「@2」には、表として認識できなかった部分が読み込まれています。
analyze-sangiin-giin-senkyo-2013-107今回の例では、表の前に記述されていた文字列が、2つ目のテーブルとして読み込まれています。

言うまでもなく、取り込むのは1つ目のテーブル「@1」ですので、「@1」を選択して[次へ]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-108
今回は少しデータを加工してみましょう。
[変換オプションを有効にする]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-109
データをよく見てみると、表の中には合計値も含まれているようです。
ひととおり確認すると分かりますが、末尾が「計」になっているものが合計値です。
これらを削除するために、[条件付き削除]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-110
下図のように[次の値で終わる]を選択し、値に「計」と入力します。
入力後[追加]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-111
条件式が画面下の領域に追加されたことを確認し、[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-112
[次へ]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-113
最後に取り込むデータを確認し[終了]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-114
ロードスクリプトが設定されました。
[OK]ボタンをクリックして画面を閉じます。
analyze-sangiin-giin-senkyo-2013-115
データを取り込んでみましょう。
[リロード]ボタンをクリックします。
ファイルを保存し、[ロードスクリプトの進捗]画面を閉じてください。
analyze-sangiin-giin-senkyo-2013-116analyze-sangiin-giin-senkyo-2013-117analyze-sangiin-giin-senkyo-2013-118analyze-sangiin-giin-senkyo-2013-119
以上でデータの取り込みは完了です。


ユーザーインターフェースの作成

それでは、データを分析するための画面を作成していきましょう。
今回はリストボックスと統計ボックスという、ごく基本的な2種類のオブジェクトだけでデータを分析してみます。

リストボックスの作成

シートの余白を右クリックして[リストボックスの追加]を選択します。
analyze-sangiin-giin-senkyo-2013-120
画面中央の[すべて追加]ボタンをクリックして、全項目をリストボックスとして追加します。
analyze-sangiin-giin-senkyo-2013-121
[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-122
リストボックスが作成できましたが、そのままだと表示が重なっていてデータが見えません。
analyze-sangiin-giin-senkyo-2013-123

リストボックスのレイアウト

手動で配置を整えることもできますが、もっと簡単な方法を使用してみましょう。
キーボードの[Ctrl]キーを押しながら[A]キーを押し、全オブジェクトを選択します。
analyze-sangiin-giin-senkyo-2013-124
一番上に表示されている「開票区」のリストボックスの上で右クリックして、[上揃え]を選択します。
analyze-sangiin-giin-senkyo-2013-125
全オブジェクトの上端が揃いました。
analyze-sangiin-giin-senkyo-2013-126
同様にして今度は右クリック→[左詰め]を選択します。
analyze-sangiin-giin-senkyo-2013-127
下図のように全オブジェクトが左詰めで配置されました。
analyze-sangiin-giin-senkyo-2013-128
そのまま(全オブジェクトを選択したまま)、ドラッグ&ドロップの操作で位置やサイズの調節ができます。
analyze-sangiin-giin-senkyo-2013-129

統計ボックスの作成

統計ボックスを追加してみましょう。
統計ボックスは、選択した項目の合計値や平均値、最大値、最小値などの基本的な統計量を見るためのものです。
シートの余白を右クリック→[シートオブジェクトの追加]→[統計ボックス]を選択します。
analyze-sangiin-giin-senkyo-2013-130
[項目]から「投票者数(人)」を選択し[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-131
投票者数の統計ボックスが追加されました。
analyze-sangiin-giin-senkyo-2013-132
同様にして投票率の統計ボックスを追加します。
analyze-sangiin-giin-senkyo-2013-133
[項目]から「投票率(%)」を選択し[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-134
投票率の統計ボックスが追加されました。
下図を参考に、配置を調節してください。
analyze-sangiin-giin-senkyo-2013-135


データの分析

投票率の平均値について

分析を開始する前に1点注意事項があります。
統計ボックスに投票率の平均値が表示されていますが、これは東京都全体の平均投票率としては使えません。
analyze-sangiin-giin-senkyo-2013-201この平均値は合計値/レコード数の計算によりもとめられています。つまり全62市区町村の投票率を足して、62で割った値となっています。当然市区町村ごとに有権者数が違いますので、この値は東京都全体の平均投票率とは食い違ってきます。
別途計算したところ、東京都の平均投票率は「53.51%」となりました。詳細は最後に解説いたしますが、ひとまず平均投票率としては「53.51%」を使用してください。

分析1

まず、有権者数や投票者数が最多の市区町村、投票率がもっとも高かった市区町村は、どこだったのか調べてみましょう。
「当日有権者数(人)」のリストボックスをスクロールして最大値を確認してみます。72万人が最大値ですね。
この値をクリックしてみます。
analyze-sangiin-giin-senkyo-2013-202
有権者数がもっとも多いのは世田谷区でした。確認できたら、値(722,082)をもう一度クリックして、選択を解除してください。
analyze-sangiin-giin-senkyo-2013-203
今度は投票者数の最大値を確認してみます。投票者数は統計ボックスがあるので、最大値の確認と選択も簡単です。最大値は39万人ですね。
この値をクリックしてみます。
analyze-sangiin-giin-senkyo-2013-204
投票者数の最多も世田谷区でした。
analyze-sangiin-giin-senkyo-2013-205
棄権者数の最大値も確認してみます。こちらも世田谷区ですね。
analyze-sangiin-giin-senkyo-2013-206投票率に目を移すと世田谷区は54.82%です。東京都全体の平均投票率は53.51%ですので平均以上です。また前回投票率と比べてみると、投票率が4~5%低下していることが分かります。
世田谷区は棄権者数が都内で唯一30万人を超えています。しかしそれは有権者数自体が多いためで、投票率は平均以上であるということが分かります。

今度は投票率の最大値を確認してみます。86.72%という非常に高い値がでています。
この値をクリックしてみます。
analyze-sangiin-giin-senkyo-2013-207
利島村という有権者数256名の村が該当しました。
analyze-sangiin-giin-senkyo-2013-208

分析2

東京23区に絞って分析してみましょう。
ここではリストボックスの検索機能を使用します。
「開票区」のリストボックスで右上の[検索]アイコンをクリックします。
analyze-sangiin-giin-senkyo-2013-209
検索窓に「*区」と入力します。(*は半角で入力してください。)
analyze-sangiin-giin-senkyo-2013-210QlikViewの検索機能では「*」はワイルドカードで、任意の文字列をあらわします。

そのまま[Enter]キーを押すと、23区が選択されます。
analyze-sangiin-giin-senkyo-2013-211統計ボックスでレコード数が「23」になっていることからも、23区が選択されていることが分かります。

では、23区の中で投票率がもっとも高かったのはどこでしょうか?
投票率の統計ボックスで最大値をクリックします。
analyze-sangiin-giin-senkyo-2013-212
23区の中で投票率がもっとも高かったのは文京区でした。
analyze-sangiin-giin-senkyo-2013-213ちなみに、前回投票率は64.25%ですので前回と比べると、4~5%程度投票率が落ちています。
確認後、値をもう一度クリックするか、ツールバーの[元に戻す]ボタンで1つ前の状態に戻してください。

こんどは23区以外の市町村を選択してみます。
「開票区」のリストボックスを右クリックして[除外値の選択]をクリックします。
analyze-sangiin-giin-senkyo-2013-214[除外値の選択]を使用すると、そのとき選択されていない値を選択します。(選択を反転できます。)
市町村を選択できました。
analyze-sangiin-giin-senkyo-2013-215
投票者数が24万人を超えている市町村があります。どの市町村か確認してみましょう。
投票者数の統計ボックスで最大値をクリックします。
analyze-sangiin-giin-senkyo-2013-216
投票者数が24万人を超えている市町村は八王子市でした。
analyze-sangiin-giin-senkyo-2013-217
[クリア]ボタンをクリックして、すべての選択を解除しておきます。
analyze-sangiin-giin-senkyo-2013-218

分析3

つづいて、投票率のデータで絞り込んでみましょう。
「投票率(%)」のリストボックスで右上の[検索]アイコンをクリックします。
analyze-sangiin-giin-senkyo-2013-219
検索機能では、等号(=)や不等号(<>)も使用できます。
「<53.5」と入力して、投票率が平均を下回る市区町村を選択します。
analyze-sangiin-giin-senkyo-2013-220
そのまま[Enter]キーを押します。
統計ボックスのレコード数を見ると、投票率が平均を下回る市区町村は、22あることが分かります。
analyze-sangiin-giin-senkyo-2013-221
選択を反転して、投票率が平均を超える市区町村を選択してみましょう。
「投票率(%)」のリストボックスを右クリックして[除外値の選択]をクリックします。
analyze-sangiin-giin-senkyo-2013-222
投票率が平均を上回る市区町村を選択できました。
analyze-sangiin-giin-senkyo-2013-223
「当日有権者数(人)」のリストボックスをスクロールして、有権者数の多い箇所を確認します。
analyze-sangiin-giin-senkyo-2013-224
有権者数が30万人を超える市区町村が5ありますので、これらを選択してみます。
analyze-sangiin-giin-senkyo-2013-225
投票率が平均を超える市区町村で、有権者数が多いのは以下の5市区であることが分かります。
前回投票率を見ると全体的に4~5%程度投票率が落ちているようです。
analyze-sangiin-giin-senkyo-2013-226
さらに投票率の値に目を移すと、投票率が55%を超えるデータが2件ありますので、これらを選択してみます。
analyze-sangiin-giin-senkyo-2013-227
江東区と町田市に絞り込まれました。
analyze-sangiin-giin-senkyo-2013-228投票率が平均を超える市区町村で有権者数が30万を超えるのは、「江東区」「杉並区」「世田谷区」「町田市」「練馬区」の5市区でした。さらにその中で、投票率が55%を越えるのは「江東区」と「町田市」でした。
また今回確認した中では、前回の選挙から投票率が4~5%落ちている市区町村が多く見られました。

以上で今回のチュートリアルは終了です。


補足説明

東京都の平均投票率の計算

前述のとおり、投票率の統計ボックスの平均値は、東京都全体の平均投票率としては使用できません。
そこで、東京都の平均投票率を計算してみましょう。
チャートを新しいシートに追加するため、ツールバーの[シートの追加]ボタンをクリックして、新しいシートを追加してください。
このツールバーが表示されていない場合は、下図の操作で表示させるか[レイアウト]メニュー→[シートの追加]を選択してください。
analyze-sangiin-giin-senkyo-2013-301
ツールバーを表示させるには、[表示]→[ツールバー]→[デザイン]を選択します。
analyze-sangiin-giin-senkyo-2013-302
新しいシートが追加されました。
analyze-sangiin-giin-senkyo-2013-303
平均投票率を計算します。今回はストレートテーブルを使用します。
シートの余白を右クリック→[シートオブジェクトの追加]→[チャート]を選択します。
analyze-sangiin-giin-senkyo-2013-304
[ストレートテーブル]を選択して[次へ]をクリックします。
analyze-sangiin-giin-senkyo-2013-305
軸はなにも使用しないため(全データの平均を求めるため)、軸の設定はそのまま[次へ]ボタンで次に進みます。
analyze-sangiin-giin-senkyo-2013-306
以下の数式を設定します。
投票者数の合計を、有権者数の合計で割ることで投票率が求められます。
Sum(投票者数(人)) / Sum(当日有権者数(人))
設定後[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-307
[完了]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-308
値は計算できましたが、書式設定されていないため「#」が表示されます。マウスカーソルを合わせたり、横幅を広げることで値自体は確認できますが、より見やすくなるように書式設定してみましょう。
analyze-sangiin-giin-senkyo-2013-309
ストレートテーブルを右クリックして[プロパティ]を選択します。
analyze-sangiin-giin-senkyo-2013-310
[チャートプロパティ]画面の[数値書式]タブを選択します。
[実数]を選択し桁数に「2」と入力します。[パーセント表示(%)]にチェックを入れて、[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-311
書式が設定できました。
東京都全体の平均投票率は「53.51%」であることが分かります。
analyze-sangiin-giin-senkyo-2013-312

Excelファイルへのエクスポート

前述のとおり、今回は東京都選挙管理委員会のWebサイトからデータを取り込んでいます。
このままでは、リロードを実行するたびに東京都選挙管理委員会のWebサイトに接続するため、オフライン環境ではリロードができません。また外部のサーバーに負荷をかけてしまい、好ましくありません。
そのため、データをExcelファイルにエクスポートし、Excelファイルからロードするように変更しましょう。

方法はいくつかありますが、一番簡単なのはテーブルボックスを使用する方法です。
シートの余白部分を右クリックし、[シートオブジェクトの追加]→[テーブルボックス]を選択します。
analyze-sangiin-giin-senkyo-2013-313
画面中央の[すべて追加]ボタンをクリックして、全項目を選択します。
analyze-sangiin-giin-senkyo-2013-314
[上へ]ボタンと[下へ]ボタンを使用して、項目を並べ替えます。
analyze-sangiin-giin-senkyo-2013-315
下図の順番に並べてください。[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-316
テーブルボックスができました。
analyze-sangiin-giin-senkyo-2013-317
テーブルボックス右上にある[Excel出力]アイコンをクリックします。
任意の場所にファイルを保存してください。
analyze-sangiin-giin-senkyo-2013-318
[ロードスクリプトの編集]画面を起動して、既存のLOAD文をコメントアウトします。
analyze-sangiin-giin-senkyo-2013-319
最下行にカーソルを合わせて[テーブルファイル]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-320
保存したExcelファイルを選択します。
analyze-sangiin-giin-senkyo-2013-321
今回は単純にデータを取り込むだけなので、[終了]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-322
ロードスクリプトが設定できました。[OK]ボタンをクリックします。
analyze-sangiin-giin-senkyo-2013-323
リロードを実行してください。
analyze-sangiin-giin-senkyo-2013-324
analyze-sangiin-giin-senkyo-2013-325
データの読み込み元を差し替えることができました。
analyze-sangiin-giin-senkyo-2013-326


振り返り

今回はQlikViewを使用して参議院議員選挙の結果を分析しながら、主に以下の2点についてご覧いただきました。
  • Webサイトから直接データを取り込む方法
  • リストボックスや統計ボックスを使用したデータの分析
今回作成したロードスクリプトは以下のとおりです。
※前半の「SET」文は省略しています。
※このスクリプトをコピーして使用する場合は、ファイルのパスを環境にあわせて変更してください。
/*
LOAD 開票区, 
     当日有権者数(人), 
     投票者数(人), 
     棄権者数(人), 
     投票率(%), 
     前回投票率(%)
FROM
[http://www.senkyo.metro.tokyo.jp/h25sangisokuho/h25san_stou_2200.html]
(html, codepage is 932, embedded labels, table is @1, filters(
Remove(Row, RowCnd(CellValue, 1, StrCnd(end, '計')))
));
*/

LOAD 開票区, 
     当日有権者数(人), 
     投票者数(人), 
     棄権者数(人), 
     投票率(%), 
     前回投票率(%)
FROM
C:\Users\qlikview\Desktop\選挙.xls
(biff, embedded labels, table is [Sheet1$]);


最後に…

QlikViewを使用する際、綺麗なチャートを並べたダッシュボードに注目が集まりがちです。しかし、リストボックスと統計ボックスだけでも、かなりいろいろとデータを分析できるということが、お分かりいただけたのではないでしょうか。
特にリストボックスはQlikViewで最もよく使用する重要なオブジェクトですので、ぜひ使いこなしてください。

また、繰り返しになりますが、QlikViewの使い方を覚えるには、やはり実際のデータを分析してみるのが一番の近道です。
今回は東京都のデータを使用しましたが、その他の都道府県に関するリンクを以下に掲載しますので、ご自分の住んでいる地域や、出身地のデータを入手して、ぜひQlikViewで分析してみてください。

総務省|第21回参議院議員通常選挙結果
総務省|道府県選挙管理委員会ホームページ一覧

お疲れ様でした。