EDA 2023 年世界国家suicide rate排名

文章目录

  • 前言:
  • 关于数据集
  • 导入模块
  • 导入数据
  • 数据预处理
  • 探索性数据分析
    • 按性别划分的自杀率 [箱线图]
    • 相关矩阵热图
    • 自杀率最高的 15 个国家
    • 变化百分比最高的 15 个国家/地区
    • 2023 年世界地图上自杀率的国家
  • 结尾:

前言:

随着社会的不断发展和变迁,人们对于各种社会问题的关注也在不断扩大。在这个信息爆炸的时代,数据分析成为了深入理解和解决社会问题的有力工具之一。在这篇博客中,我们将聚焦于一个备受关注的话题——suicide rate,并通过对 2023 年全球各国的suicide rate进行探索性数据分析(Exploratory Data Analysis, EDA),来了解这一问题在不同国家的表现。

suicide rate不仅是一个深刻的社会问题,也反映了一个国家在心理健康、社会福祉等方面的表现。通过对suicide rate进行综合分析,我们有望更全面地认识到这个问题的复杂性,为制定相应的预防和支持措施提供更科学、更精准的依据。

关于数据集

按性别和国家划分的suicide rate(年龄标准化,每 10 万人,世界卫生组织,2023 年)

  • Country - 地区;
  • All - 男 + 女;
  • Male - 仅限男性;
  • Female - 仅限女性;
  • M/F - 女性与男性的比例;
  • 2000 - 全部在 2000 年;
  • Change% - 从 2000 年到 2023 年的百分比变化。

导入模块

  1. import numpy as np: 引入NumPy库,通常用于进行数值计算和数组操作。

  2. import pandas as pd: 引入Pandas库,用于数据操作和分析。常用的数据结构是DataFrame。

  3. import matplotlib.pyplot as plt: 引入Matplotlib库,用于绘制静态图表。

  4. %matplotlib inline: 这是一个Jupyter Notebook的魔术命令,用于在Notebook中直接显示Matplotlib图表。

  5. import seaborn as sns: 引入Seaborn库,用于创建更美观的统计图表。

  6. sns.set_theme(style=‘whitegrid’, palette=‘viridis’): 设置Seaborn的主题样式和调色板。

  7. import plotly.express as px: 引入Plotly Express库,用于创建交互式图表。

  8. import warnings 和 warnings.filterwarnings(‘ignore’): 用于忽略警告信息,可以使输出更整洁。

  9. import os 和 for dirname, _, filenames in os.walk(‘/kaggle/input’): 用于遍历指定路径下的文件。

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set_theme(style='whitegrid', palette='viridis')
import plotly.express as pximport warnings
warnings.filterwarnings('ignore')import os
for dirname, _, filenames in os.walk('/kaggle/input'):for filename in filenames:print(os.path.join(dirname, filename))

导入数据

df = pd.read_csv('/kaggle/input/world-countries-rankings-by-suicide-rate-2023/world_suicide_rate_2023.csv')
iso_map = pd.read_csv('/kaggle/input/country-mapping-iso-continent-region/continents2.csv')
df.head(10)

在这里插入图片描述

数据预处理

df.describe().T.style.background_gradient(cmap='Reds')

使用Pandas中DataFrame的describe()方法来获取数据集的基本统计信息,接着使用了.T进行转置,最后应用了样式,通过style.background_gradient(cmap=‘Reds’)实现了基于渐变色的背景。

这段代码的作用是创建一个渐变色的表格,以更直观地展示数据集的统计信息。颜色深浅表示数值的大小,通常在数据集较大时,这样的可视化方式有助于快速识别数据分布和趋势。
在这里插入图片描述

def summary(df):summary_df = pd.DataFrame(df.dtypes, columns=['dtypes'])summary_df['count'] = df.count().values summary_df['unique'] = df.nunique().valuessummary_df['missing#'] = df.isna().sum()summary_df['missing%'] = df.isna().sum() / len(df)return summary_df
summary(df).style.background_gradient(cmap='Reds')

