データ分析

【Pythonでデータ分析】NUMBEOのデータから世界のQOLを比較する

2021年8月22日

【Pythonでデータ分析】NUMBEOのデータから世界のQOLを比較する

こんにちは。TATです。

今日のテーマは「NUMBEOのデータから世界のQOLを比較する 」です。

前回記事の続編です。

過去記事
【Pythonでデータ分析】NUMBEOのデータから世界の生活コストを比較する
【Pythonでデータ分析】NUMBEOのデータから世界の生活コストを比較する

続きを見る

 

NUMBEOには、生活コスト(Cost of Living)のほかQOL(Quality of Life、生活の質)に関するデータもまとめられています。

このデータを使って、世界のQOLについて分析してみます。

特に日本のQOLについても気になるところです。

 

【Pythonでデータ分析】NUMBEOのデータから世界のQOLを比較する

【Pythonでデータ分析】NUMBEOのデータから世界のQOLを比較する

データの準備

まずは分析に使用するデータを準備します。

 

データはNUMBEOから

データの取得先はNUMBEOです。

ここにはCost of Living(生活コスト)やQuality of Life(生活の質)などのデータがまとめられています。

誰でも無料で見ることが可能です。

 

ここでは国別のQOL(Quality of Life、生活の質)を比較するので、Quality_of Life Index by Countryを参考にします。

取得した時点(2021年8月)で最新だったMid 2021のデータを取得します。

 

スクレイピングでサクッと取得

データはサクッとスクレイピングで取得しました。

数行でデータの取得は完了します。

import pandas as pd
import requests
from bs4 import BeautifulSoup

# urlを定義
url = "https://www.numbeo.com/quality-of-life/rankings_by_country.jsp"

# htmlを取得
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

# tableを抽出
table = soup.find("table", {"id":"t2"})

# DataDrameに変換
df = pd.read_html(str(table))[0]

 

取得できたデータがこちらです。

 

requestsで取得するとRankデータが空になっていたので追加します。

rank関数を使えば1行で完了です。

 

ちなみに各カラムの意味はざっくりとこんな感じです。

  • Rank:Quality of Life Indexの順位
  • Country:国名
  • Quality of Life Index:QOL(生活の質)
  • Purchasing Power Index:購買力
  • Safety Index:安全度
  • Health Care Index:医療
  • Cost of Living Index:生活コスト
  • Property Price to Income Ratio:収入に対する不動産価格の割合
  • Traffic Commute Time Index:通勤時間
  • Pollution Index:汚染、公害
  • Climate Index:気候

 

これでデータの準備は完了しました。

 

取得データの概要を把握する

データの準備が完了したところで早速データを見ていきます。

まずはデータの確認です。

分析に始める前には、必ずデータの概要をチェックしておくべきです。

ここでは、pandasのdescribe, info関数、 さらにseabornのpairplotおよび各カラムの相関係数をヒートマップで表現してみます。

 

describe, info関数でデータの概要を把握する

まずはdescribeinfo関数でデータの概要を見てみます。

 

describe関数

まずはdescribe関数です。

 

これで各カラムの基礎的な統計データなどがわかります。

countが83となっているので、83カ国分のデータがあることがわかりますね。

 

info関数

次にinfo関数です。

 

ここでは各カラムのデータの型などを把握することができます。

ここで想定していた型と異なる場合にはデータ整形が必要になります。

 

例えば、Quality of Life Indexがobjectになっていれば、どこかに変な値が紛れていることが考えられます。

そうした場合にはそのデータを特定して適切に変換して、floatに変換するといった処理が必要になります。

 

今回の場合はこうしたデータ整形は不要ですが、基本的にデータ分析を行う前にはこの確認作業をしておいたほうが後から後悔することが少なくなります。

 

seabornのpairplotでデータの概要を把握する

次にseabornのpairplotを使ってみます。

これで各カラムのヒストグラムとカラム間の散布図が表示できます。

 

ちょっと細かくて見にくいですが、全体を把握するのに便利なのでご紹介させていただきました。

 

相関係数をヒートマップで可視化する

最後にヒートマップを使った可視化をご紹介しておきます。

dataframeにはcorr関数という相関係数を計算してくれる関数があります。

 

ただこれだと数値に羅列になってしまうので、どこを見ればいいのかわかりにくくなってしまいます。

こういう時に便利なのがヒートマップです。

 

値に応じて色が変わるので、数字の羅列よりかは圧倒的にわかりやすくなります。

例えばPollution Index(汚染指数)とQuality of Life Indexには強い逆相関があることがわかります。

この指数が下がるほど、つまり汚染が少なくなるほど、QOLも上がるということです。

 

一方でClimate Index(気候指数)は、どのIndexとも相関はありません。

ヒートマップを使えば、データの概要を一目で把握することができます。

 

データを分析する

データの概要が把握できたことで分析していきます。

データを見て僕が気になったところをピックアップしてご紹介していこうと思います。

是非ともご自身でもデータを取得して色々分析して見てください。

 

各項目のトップ10を見る

まずは各項目のトップ10を見ていきます。

表にまとめました。

 

QOLで1位はスイスです。

そしてデンマークやフィンランドといった北欧も目立ちます。

 

しかし他の項目で見ると違いがあります。

収入に対する不動産価格の割合では想定通りの香港が1位です。

汚染、公害はやはり途上国が目立ちます。

 

一方で日本を見ると、Safety IndexとCost of Living Indexにランクインしていますね。

 

QOL向上に最も大事なのは汚染の低下

次に何がQOLに最も影響するのかを見てみます。

QOLと各カラムの相関係数を表示しました。

相関係数は−1〜1の間で表現され、1に近づくと正の相関、−1に近づくと負の相関であることを示します。

