前言:
随着社会的不断发展和变迁,人们对于各种社会问题的关注也在不断扩大。在这个信息爆炸的时代,数据分析成为了深入理解和解决社会问题的有力工具之一。在这篇博客中,我们将聚焦于一个备受关注的话题——suicide rate,并通过对 2023 年全球各国的suicide rate进行探索性数据分析(Exploratory Data Analysis, EDA),来了解这一问题在不同国家的表现。
suicide rate不仅是一个深刻的社会问题,也反映了一个国家在心理健康、社会福祉等方面的表现。通过对suicide rate进行综合分析,我们有望更全面地认识到这个问题的复杂性,为制定相应的预防和支持措施提供更科学、更精准的依据。
按性别和国家划分的suicide rate(年龄标准化,每 10 万人,世界卫生组织,2023 年)
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')
生成了一个数据框,包含了数据框中每个列的一些摘要统计信息。具体来说:
通过.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()
男性自杀比例高
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()
df[1:].head(15).style.background_gradient(cmap='Reds')
自杀率最高的是Lithuania.
top15_by_change = df[1:16].sort_values(by='Change%', ascending=False)
top15_by_change.head(15).style.background_gradient(cmap='Reds')
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()
df.head()
df = pd.merge(df, iso_map, on='Country', how='left')
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函数,创建了一个世界地图,用颜色表示不同国家的自杀率。让我为你解释一下:
通过对 2023 年世界各国suicide rate的深入分析,我们不仅仅是在观察数字背后的故事,更是在寻找解决问题的线索。suicide rate问题是一个多维度的挑战,需要社会各界的共同努力来制定有效的预防和干预策略。通过数据分析,我们能够更清晰地看到suicide rate背后的社会、经济、文化等方面的影响因素,这为我们提供了更有针对性的解决方案的可能性。
希望这次的数据分析能够引起更多人对suicide 问题的重视,激发社会对心理健康的更深层关注。只有通过共同的关心和努力,我们才能够建设一个更加健康、关爱的社会。