【数据可视化】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的更多可能!

<--微信名片-->

相关推荐
杨超越luckly3 小时前
基于 Overpass API 的城市电网基础设施与 POI 提取与可视化
python·数据可视化·openstreetmap·电力数据·overpass api
用户59625857360612 小时前
【征文计划】当AI Glasses成为你的“植物百科全书”
数据可视化
HsuHeinrich3 天前
利用面积图探索历史温度的变化趋势
python·数据可视化
CodeCraft Studio6 天前
空间天气监测,TeeChart助力实现太阳活动数据的可视化分析
信息可视化·数据挖掘·数据分析·数据可视化·teechart·科研图表·图表库
FIT2CLOUD飞致云6 天前
安全漏洞修复,API数据源支持添加时间戳参数,DataEase开源BI工具v2.10.17 LTS版本发布
开源·数据可视化·dataease·bi·数据大屏
图扑可视化7 天前
图扑 HT 智慧汽车展示平台全自研技术方案
汽车·数据可视化·组态监控·汽车展示
Highcharts.js8 天前
Highcharts开发解析:从数据可视化到用户体验的全面指南
信息可视化·前端框架·数据可视化·ux·highcharts·交互图表
数字冰雹9 天前
为城市治理装上“数字引擎”
中间件·数据可视化
Highcharts.js9 天前
学习 Highcharts 可视化开发的有效途径
学习·数据可视化·highcharts·图表开发·可视化开发
易知微EasyV数据可视化10 天前
数字孪生文旅:以某地智慧乡村数字孪生驾驶舱建设为例
经验分享·数字孪生·数据可视化·智慧文旅