生成了一个数据框,包含了数据框中每个列的一些摘要统计信息。具体来说:

  • summary_df[‘dtypes’]: 列出每列的数据类型。
  • summary_df[‘count’]: 计算每列的非缺失值数量。
  • summary_df[‘unique’]: 计算每列的唯一值数量。
  • summary_df[‘missing#’]: 计算每列的缺失值数量。
  • summary_df[‘missing%’]: 计算每列缺失值在总数中的百分比。

通过.style.background_gradient(cmap=‘Reds’)为生成的摘要数据框应用了渐变色的样式,以提供更直观的可视化。
在这里插入图片描述
从返回结果可以得出,该数据中没有缺失值。

探索性数据分析

按性别划分的自杀率 [箱线图]

plt.figure(figsize=(8,6))
sns.boxplot(data=df[['Female', 'Male']])
plt.title('Box Plot: Suicide Rates by Gender')
plt.ylabel('Suicide Rate')
plt.tight_layout()
plt.show()
  • plt.figure(figsize=(8,6)): 设置图表的大小为8x6英寸。

  • sns.boxplot(data=df[[‘Female’, ‘Male’]]): 使用Seaborn的boxplot函数绘制箱线图,展示了"Female"和"Male"两列的数据分布情况。

  • plt.title(‘Box Plot: Suicide Rates by Gender’): 设置图表的标题。

  • plt.ylabel(‘Suicide Rate’): 设置y轴的标签。

  • plt.tight_layout(): 调整布局,确保图表不会被截断。

  • plt.show(): 显示图表。
    在这里插入图片描述
    男性自杀比例高

相关矩阵热图

num_cols = df.select_dtypes(include=['float64', 'int64']).columns.to_list()
ndf = df[num_cols].corr()plt.figure(figsize=(8,6))
mask = np.triu(np.ones_like(ndf, dtype=bool))
sns.heatmap(ndf, annot=True, cmap='viridis', linewidths=.5, mask=mask)
plt.title('Heatmap of Correlation Matrix')
plt.tight_layout()
plt.show()
  • num_cols = df.select_dtypes(include=[‘float64’, ‘int64’]).columns.to_list(): 选择数据集中的数值型列,将列名存储在num_cols列表中。

  • ndf = df[num_cols].corr(): 创建一个包含数值型列之间相关系数的相关性矩阵。

  • plt.figure(figsize=(8,6)): 设置图表的大小为8x6英寸。

  • mask = np.triu(np.ones_like(ndf, dtype=bool)): 创建一个上三角形掩码,以隐藏相关性矩阵的下半部分,避免重复显示。

  • sns.heatmap(ndf, annot=True, cmap=‘viridis’, linewidths=.5, mask=mask): 使用Seaborn的heatmap函数创建热力图,颜色深浅表示相关性的强弱,同时在方格中显示相关系数的数值。

  • plt.title(‘Heatmap of Correlation Matrix’): 设置图表标题。

  • plt.tight_layout(): 调整布局,确保图表不会被截断。

  • plt.show(): 显示图表。
    在这里插入图片描述

自杀率最高的 15 个国家

df[1:].head(15).style.background_gradient(cmap='Reds')

在这里插入图片描述
自杀率最高的是Lithuania.

变化百分比最高的 15 个国家/地区

top15_by_change = df[1:16].sort_values(by='Change%', ascending=False)
top15_by_change.head(15).style.background_gradient(cmap='Reds')

在这里插入图片描述

2023 年世界地图上自杀率的国家

df = df[1:]
iso_map = iso_map[['name', 'alpha-3']]
iso_map.rename(columns = {'name': 'Country', 'alpha-3': 'ISO_alpha'}, inplace=True)
iso_map['Country'] = iso_map['Country'].str.lower()
df['Country'] = df['Country'].str.lower()
  • iso_map = iso_map[[‘name’, ‘alpha-3’]]: 选择了iso_map数据框中的’name’和’alpha-3’两列。

  • iso_map.rename(columns={‘name’: ‘Country’, ‘alpha-3’: ‘ISO_alpha’}, inplace=True): 重命名了’iso_map’数据框的两列,将’name’列重命名为’Country’,将’alpha-3’列重命名为’ISO_alpha’。inplace=True表示直接在原始数据框上进行修改。

  • iso_map[‘Country’] = iso_map[‘Country’].str.lower(): 将’Country’列中的所有字符转换为小写字母,这样可以确保不同数据框中的国家名字的大小写一致。

  • df[‘Country’] = df[‘Country’].str.lower(): 同样,将’df’数据框中的’Country’列中的所有字符转换为小写字母。

df.head()

在这里插入图片描述

df = pd.merge(df, iso_map, on='Country', how='left')
  • pd.merge(df, iso_map, on=‘Country’, how=‘left’): 这行代码将df和iso_map两个数据框按照’Country’列进行左连接,即保留df中所有的行,并将iso_map中匹配的行合并进来。连接的方式由how参数指定,这里使用的是左连接(how=‘left’),表示以df为主表,按照’Country’列将两个数据框合并。

  • 结果会生成一个新的数据框,包含了df中的所有列以及iso_map中的’ISO_alpha’列。on='Country’表示连接的键是’Country’列。

df.head(10)

在这里插入图片描述

xmap = px.choropleth(df, locations='ISO_alpha', color='All', scope='world', title='World Countries by Suicide Rates 2023',color_continuous_scale='viridis', hover_name='Country')
xmap.show()

这里使用了Plotly Express库中的choropleth函数,创建了一个世界地图,用颜色表示不同国家的自杀率。让我为你解释一下:

  • df: 指定要使用的数据框。
  • locations=‘ISO_alpha’: 指定地理位置的列,这里是ISO_alpha,用于与地图上的国家/地区相匹配。
  • color=‘All’: 指定用于着色的列,这里是’Suicide Rates’的总和(假设 ‘All’ 列在数据框中)。
  • scope=‘world’: 指定地图的范围,这里是全球。
  • title=‘World Countries by Suicide Rates 2023’: 设置地图的标题。
  • color_continuous_scale=‘viridis’: 设置颜色的渐变色带。
  • hover_name=‘Country’: 当鼠标悬停在地图上的特定国家时,显示国家名称。
  • xmap.show(): 显示生成的地图。
    在这里插入图片描述

结尾:

通过对 2023 年世界各国suicide rate的深入分析,我们不仅仅是在观察数字背后的故事,更是在寻找解决问题的线索。suicide rate问题是一个多维度的挑战,需要社会各界的共同努力来制定有效的预防和干预策略。通过数据分析,我们能够更清晰地看到suicide rate背后的社会、经济、文化等方面的影响因素,这为我们提供了更有针对性的解决方案的可能性。

希望这次的数据分析能够引起更多人对suicide 问题的重视,激发社会对心理健康的更深层关注。只有通过共同的关心和努力,我们才能够建设一个更加健康、关爱的社会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘:源代码防泄密的终极秘籍

在当今信息科技高度发达的时代,源代码作为企业最核心的资产之一,其安全性不言而喻。源代码的泄露可能导致企业技术机密被竞争对手获取,进而威胁到企业的市场竞争力和长远发展。因此,源代码防泄密成为了企业信息安全工作的重中之重…

前端JS特效第24波:jQuery轻量级响应式幻灯片插件EasyFader

jQuery轻量级响应式幻灯片插件EasyFader&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>jQuery轻量级响应式幻灯片插件E…

C-10 凸包

凸包 数学定义 平面的一个子集S被称为是凸的&#xff0c;当且仅当对于任意两点A&#xff0c;B属于S&#xff0c;线段PS都完全属于S过于基础就不详细介绍了 凸包的计算 github上找到了别人的代码&#xff0c;用4种方式实现了凸包的计算&#xff0c;把他放在这里链接地址htt…

redis运维:sentinel模式如何查看所有从节点

1. 连接到sentinel redis-cli -h sentinel_host -p sentinel_port如&#xff1a; redis-cli -h {域名} -p 200182. 发现Redis主服务器 连接到哨兵后&#xff0c;我们可以使用SENTINEL get-master-addr-by-name命令来获取当前的Redis主服务器的地址。 SENTINEL get-master-a…

Python骨架肌体运动学数学模型

&#x1f3af;要点 &#x1f3af;运动学矢量计算 | &#x1f3af;跳远的运动学计算 | &#x1f3af;关节肢体运动最小加加速度模型 | &#x1f3af;膝关节和踝关节角度二维运动学计算 | &#x1f3af;上下肢体关节连接运动链数学模型 | &#x1f3af;刚体连接点速度加速度计算…

[python]Markdown图片引用格式批处理桌面应用程序

需求 使用python编写一个exe&#xff0c;实现批量修改图片引用&#xff0c;将修改后的文件生成为 文件名_blog.md。有一个编辑框&#xff0c;允许接收拖动过来md文件&#xff0c;拖入文件时获取文件路径&#xff0c;有一个编辑框编辑修改后的文件的输出路径&#xff0c;用户拖入…

Springboot实战:AI大模型+亮数据代理助力短视频时代

目录 前言1.如何入门亮数据1.1、注册登录1.2、注册账号1.3、登录1.4、购买静态住宅代理1.5、展示购买的代理 2. 使用Springboot、AI大模型构建系统2.1 使用Springboot、AI大模型构建爬虫2.2、在Springboot项目添加工具 3、编写代码&#xff0c;爬取视频素材3.1、代码里使用代理…

Redis核心问题总结(一)

1、为什么要使用Redis做缓存 缓存的好处 使用缓存的目的就是提升读写性能。而实际业务场景下&#xff0c;更多的是为了提升读性能&#xff0c;带来更好的性 能&#xff0c;带来更高的并发量。Redis 的读写性能比 Mysql 好的多&#xff0c;我们就可以把 Mysql 中的热点数据缓 …

提升结构安全性:应变计在现代建筑中的应用

在现代建筑领域&#xff0c;随着工程技术的不断进步&#xff0c;对结构安全性的要求也日益提高。作为一种关键的工程仪器仪表&#xff0c;应变计在提升结构安全性方面发挥着不可替代的作用。本文将深入探讨应变计在现代建筑中的应用&#xff0c;以及它如何助力工程师们实时监测…

权力之望怎么注册账号创建角色 权利之网角色账号注册教程

权力之望是一款全新的大型MMORPG游戏&#xff0c;拥有9把独特武器和56种职业组合&#xff0c;并搭配了超炫酷的战斗画面&#xff0c;全程采用低俯视角游戏&#xff0c;让玩家能体验到更强的操作感和爽快感。这款游戏主打高养成自由度玩家可以自由更换武器进行战斗&#xff0c;还…

前端面试题30(闭包和作用域链的关系)

闭包和作用域链在JavaScript中是紧密相关的两个概念&#xff0c;理解它们之间的关系对于深入掌握JavaScript的执行机制至关重要。 作用域链 作用域链是一个链接列表&#xff0c;它包含了当前执行上下文的所有父级执行上下文的变量对象。每当函数被调用时&#xff0c;JavaScri…

零基础也能成为产品册设计高手

​在当今数字化时代&#xff0c;产品册设计已成为企业营销的重要手段之一。过去&#xff0c;人们认为只有专业人士才能设计出精美的产品册&#xff0c;然而&#xff0c;随着设计工具的普及和在线学习资源的丰富&#xff0c;零基础的你也能成为产品册设计高手。本文将带你走进这…

MindsDB:一个利用企业数据构建 AI 的平台

MindsDB作为一个开源项目&#xff0c;它旨在将机器学习模型无缝集成到现有的数据库系统中&#xff0c;为用户提供实时的数据预测能力。这个项目的创新之处在于&#xff0c;它能够以简单、直观的方式让开发者和非技术人员都能够利用AI进行数据分析和预测。 它是根据企业数据库定…

航空航天单位保密网文件导出管理难点在哪里?如何解决?

航空航天单位的重要性不言而喻&#xff0c;它们在国家安全、科技进步、经济发展以及国际合作等多个领域都扮演着至关重要的角色。为了保护工作内容中的重要数据&#xff0c;遵守保密规定&#xff0c;对涉密人员、保密要害部门单位、涉密载体、涉密信息传输和涉密活动进行严格管…

glide加载mp4 源码堆栈调用核心代码分析

load 数据走的httpurlfetcher 的loaddata 从MultiLoader 调用而来 load到inputstream流后的处理 核心 图片是glide 首先创建解释器的时候 加了videodecoder 然后这里会从流中加载对应帧的图片保存在手机cache目录中 将这个file 作为bitmap传递 然后加载 private static final…

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片 1 目标效果视频 CamManager 2 CamManager读取本地文件时序 3 BD_Vision_Utility添加代码 3.0 导入链接库 BD_OperatorSets.dllSystem.Windows.Forms.dllOpencvSharp 3.1 导入VisionParam中创建的文件Util_FileO…

安防监控/视频汇聚平台EasyCVR设备录像回看请求播放时间和实际时间对不上,是什么原因?

安防监控EasyCVR视频汇聚平台可提供多协议&#xff08;RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK&#xff09;的设备接入、音视频采集、视频转码、处理、分发等服务&#xff0c;系统具备实时监控、云端录像、回看、告警、平台级联以及多视频流格式分发等视…

旅游计划定制小程序网页模板源码

手机在线旅游定制服务&#xff0c;定制旅游出行app小程序模板。包含&#xff1a;定制介绍、定制表单填写、我的订单等。 旅游计划定制小程序网页模板源码

swiftui中NavigationStack布局navigationBarTitleDisplayMode作用,以及内容顶部空白区域解决办法

写了一个小demo用于学习NavigationStack和toolbar/ToolbarItem知识&#xff0c;但是在写一个瀑布流布局的时候&#xff0c;设置了顶部的toolbar&#xff0c;然后内容区域的顶部出现了一大片空白区域&#xff0c;这样的效果并不是很美观很好看&#xff0c;所以就想着研究解决一下…

科普文:一文搞懂SpringBoot(狂神说Java)

1、Hello,World&#xff01; 1.1、SpringBoot简介 回顾什么是Spring Spring是一个开源框架&#xff0c;2003 年兴起的一个轻量级的Java 开发框架&#xff0c;作者&#xff1a;Rod Johnson 。 Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是…