【数据可视化】1991-2021年各国的失业数据集可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。
目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。


一、引言

失业率是衡量一个国家或地区经济健康状况的重要指标。高失业率通常反映出经济不景气、劳动力市场供需失衡等问题。本分析基于过去31年各国的失业率数据集,旨在通过可视化手段揭示失业率的变化趋势及其潜在影响因素。

二、数据集介绍

该数据集包含过去31年(1991-2021)各国的失业率数据,共33个特征,涵盖每年的失业率以及国家名称和代码:

  • Country Name:国家名称
  • Country Code:国家代码
  • 1991-2021:每年的失业率(%)

三、技术工具

  • Python版本: 3.9
  • 代码编辑器: Jupyter Notebook
  • 数据处理库: pandas, numpy
  • 可视化库: matplotlib

四、导入数据与预处理

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt
from collections import Counter

# 导入数据
df = pd.read_csv('unemployment_data.csv')

# 查看数据大小
print("数据大小:", df.shape)

# 查看数据基本信息
print("\n数据基本信息:")
print(df.info())
print("\n数据描述性统计:")
print(df.describe())

# 统计缺失值
print("\n缺失值统计:")
print(df.isnull().sum())

# 统计重复值
print("\n重复值数量:", df.duplicated().sum())

五、单变量分析

5.1 失业率分布