人によって相関があると判断する基準は変わってきますが、ざっくり絶対値で0.7を超えると相関があるといって問題ないと思います。

 

絶対値で見ると、最も相関が強いのはPollution Indexであることがわかります。

つまり汚染です。-0.894なので負の相関です。

この数値が下がれば下がるほどQOLは上昇していきます。

散布図で見るとこんな感じです。

チャートからも負の相関であることがわかります。

 

またPurchasing Power Index(購買力)やCost of Living Index(生活コスト)、Traffic Commute Time Index(通勤時間)もQOLに大きく影響しています。

購買力が高い=好きなものやサービスを買うことができるという意味なので、それなりに所得があり、自由に使えるお金がある程度あるということになります。

また生活コストにも相関が見られます。

生活コストが高い=だいたい先進国という構想になっており、また先進国の方が公害も少ない傾向にあります。

基本的に公害よりも経済発展を優先しがちな途上国の場合は、大気汚染などが問題となりQOLも低くなりがちです。

 

最後に通勤時間もQOLに影響しています。

負の相関なので、通勤時間が短いほどQOLは上昇するということです。

これは納得ですね。日本は郊外に住む人が多く、通勤時間が長くなりがちです。

さらに満員電車というダブルパンチなので、この影響は多そうです。

QOLをあげるなら、多少家が狭くても職場に近いところに住むと良さそうですね。

 

香港はQOLに対して生活コストが高すぎる

次にQOLと生活コストの関係を見てみます。

基本的には右肩上がりの関係になっています。

 

しかし1カ国だけ孤立している国がありますね。それが香港です。

QOLに対して生活コストが非常に高い結果となっています。

同じくらいのQOLであるチリやタイなどと比べると生活コストがぶち抜いて高くなっています。

 

これは先ほどの各項目でも確認できた不動産価格の高さが影響しています。

収入に対する不動産価格の割合とQOLの関係を表示してみました。

香港がずば抜けて高い位置にいますね。

QOLで比較するとイランやスリランカ、中国、韓国なんかも不動産価格が高い結果になっています。

ちなみに日本は他国に埋もれて見えませんが、QOLが164.06、不動産のIndexが76.01と結構右下のグループに位置しています。

これだけで見ると日本はかなり良いですね。

 

日本はQOLに対して通勤時間が長い傾向にある

次に日本に焦点を当てます。

日本は全ての項目において平均を上回る結果となりました。

しかし、QOLで比較すると、通勤時間は他国に比べて少し長い傾向にあります。

 

基本的には右下がりの傾向にあります。

中でもコスタリカの通勤時間はずば抜けていますね。

 

一方で、日本は同じくらいのQOLであるアメリカやスペイン、スロベニアなどと比べると通勤時間が長い結果となっています。

日本の場合は東京の一極集中が進んで、多くの人が郊外に住んでいます。

その結果、通勤時間は長くなりがちです。

前述の通り、通勤時間の長さはQOLに大きく影響するので、家が狭くなっても職場の近くに住むことができると良さそうです。

 

やっぱり北欧が強い

最後に北欧について見ておきます。

QOLでよく上位に登場するのが北欧諸国です。

ここでも見ていきます。

Wikipediaによると北欧の定義はこうです。

「欧」とは「欧州・欧羅巴(ヨーロッパ)」の意であり、日本語では「北欧」と「北ヨーロッパ」に明確な字義の違いはなく、しばしば同義語とされる。

ノルウェー、スウェーデン、デンマーク、フィンランドに、バルト三国(エストニア、ラトヴィア、リトアニア)、ブリテン諸島、アイスランドを含む。

Wikipedia「北欧」より

 

これらの国とそれ以外の国で比較してみます。

今回のデータで存在したのは、ブリテン諸島を除く「フィンランド、ノルウェー、スウェーデン、アイスランド、デンマーク、エストニア、ラトビア、リトアニア」の8カ国でした。

 

各項目で北欧諸国とそれ以外で平均値を出してみました。

1が北欧諸国、0がそれ以外です。

ぶち抜いていい結果を示していますね。

QOL以外にも購買力や安全性、医療などあらゆる項目で他国を上回っています。

ただ1点だけClimate Indexだけは他国を下回る結果となりました。

北欧は寒さが厳しいですからね。ここばかりは仕方ないのかなと思います。

 

ついでにQOLをヒストグラムにしてみました。

 

右側によっていることがわかります。強いですね。

 

以上でデータ分析はおしまいです。

この他にも色々な分析ができると思うので、是非ともデータを取得して各々分析してみてください。

 

まとめ

いかがでしたでしょうか。

今回は「NUMBEOのデータから世界のQOLを比較する 」というテーマで、NUMBEOから取得したデータを分析してみました。

 

Pythonを使えばデータの収集から分析・可視化まで簡単に行うことができます。

この記事を読んで興味を持っていただけけたら、是非ともご自身でもデータを取得して色々と分析してみてください。

 

また前回記事ではCost of Living(生活コスト)に関するデータの分析も行っているので合わせてご覧ください。

過去記事
【Pythonでデータ分析】NUMBEOのデータから世界の生活コストを比較する
【Pythonでデータ分析】NUMBEOのデータから世界の生活コストを比較する

続きを見る

 

ここまで読んでくださり、ありがとうございました。

おすすめPython学習法

Udemy:セール中なら90%オフで購入可能。豊富なコースから選べる!

データミックス:Pythonとビジネスについて学べる!起業したい方にもおすすめ!

SAMURAI TERAKOYA:月額2,980円〜利用できるコスパ最強スクール!

 

-データ分析
-, ,

© 2023 気ままなブログ