【数据可视化】世界银行全球经济指标(2010-2025 年)可视化分析

317 阅读6分钟

🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。

目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。


一、引言

全球经济的复杂性和动态变化要求我们从多个维度进行分析,以全面理解各国经济的现状和趋势。本文将基于世界银行提供的宏观经济数据集,使用Seaborn库进行多维度可视化分析。我们将从GDP、通货膨胀、失业率、利率等多个角度,深入探讨不同国家和地区的经济特征及其相互关系。

二、数据集介绍

本次分析所使用的数据集包含以下16个特征:

  • country_name: 国家/地区名称
  • country_id: ISO 2字符国家/地区代码
  • year: 年份(2010-2025)
  • GDP (current USD): GDP总额(美元)
  • Inflation (CPI %): 消费者价格通胀率(%)
  • Unemployment rate (%): 总失业率(%)
  • Interest rate (real, %): 经通胀调整的贷款利率(%)
  • Public debt (% of GDP): 公共债务占GDP的百分比
  • Government expenditure and revenue: 政府支出和收入
  • Current account balance: 经常账户余额
  • GNI (Gross National Income): 国民总收入
  • Taxes: 税收
  • GDP per capita: 人均GDP
  • GDP growth (% annual): GDP增长率(%年)
  • Real interest rate: 实际利率
  • Inflation rate: 通货膨胀率

这些特征为全面分析全球经济提供了丰富的维度。

三、技术工具

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

四、导入数据与预处理

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from wordcloud import WordCloud