ini 复制代码
plt.figure(figsize=(12, 6))
# 选择2021年的失业率数据进行分布分析
plt.hist(df['2021'].dropna(), bins=30, color='skyblue', edgecolor='black')
plt.title('2021年失业率分布', fontsize=14, fontweight='bold')
plt.xlabel('失业率 (%)', fontsize=12)
plt.ylabel('国家数量', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

5.2 失业率随时间的变化趋势

ini 复制代码
plt.figure(figsize=(12, 6))
years = df.columns[2:]
mean_unemployment = df[years].mean()

plt.plot(years, mean_unemployment, marker='o', color='blue')
plt.title('全球平均失业率变化趋势(1991-2021)', fontsize=14, fontweight='bold')
plt.xlabel('年份', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

六、多变量分析

6.1 不同国家失业率比较

ini 复制代码
plt.figure(figsize=(15, 8))
# 选择2021年失业率最高的10个国家
top_10_unemployment = df.sort_values(by='2021', ascending=False).head(10)
plt.bar(top_10_unemployment['Country Name'], top_10_unemployment['2021'], color='lightgreen')
plt.title('2021年失业率最高的10个国家', fontsize=14, fontweight='bold')
plt.xlabel('国家', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.2 失业率与经济增长的关系

ini 复制代码
# 假设我们有一个经济增长率数据框(growth_df),结构与失业数据框类似
# 这里使用示例数据代替实际数据
import numpy as np

# 生成示例经济增长率数据
np.random.seed(42)
growth_df = df.copy()
growth_years = growth_df.columns[2:]
for year in growth_years:
    growth_df[year] = np.random.uniform(-5, 10, len(growth_df))

plt.figure(figsize=(12, 6))
correlation = df['2021'].corr(growth_df['2021'])
plt.scatter(df['2021'], growth_df['2021'], alpha=0.5, color='purple')
plt.title(f'2021年失业率与经济增长率的关系 (相关性: {correlation:.2f})', fontsize=14, fontweight='bold')
plt.xlabel('失业率 (%)', fontsize=12)
plt.ylabel('经济增长率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.3 不同时期失业率的比较

ini 复制代码
plt.figure(figsize=(12, 6))
years_to_compare = ['1991', '2001', '2011', '2021']
df_melted = pd.melt(df, id_vars=['Country Name', 'Country Code'], value_vars=years_to_compare, var_name='Year', value_name='Unemployment Rate')
plt.boxplot([df_melted[df_melted['Year'] == year]['Unemployment Rate'].dropna() for year in years_to_compare], labels=years_to_compare)
plt.title('不同年份失业率比较', fontsize=14, fontweight='bold')
plt.xlabel('年份', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.4 失业率的区域差异

ini 复制代码
plt.figure(figsize=(12, 6))
# 假设我们有一个区域数据框(region_df),包含国家和对应的区域信息
# 这里使用示例数据代替实际数据
region_df = pd.DataFrame({
    'Country Name': df['Country Name'],
    'Region': np.random.choice(['北美', '南美', '欧洲', '亚洲', '非洲', '大洋洲'], size=len(df))
})

df_with_region = pd.merge(df, region_df, on='Country Name')
regions = df_with_region['Region'].unique()

plt.boxplot([df_with_region[df_with_region['Region'] == region]['2021'].dropna() for region in regions], labels=regions)
plt.title('不同区域失业率比较', fontsize=14, fontweight='bold')
plt.xlabel('区域', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.5 失业率的时间序列分析(单个国家)

ini 复制代码
plt.figure(figsize=(12, 6))
# 选择一个国家(例如,美国)进行时间序列分析
usa_data = df[df['Country Name'] == 'United States']
years = df.columns[2:]
plt.plot(years, usa_data.iloc[0, 2:], marker='o', color='blue')
plt.title('美国失业率变化趋势(1991-2021)', fontsize=14, fontweight='bold')
plt.xlabel('年份', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.6 失业率与人口规模的关系

ini 复制代码
# 假设我们有一个人口数据框(population_df),结构与失业数据框类似
# 这里使用示例数据代替实际数据
population_df = df.copy()
for year in years:
    population_df[year] = np.random.uniform(1e6, 1e9, len(population_df))

plt.figure(figsize=(12, 6))
plt.scatter(population_df['2021'], df['2021'], alpha=0.5, color='orange')
plt.title('2021年失业率与人口规模的关系', fontsize=14, fontweight='bold')
plt.xlabel('人口规模', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.7 失业率与教育水平的关系

ini 复制代码
# 假设我们有一个教育水平数据框(education_df),结构与失业数据框类似
# 这里使用示例数据代替实际数据
education_df = df.copy()
for year in years:
    education_df[year] = np.random.uniform(0, 100, len(education_df))

plt.figure(figsize=(12, 6))
plt.scatter(education_df['2021'], df['2021'], alpha=0.5, color='gray')
plt.title('2021年失业率与教育水平的关系', fontsize=14, fontweight='bold')
plt.xlabel('教育水平 (%)', fontsize=12)
plt.ylabel('失业率 (%)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

6.8 失业率变化的热力图

ini 复制代码
plt.figure(figsize=(12, 8))
correlation_matrix = df[years].corr()
plt.imshow(correlation_matrix, cmap='coolwarm', interpolation='nearest')
plt.colorbar()
plt.title('失业率年份间相关性热力图', fontsize=14, fontweight='bold')
plt.xlabel('年份', fontsize=12)
plt.ylabel('年份', fontsize=12)
plt.xticks(range(len(years)), years, rotation=90)
plt.yticks(range(len(years)), years)
plt.tight_layout()
plt.show()

6.9 失业率的词云图

ini 复制代码
from wordcloud import WordCloud
from collections import Counter

plt.figure(figsize=(10, 5))
unemployment_text = ' '.join(df['Country Name'].unique().tolist())
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(unemployment_text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.title('失业率涉及国家词云图', fontsize=14, fontweight='bold')
plt.axis('off')
plt.tight_layout()
plt.show()

6.10 多维度组合分析

ini 复制代码
fig, axes = plt.subplots(2, 2, figsize=(18, 12))

# 失业率分布
axes[0, 0].hist(df['2021'].dropna(), bins=30, color='skyblue', edgecolor='black')
axes[0, 0].set_title('2021年失业率分布', fontsize=12, fontweight='bold')
axes[0, 0].set_xlabel('失业率 (%)', fontsize=10)
axes[0, 0].set_ylabel('国家数量', fontsize=10)
axes[0, 0].grid(linestyle='--', alpha=0.7)

# 失业率变化趋势
axes[0, 1].plot(years, mean_unemployment, marker='o', color='blue')
axes[0, 1].set_title('全球平均失业率变化趋势', fontsize=12, fontweight='bold')
axes[0, 1].set_xlabel('年份', fontsize=10)
axes[0, 1].set_ylabel('失业率 (%)', fontsize=10)
axes[0, 1].grid(linestyle='--', alpha=0.7)

# 不同国家失业率比较
axes[1, 0].bar(top_10_unemployment['Country Name'], top_10_unemployment['2021'], color='lightgreen')
axes[1, 0].set_title('2021年失业率最高的10个国家', fontsize=12, fontweight='bold')
axes[1, 0].set_xlabel('国家', fontsize=10)
axes[1, 0].set_ylabel('失业率 (%)', fontsize=10)
axes[1, 0].grid(linestyle='--', alpha=0.7)

# 失业率与经济增长的关系
axes[1, 1].scatter(df['2021'], growth_df['2021'], alpha=0.5, color='purple')
axes[1, 1].set_title('失业率与经济增长率的关系', fontsize=12, fontweight='bold')
axes[1, 1].set_xlabel('失业率 (%)', fontsize=10)
axes[1, 1].set_ylabel('经济增长率 (%)', fontsize=10)
axes[1, 1].grid(linestyle='--', alpha=0.7)

plt.tight_layout()
plt.show()

七、总结

通过对失业数据集的可视化分析,我们得出了以下关键洞察:

  • 失业率分布:2021年全球各国失业率分布不均,部分国家失业率显著高于全球平均水平。
  • 失业率变化趋势:过去31年间,全球平均失业率经历了一定的波动,反映出全球经济环境的复杂性。
  • 区域差异:不同区域的失业率存在显著差异,某些区域的失业问题更为严重。
  • 单个国家分析:以美国为例,其失业率在过去31年间呈现出一定的周期性变化。
  • 相关性分析:失业率与经济增长、人口规模、教育水平等因素存在一定的相关性。

这些发现为政策制定者提供了宝贵的参考,帮助他们更好地理解失业问题的复杂性,并制定针对性的就业促进政策。希望通过数据的深入分析,能够在全球范围内推动更充分和更高质量的就业。


如果您在人工智能领域遇到技术难题,或是需要专业支持,无论是技术咨询、项目开发还是个性化解决方案,我都可以为您提供专业服务,如有需要可站内私信或添加下方VX名片(ID:xf982831907)

期待与您一起交流,共同探索AI的更多可能!

<--微信名片-->

相关推荐
杨超越luckly29 分钟前
ArcGISPro应用指南:使用ArcGIS Pro创建与优化H3六边形网格
arcgis·信息可视化·数据可视化·shp·h3网格
云天徽上16 小时前
【数据可视化】3000名烟酒成瘾者数据深度可视化分析(Python + PyEcharts 炫酷暗黑风)
数据可视化
云天徽上2 天前
【数据可视化】2024-25 土耳其超级联赛薪资全景图:Python + PyEcharts 多维可视化实战
数据可视化
云天徽上2 天前
【数据可视化】2025 年欧足联排名数据可视化分析:Python + PyEcharts 多维可视化实战
数据可视化
云天徽上2 天前
【数据可视化】2023 年 Spotify 歌曲数据集可视化分析
数据可视化
爱分享的飘哥3 天前
第十九篇 自动化报表生成:Python一键生成可视化Excel图表与专业PDF报告,老板看了都点赞!
自动化·办公自动化·数据可视化·excel自动化·python报表·pdf报告
银之夏雪丶3 天前
AntV G6 基础元素详解(React版)
前端·javascript·数据可视化
大数据魔法师4 天前
Matplotlib(一)- 数据可视化与Matplotlib
matplotlib·数据可视化