公众号后台回复“图书“,了解更多号主新书内容

作者:CDA数据分析师

来源:CDA数据分析师


 CDA数据分析师 出品  

作者:真达、Mika

数据:真达  

【导读】

今天教大家用Python分析《世界幸福指数报告》。公众号后台,回复关键字“幸福”获取完整数据。

《世界幸福指数报告》是对全球幸福状况的一次具有里程碑意义的调查。

民意测验机构盖洛普从2012年起,每年都会在联合国计划下发布《世界幸福指数报告》,报告会综合两年内150多个国家的国民对其所处社会、城市和自然环境等因素进行评价后,再根据他们所感知的幸福程度对国家进行排名。

《世界幸福指数报告》的编撰主要依赖于对150多个国家的1000多人提出一个简单的主观性问题:“如果有一个从0分到10分的阶梯,顶层的10分代表你可能得到的最佳生活,底层的0分代表你可能得到的最差生活。你觉得你现在在哪一层?”

那么哪个国家在总体幸福指数上排名最高?

哪些因素对幸福指数的影响最大?

今天我们就带你用Python来聊一聊。

01

数据理解

关键字段含义解释:

1. rank:幸福指数排名

2. region:国家

3. happiness:幸福指数得分

4. gdp_per_capita:GDP(人均国内生产总值)

5. healthy_life_expectancy:健康预期寿命

6. freedom_to_life_choise:自由权

7. generosity:慷慨程度

8. year:年份

9. corruption_perceptions:清廉指数

10. social_support:社会支持(客观上物质上的援助和直接服务;主观上指个体感到在社会中被尊重、被支持和被理解的情绪体验和满意程度。)

02

数据导入和数据整理

回复关键字“幸福

获取本期详细数据和代码

首先导入所需包。

# 数据整理
import numpy as np
import pandas as pd # 可视化
import matplotlib.pyplot as plt
import seaborn as sns
import plotly as py
import plotly.graph_objs as go
import plotly.express as px
from plotly.offline import init_notebook_mode, iplot, plot init_notebook_mode(connected=True)
plt.style.use('seaborn')
# 读入数据
df_2015 = pd.read_csv('./deal_data/2015.csv')
df_2016 = pd.read_csv('./deal_data/2016.csv')
df_2017 = pd.read_csv('./deal_data/2017.csv')
df_2018 = pd.read_csv('./deal_data/2018.csv')
df_2019 = pd.read_csv('./deal_data/2019.csv')# 新增列-年份
df_2015["year"] = str(2015)
df_2016["year"] = str(2016)
df_2017["year"] = str(2017)
df_2018["year"] = str(2018)
df_2019["year"] = str(2019)# 合并数据
df_all = df_2015.append([df_2016, df_2017, df_2018, df_2019], sort=False)
df_all.drop('Unnamed: 0', axis=1, inplace=True)
df_all.head()

print(df_2015.shape, df_2016.shape, df_2017.shape, df_2018.shape, df_2019.shape)
(158, 10) (157, 10) (155, 10) (156, 11) (156, 11)
df_all.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 782 entries, 0 to 155
Data columns (total 10 columns):
region                     782 non-null object
rank                       782 non-null int64
happiness                  782 non-null float64
gdp_per_capita             782 non-null float64
healthy_life_expectancy    782 non-null float64
freedom_to_life_choise     782 non-null float64
corruption_perceptions     781 non-null float64
generosity                 782 non-null float64
year                       782 non-null object
social_support             312 non-null float64
dtypes: float64(7), int64(1), object(2)
memory usage: 67.2+ KB

03

数据可视化

2019世界幸福地图

整体来看,北欧的国家幸福指数较高,如冰岛、丹麦、挪威、芬兰;东非和西非的国家幸福指数较低,如多哥、布隆迪、卢旺达和坦桑尼亚。

代码展示:

data = dict(type = 'choropleth', locations = df_2019['region'],locationmode = 'country names',colorscale = 'RdYlGn',z = df_2019['happiness'], text = df_2019['region'],colorbar = {'title':'Happiness'})layout = dict(title = 'Geographical Visualization of Happiness Score in 2019', geo = dict(showframe = True, projection = {'type': 'azimuthal equal area'}))choromap3 = go.Figure(data = [data], layout=layout)
plot(choromap3, filename='./html/世界幸福地图.html')

2019世界幸福国家排行Top10

2019年报告,芬兰连续两年被评为“全球最幸福国家”。丹麦、挪威、冰岛、荷兰进入前五名,对比2018年报告,中国从86名下降到93名。

代码展示:

# 合并数据
rank_top10 = df_2019.head(10)[['rank', 'region', 'happiness']]
last_top10 = df_2019.tail(10)[['rank', 'region', 'happiness']]
rank_concat = pd.concat([rank_top10, last_top10])# 条形图
fig = px.bar(rank_concat, x="region", y="happiness", color="region", title="World's happiest and least happy countries in 2019")plot(fig, filename='./html/2019世界幸福国家排行Top10和Last10.html')

