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 px

import 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().values
    summary_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.mfbz.cn/a/781665.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

排序格式排序格式

排序格式排序格式

期末成绩老师怎么发?

期末考试的钟声终于敲响,学生们紧张而期待地等待着成绩的揭晓。而作为老师,我们面临的不仅仅是成绩的评判,还有一项看似简单却极其繁琐的任务——将成绩单一一私信给每位学生的家长。在成绩公布的那一刻,我们不仅要确保每一份成绩…

Java编程:解决实际问题的高效方法

🎀🎀引言 👍👍点关注编程梦想家(大学生版)-CSDN博客 不迷路❤❤ Java是一种广泛使用的编程语言,它不仅适用于企业级应用开发,还能高效解决各种实际问题。从数学问题到工程问题&…

WEB自动化框架封装MySQL连接及sql断言教程

为了在Web自动化测试中连接MySQL数据库并进行SQL断言,您可以按照以下步骤: 安装MySQL Connector/Python驱动程序,并导入它。 使用Connector/Python创建一个连接对象,指定所需的主机名、用户名、密码和数据库名。 创建一个游标对…

论文研读|AI生成图像检测发展历程及研究现状

前言:本篇博客系统性梳理AI生成图像检测的研究工作。 「人工智能生成图像检测」研究及发展现状介绍 参考资料 https://fdmas.github.io/AIGCDetect/针对AIGC检测的鲁棒性测试——常见攻击手段汇总论文研读|以真实图像为参考依据的AIGC检测论文研读&…

【TB作品】51单片机 Proteus仿真 基于单片机的LCD12864万年历及温度监测系统设计

实验报告:基于单片机的LCD12864万年历及温度监测系统设计 背景介绍 本实验旨在设计并实现一个基于STC89C52单片机的LCD12864显示的万年历系统,同时集成温度传感器以实现温度监测功能。系统具备整点报时和闹钟功能,通过蜂鸣器进行提示。该设…

【2024_CUMCM】时间序列算法ARMA

目录 2023-c-问题二 问题分析 介绍 单位根检验 白噪声检验 自相关和偏自相关图 利用信息准则定阶 构建AMIMA模型 D-W检验 预测 代码 2023-c-问题二 问题分析 ARMA适合多个领域的时间序列分析,不同时间的定价策略属于这类问题。 介绍 ARMA模型&…

PingCAP 成为全球数据库管理系统市场增速最快的厂商

近日,Gartner 发布的《Market Share Analysis: Database Management Systems, Worldwide, 2023》(2024 年 6 月)报告显示:“2023 年全球数据库管理系统(DBMS)市场的增长率为 13.4%,略低于去年的…

我国网络安全领域有哪些法律法规?主要内容是什么?

1. 背景介绍 网络信息安全方面的法规在全球范围内都有相应的立法,我们主要的立法有《网络安全法》、《密码法》、《数据安全法》以及《个人信息保护法》。当前也有一些相关的条例和管理办法,接下来就为大家一一介绍。 2. 法规介绍 在中国,…

博客搭建-图床篇

我们的博客难免少不了图片,图片管理是一个不小的难题。如果我们将图片全部放到我们自己的服务器上,那么带宽就基本上会被图片所占满了,这会导致网站加载很慢(特别是图片加载很慢)。 ‍ 什么是图床 为了解决图片的问…

Python28-7.5 降维算法之t-分布邻域嵌入t-SNE

t-分布邻域嵌入(t-distributed Stochastic Neighbor Embedding,t-SNE)是一种用于数据降维和可视化的机器学习算法,尤其适用于高维数据的降维。t-SNE通过将高维数据嵌入到低维空间(通常是二维或三维)中&…

大数据之路 读书笔记 Day4 数据同步

回顾: Day 3 总结了无限客户端的日志采集 大数据之路 读书笔记 Day 3Day 2总结了浏览器端的日志采集 大数据之路 读书笔记 Day 2 数据同步 阿里数据体系中的数据同步,主要指的是在不同的数据存储系统之间进行数据的传输与更新,以保证数据的一…

人工智能系列-Python面向对象编程

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 面向对象编程和面向过程编程 在使用计算机语言进行代码编写时,常见的两种思路是面向对象编程和面向过程编程。 面向过程:根据业务逻辑从上到下写代码。…

GDP播放器 驱动视频播放器 PHP 系统源码 v4.4.3

最重要的是我们自己开发了源代码,因此无论您在使用此工具时遇到什么问题,我们都会快速解决。这个版本演示 分别支持PHP7.4/8.1/8.2三个版本 演示地址

大华DSS user_toLoginPage.action命令执行漏洞

免责声明 本文章仅做网络安全技术研究使用!严禁用于非法犯罪行为,请严格遵守国家法律法规;请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。使用本文所提供的信息或工具即视为同意本免责声明&…

华为云简介

前言 华为云是华为的云服务品牌,将华为30多年在ICT领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,赋能应用、使能数据、做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心…

µCOS-III 任务同步机制-任务信号量

1. 什么是任务信号量 任务信号量是一种用于任务间同步和通信的计数器,通常用于解决任务间的竞争条件和资源共享问题。在C/OS-III中,任务信号量提供了二进制信号量和计数信号量两种类型: 二进制信号量:只能取值0或1,适…

昇思12天

FCN图像语义分割 1. 主题和背景 FCN是由UC Berkeley的Jonathan Long等人于2015年提出的,用于实现图像的像素级预测。 2. 语义分割的定义和重要性 语义分割是图像处理和机器视觉中的关键技术,旨在对图像中的每个像素进行分类。它在很多领域有重要应用…

ImportError: DLL load failed while importing _imaging: 操作系统无法运行 %1

解决方案: (1)搜索打开Anaconda Prompt控制台,进入到自己要安装的环境下面去,卸载Pillow:pip uninstall Pillow 没有安装Pillow的就不用卸载,直接安装, (2)然后再安装&a…