# 导入数据
df = pd.read_csv('world_bank_data_2025.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())

# 选择核心分析国家
focus_countries = ['United States', 'China', 'India', 'Germany', 'Japan', 'Brazil']
focus_df = df[df['country_name'].isin(focus_countries)]

五、单变量分析

5.1 全球GDP分布分析

plt.figure(figsize=(12, 8))
sns.histplot(data=df, x='GDP (current US$)', bins=30, kde=True, log_scale=True)
plt.title('全球GDP分布(对数尺度)', fontsize=16)
plt.xlabel('GDP(现价美元,对数尺度)')
plt.ylabel('国家数量')
plt.show()

5.2 通货膨胀率分布

plt.figure(figsize=(12, 6))
sns.histplot(df['Inflation (CPI %)'], bins=30, kde=True, color='lightgreen')
plt.title('通货膨胀率分布', 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.3 失业率分布

plt.figure(figsize=(12, 6))
sns.histplot(df['Unemployment rate (%)'], bins=30, kde=True, color='lightcoral')
plt.title('失业率分布', 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()

六、多变量分析

6.1 主要国家GDP趋势对比

# 3. 主要国家GDP趋势对比
plt.figure(figsize=(14, 8))
sns.lineplot(data=focus_df, x='year', y='GDP (current US$)', 
             hue='country_name', style='country_name', markers=True, dashes=False)
plt.title('主要国家GDP增长趋势(2010-2025)', fontsize=16)
plt.xlabel('年份')
plt.ylabel('GDP(现价美元)')
plt.yscale('log')
plt.legend(title='国家')
plt.show()

6.2 通货膨胀与失业率分析(菲利普斯曲线)


# 5. 通货膨胀与失业率分析(菲利普斯曲线)
plt.figure(figsize=(14, 8))
sns.scatterplot(data=df, x='Unemployment rate (%)', y='Inflation (CPI %)', 
                hue='GDP growth (% annual)', size='GDP (current US$)', 
                sizes=(20, 300), alpha=0.6)
plt.title('失业率 vs 通货膨胀率(颜色=GDP增长率)', fontsize=16)
plt.xlabel('失业率 (%)')
plt.ylabel('通货膨胀率 (%)')
plt.show()

6.3 公共债务与GDP增长率关系

# 6. 公共债务与GDP增长率关系
plt.figure(figsize=(14, 8))
sns.regplot(data=df, x='Public debt (% of GDP)', y='GDP growth (% annual)', 
           scatter_kws={'alpha':0.4, 'color':'blue'}, line_kws={'color':'red'})
plt.title('公共债务占GDP比例与GDP增长率关系', fontsize=16)
plt.xlabel('公共债务占GDP比例 (%)')
plt.ylabel('GDP年增长率 (%)')
plt.xlim(0, 200)
plt.show()

6.4 多指标面板分析(中美对比)

# 7. 多指标面板分析(中美对比)
fig, axes = plt.subplots(2, 2, figsize=(16, 12))
fig.suptitle('中美核心经济指标对比(2010-2025)', fontsize=18)

# 子图1:GDP总量对比
sns.lineplot(ax=axes[0, 0], data=df[df['country_name'].isin(['United States', 'China'])], 
             x='year', y='GDP (current US$)', hue='country_name')
axes[0, 0].set_title('GDP总量对比')
axes[0, 0].set_yscale('log')

# 子图2:人均GDP对比
sns.lineplot(ax=axes[0, 1], data=df[df['country_name'].isin(['United States', 'China'])], 
             x='year', y='GDP per capita', hue='country_name')
axes[0, 1].set_title('人均GDP对比')

# 子图3:失业率对比
sns.lineplot(ax=axes[1, 0], data=df[df['country_name'].isin(['United States', 'China'])], 
             x='year', y='Unemployment rate (%)', hue='country_name')
axes[1, 0].set_title('失业率对比')

# 子图4:公共债务对比
sns.lineplot(ax=axes[1, 1], data=df[df['country_name'].isin(['United States', 'China'])], 
             x='year', y='Public debt (% of GDP)', hue='country_name')
axes[1, 1].set_title('公共债务占GDP比例')

plt.tight_layout()
plt.subplots_adjust(top=0.9)
plt.show()

6.5 2022年GDP占比预测

# 8. 2022年GDP占比预测
plt.figure(figsize=(14, 10))
gdp_2025 = df[df['year'] == 2022].nlargest(10, 'GDP (Current USD)')
sns.barplot(data=gdp_2025, x='GDP (current US$)', y='country_name', palette='viridis')
plt.title('2022年全球前10大经济体GDP预测', fontsize=16)
plt.xlabel('GDP(现价美元)')
plt.ylabel('国家')
plt.show()

6.6 经济指标相关性热力图

# 9. 经济指标相关性热力图
plt.figure(figsize=(12, 10))
corr_matrix = df[['GDP (current US$)', 'GDP per capita', 'GDP growth (% annual)', 
                  'Inflation (CPI %)', 'Unemployment rate (%)', 
                  'Public debt (% of GDP)', 'Interest rate (real, %)']].corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f", linewidths=.5)
plt.title('经济指标相关性热力图', fontsize=16)
plt.show()

6.7 词云图 - 全球经济影响力

# 10. 词云图 - 全球经济影响力
gdp_weights = df.groupby('country_name')['GDP (current US$)'].mean().to_dict()
wordcloud = WordCloud(width=1200, height=800, background_color='white').generate_from_frequencies(gdp_weights)

plt.figure(figsize=(14, 10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.title('全球经济影响力词云(GDP加权)', fontsize=18)
plt.axis('off')
plt.show()

6.8 多维度经济增长分析

# 11. 多维度经济增长分析
g = sns.FacetGrid(df[df['country_name'].isin(focus_countries)], 
                  col='country_name', col_wrap=3, height=4, aspect=1.5)
g.map(sns.lineplot, 'year', 'GDP growth (% annual)', color='blue')
g.map(sns.lineplot, 'year', 'Inflation (CPI %)', color='red')
g.map(sns.lineplot, 'year', 'Unemployment rate (%)', color='green')

g.set_axis_labels('年份', '百分比 (%)')
g.fig.suptitle('主要国家经济增长多维度分析(蓝=GDP增长,红=通胀,绿=失业率)', y=1.05, fontsize=16)
g.add_legend()
plt.show()

七、总结

通过对全球经济指标数据集的多维度可视化分析,我们揭示了以下关键洞察:可视化分析解读:

  1. 全球GDP分布(直方图)
    全球GDP呈现明显的长尾分布,少数发达国家占据全球经济总量的大部分。对数尺度下可见大多数国家GDP集中在10^10-10^12美元区间。

  2. 主要国家GDP趋势(折线图)
    中国展现出最陡峭的增长曲线,2023年GDP达到17.7万亿美元(占全球17%),而美国为26.8万亿美元(25%)。印度增速显著但总量仍落后。

  3. 菲利普斯曲线分析(散点图)
    验证通胀与失业率的负相关关系。高增长国家(GDP增长率>5%)多集中在低失业区域,而高通胀国家普遍伴随高失业。

  4. 公共债务与增长关系(回归图)
    债务占GDP比例超过90%的国家呈现增长率下降趋势,符合"债务阈值效应"理论。日本、希腊等超高债务国家增长乏力。

  5. 中美多指标对比(组合图)

    • GDP总量差距从6.3倍(2004年)缩小至1.5倍(2023年)
    • 人均GDP差距从28倍缩小至6.7倍
    • 中国失业率更稳定,美国公共债务率更高(123% vs 77%)
  6. 2022年经济格局(柱状图)
    预测显示中国GDP将达到美国90%以上,印度超越德国成为第三大经济体。新兴市场国家占比持续提升。

  7. 指标相关性(热力图)
    关键发现:GDP增长与失业率呈强负相关(-0.62);通胀与利率正相关(0.58);公共债务与增长微弱负相关。

  8. 全球经济影响力词云
    直观展示经济规模分布,美国、中国、日本、德国等国家名称最突出,反映其全球经济权重。

  9. 多国增长路径(分面图)
    中国保持中高速增长(5-6%)伴随温和通胀;巴西呈现高波动特征;日本长期低增长低通胀。

这些发现为政策制定者、经济学家和金融分析师提供了宝贵的参考,帮助他们更好地理解全球经济趋势,制定有效的经济政策和投资策略。


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

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

<--微信名片-->