幸福指数相关性

我们可以得出以下结论:

  • 从影响因素相关性热力图可以看出,在影响幸福得分的因素中,GDP、社会支持、健康预期寿命呈现高度相关,自由权呈现中度相关,国家的廉政水平呈现低度相关,慷慨程度则呈现极低的相关性;

  • GDP与健康预期寿命、社会支持之间存在高度相关。说明GDP高的国家,医疗水平和社会福利较为完善,人民的预期寿命也会越高;

  • 健康预期寿命与社会支持之间存在中度相关性。

以下分别观察各个因素的影响程度。

GDP和幸福得分

人均GDP与幸福得分呈高度线性正相关关系,GDP越高的国家,幸福水平相对越高。

代码展示:

# 散点图
fig = px.scatter(df_all, x='gdp_per_capita', y='happiness',facet_row='year',color='year',trendline='ols')
fig.update_layout(height=800, title_text='GDP per capita and Happiness Score')
plot(fig, filename='./html/GDP和幸福得分.html')

健康预期寿命和幸福得分

健康预期寿命与幸福得分呈高度线性正相关关系,健康预期寿命越高的国家,幸福水平相对越高。

代码展示:

 散点图
fig = px.scatter(df_all, x='healthy_life_expectancy', y='happiness',facet_row='year',color='year',trendline='ols')
fig.update_layout(height=800, title_text='Healthy Life Expecancy and Happiness Score')
plot(fig, filename='./html/健康预期寿命和幸福得分.html')

GDP和幸福水平动态图

代码展示:

fig = px.scatter(df_all, x='gdp_per_capita', y='happiness',animation_frame='year',animation_group='region',size='rank',color='region',hover_name='region',trendline='ols')
fig.update_layout(title_text='Happiness Rank vs GDP per Capita')
plot(fig, filename='./html/GDP和幸福水平动态图展示.html')

健康预期寿命和幸福水平动态图

代码展示:

fig = px.scatter(df_all, x='healthy_life_expectancy', y='happiness',animation_frame='year',animation_group='region',size='rank',color='region',hover_name='region',trendline='ols')
fig.update_layout(title_text='Happiness Rank vs healthy_life_expectancy')
plot(fig, filename='./html/健康预期寿命和幸福水平动态图展示.html')

04

数据建模

我们使用线性回归进行建立一个基准模型,首先筛选一下建模变量,并删除空值记录。

sel_cols = ['happiness', 'gdp_per_capita', 'healthy_life_expectancy', 'freedom_to_life_choise', 'corruption_perceptions', 'generosity']
# 重置索引
df_model.index = range(df_model.shape[0])
df_model = df_all[sel_cols]
# 删除空值
df_model = df_model.dropna()
df_model.head()

from statsmodels.formula.api import ols# 建立多元线性回归模型
lm_m = ols(formula='happiness ~ gdp_per_capita + healthy_life_expectancy + freedom_to_life_choise + corruption_perceptions + generosity', data=df_model).fit()
lm_m.summary()

模型的R-squared=0.744,拟合效果尚可,根据模型的参数可知:

  • 变量重要性排序为:gdp_per_capita、freedom_to_life_choise、healthy_life_expectancy、corruption_perceptions、generosity

  • 控制其他变量不变的情况下,GDP指数每增加一个单位,幸福指数增加1.32个单位,健康预期寿命指数每增加一个单位,幸福指数增加1.21个单位。

比较预测值和真实值的分布:

df_pred = pd.concat([df_model['happiness'], y_pred], axis=1)
df_pred.columns = ['y_true', 'y_pred']# 散点图
fig = px.scatter(df_pred, x='y_true', y='y_pred', trendline='ols')
fig.update_layout(title='Resid of OLS Regression')
plot(fig, filename='./html/预测值和真实值分布图.html')

以下为模型残差分布图。

fig = px.histogram(x=lm_m.resid)
fig.update_layout(title='Resid of OLS Regression')
plot(fig, filename='./html/多元线性回归残差分布图.html')
◆ ◆ ◆  ◆ ◆
麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行活动,大家可以用原价5折的预购价格购买,还是非常划算的:点击下方小程序即可进入购买页面:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。管理员二维码:猜你喜欢● 麟哥拼了!!!亲自出镜推荐自己新书《数据分析师求职面试指南》● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗

GDP越高就越幸福吗?用Python分析《世界幸福指数报告》后我们发现…相关推荐

  1. 修改目录标题层级_关键词所在页面的层级越高权重越大

    查找引擎优化的关键词地点页面的层级越高权重越大,要说查找引擎优化关键词优化,说下关键词吧,拿网站主页为例,比方说主页标题中的58网站目录,在个"网站目录"这个词能够称为关键词. 假 ...

  2. 关于为什么频宽越大传输越快 、 频率越高传输距离越短

    关于为什么频宽越大传输越快 . 频率越高传输距离越短 频宽可以理解为水管,通常网络传输中越快的意思是单位时间内数据的吞吐量越大表示越快,频宽越宽水管越大,在同等流速情况下,水管越大的在单位时间内流出的 ...

  3. 计算机处理器的hz越大越好,cpu主频越高运算速度越快吗

    你相信电脑cpu主频越高越好吗?可问题是你的电脑配置能不能介绍这要求,可很多人都不明白这其中的知识.为此学习啦小编为大家整理推荐了相关的知识,希望大家喜欢. cpu主频越高运算速度越快的问题解说 台电 ...

  4. 使用R语言分析世界幸福指数

    使用R语言分析世界幸福指数 本文中的数据为2019年的世界幸福指数报告,数据来源于kaggle. 数据详情 数据包含9个字段: Rank: 排名 Country or Region: 国家或地区 Sc ...

  5. 大学考试分数越高学分越多吗_大学的绩点和学分有什么用?影响学生毕业吗

    原标题:大学的绩点和学分有什么用?影响学生毕业吗 网友一: 读大学也要关心成绩,绩点和学分是两个重要指标,到底是什么,怎么计算?有什么用处?为什么很重要?面试官最看重哪些指标呢? 一般每个课程都有学分 ...

  6. 服务器硬盘7200转和15000,机械硬盘是不是转速参数越高就越好?看完本文你就不这么觉得了...

    硬盘是大多数电脑中必备的部件,我们的操作系统.应用软件统统都安装在硬盘上.一般来说硬盘分为3.5英寸和2.5英寸两种,3.5英寸的用在台式电脑里面,转速多为7200转/分:2.5英寸的用在笔记本电脑里 ...

  7. 大学考试分数越高学分越多吗_大学学分绩点有多重要,你在意过吗?

    大学学分绩点有多重要,你在意过吗? "及格万岁"这是大学里面常说的话,今天我就来给大家纠正一下这些观点.你所谓的及格万岁,救了你一时,但决定不了你能否毕业.及格不用补考,但不代表你 ...

  8. 大学考试分数越高学分越多吗_千万别到了大四才知道,绩点和学分的用处,那可就真的为时已晚!...

    原标题:千万别到了大四才知道,绩点和学分的用处,那可就真的为时已晚! 大学是学生们步入社会前的象牙塔时光,在这期间会发生无限的可能,告别幼稚懵懂,迎接成熟坚毅.那作为一名大学生应该怎样规划大学生涯呢? ...

  9. 2022-2028中国高纯氘气市场现状研究分析与发展前景预测报告

    2021年中国高纯氘气市场销售收入达到了 万元,预计2028年可以达到 万元,2022-2028期间年复合增长率(CAGR)为 %.中国市场核心厂商包括Cambridge Isotope Labora ...

最新文章

  1. php json传值ajax,ajax 与PHP json 传值
  2. python回复qq消息_自动给qq好友发消息
  3. beandefinition与beanfactory
  4. Kali Linux ver2020.4安装Google中文输入法以及nslookup、dig等工具
  5. Silverlight 4 Beta开发版带着许多新特性发布
  6. CSS Library
  7. js中split()和join()的用法
  8. [react] 在React中怎么引用sass或less?
  9. ecshop flow.php goods_number,修复ECSHOP一重要BUG,当商品设置数量优惠时,加入不同属性的商品数量优惠判断错误...
  10. Python绘制酷炫的弦图
  11. 蠕虫病毒与一般计算机病毒的区别,蠕虫和病毒的区别是什么啊!
  12. 【鸿蒙】鸿蒙App应用-《记账软件》开发步骤
  13. js 如何计算当年清明节日期
  14. 威斯康星大学计算机科学教授,UW机器学习和数据科学活动吸引了国际知名的计算机科学家...
  15. rar怎么用计算机打开,解答电脑rar文件怎么打开
  16. 【贪玩巴斯】数据仓库与数据挖掘(五)——「数据仓库项目的设计过程和开发团队介绍」2021-10-26
  17. 生命已经这么短,为什么还不追求自己真正想要的
  18. Image.Save 方法
  19. 哪款蓝牙耳机吃鸡没延迟?游戏蓝牙耳机推荐
  20. Android权限说明

热门文章

  1. Shell知识点(一)基本语法
  2. Java尚硅谷基础笔记-day4数组-数组常见算法
  3. 关于环境变量的理解,maven有没有必要配置MAVEN_HOME或M2_HOME,tomcat一定要设置JAVA_HOME环境变量吗
  4. GSM-GPRS-WCDMA-LTE-5g 的总结
  5. 对象存储3:对象存储的原理、构造和详解
  6. codevs1034
  7. 2017全球ROI Top25游戏广告平台排行榜
  8. 常见的python连接数据库包
  9. mysql计算年龄_MySQL根据出生日期计算年龄的三种方法比较
  10. C++中的new和delete运算符(内存管理)