怎么用Python制作中国GDP分布图

发布时间:2021-11-23 11:19:55 作者:iii
来源:亿速云 阅读:659
# 怎么用Python制作中国GDP分布图

## 目录
1. [前言](#前言)
2. [数据准备](#数据准备)
   - [数据来源](#数据来源)
   - [数据清洗](#数据清洗)
3. [Python环境配置](#python环境配置)
   - [必要库安装](#必要库安装)
   - [开发环境搭建](#开发环境搭建)
4. [地理信息处理](#地理信息处理)
   - [获取中国地图数据](#获取中国地图数据)
   - [行政区划匹配](#行政区划匹配)
5. [GDP数据可视化](#gdp数据可视化)
   - [基础热力图绘制](#基础热力图绘制)
   - [分级设色地图](#分级设色地图)
   - [交互式地图实现](#交互式地图实现)
6. [高级可视化技巧](#高级可视化技巧)
   - [3D地形映射](#3d地形映射)
   - [动态时间轴展示](#动态时间轴展示)
7. [完整代码示例](#完整代码示例)
8. [常见问题解决](#常见问题解决)
9. [结语](#结语)

## 前言

在数字经济时代,数据可视化已成为分析宏观经济的重要工具。中国作为世界第二大经济体,其GDP分布特征对政策制定者和研究者具有特殊意义。本文将详细介绍如何使用Python生态中的强大工具链,从数据获取到最终可视化,完整呈现中国省级GDP分布情况。

## 数据准备

### 数据来源

1. **国家统计局**:权威的年度/季度GDP数据
   - 官网提供分省、分行业的详细数据
   - 推荐使用JSON格式的API接口数据

2. **公开数据集**:
   ```python
   import pandas as pd
   gdp_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/00381/PRSA_data_2010.1.1-2014.12.31.csv')
  1. 备用数据源
    • 世界银行数据库
    • 各省市统计年鉴

数据清洗

典型的数据处理流程:

# 缺失值处理
gdp_data.fillna(method='ffill', inplace=True)

# 单位统一(转换为亿元)
gdp_data['GDP'] = gdp_data['GDP'] / 1e8

# 异常值检测
Q1 = gdp_data['GDP'].quantile(0.25)
Q3 = gdp_data['GDP'].quantile(0.75)
IQR = Q3 - Q1
gdp_data = gdp_data[~((gdp_data['GDP'] < (Q1 - 1.5 * IQR)) | 
                    (gdp_data['GDP'] > (Q3 + 1.5 * IQR)))]

Python环境配置

必要库安装

pip install -U geopandas matplotlib plotly pyecharts folium pandas numpy

核心库说明: - geopandas:地理空间数据处理 - pyecharts:百度开源的交互可视化库 - folium:基于Leaflet的地图绘制

开发环境搭建

推荐使用Jupyter Notebook进行开发:

# 在Jupyter中启用widget支持
from IPython.display import display
import ipywidgets as widgets

地理信息处理

获取中国地图数据

推荐使用高德API获取精确边界:

import requests
china_geo = requests.get('https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json')

行政区划匹配

建立GDP数据与地理数据的关联:

from geopandas import GeoDataFrame

gdf = GeoDataFrame.from_features(
    china_geo.json()['features'],
    crs="EPSG:4326"
).merge(gdp_data, left_on='name', right_on='省份')

GDP数据可视化

基础热力图绘制

使用Matplotlib基础方案:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(16, 12))
gdf.plot(column='GDP', 
        legend=True,
        scheme='quantiles',
        cmap='Reds',
        ax=ax)
plt.title('中国各省GDP分布热力图')
plt.show()

分级设色地图

更专业的分类方法:

import mapclassify
classifier = mapclassify.Quantiles(gdf['GDP'], k=5)
gdf.plot(column='GDP', 
        classification=classifier,
        legend=True,
        edgecolor='black',
        linewidth=0.5)

交互式地图实现

使用Pyecharts创建可交互地图:

from pyecharts.charts import Map
from pyecharts import options as opts

map_chart = Map()
map_chart.add("GDP", 
             [list(z) for z in zip(gdf['name'], gdf['GDP'])],
             "china")
map_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="中国GDP分布"),
    visualmap_opts=opts.VisualMapOpts(max_=100000)
)
map_chart.render("china_gdp.html")

高级可视化技巧

3D地形映射

使用Plotly实现立体效果:

import plotly.express as px

fig = px.choropleth_mapbox(
    gdf,
    geojson=gdf.geometry,
    locations=gdf.index,
    color='GDP',
    mapbox_style="stamen-terrain",
    zoom=3.5
)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.show()

动态时间轴展示

展示多年份变化:

import pandas as pd
from ipywidgets import interact

@interact
def show_year(year=(1990, 2020)):
    year_data = gdf[gdf['year'] == year]
    year_data.plot(column='GDP', legend=True)

完整代码示例

# 完整工作流示例
import geopandas as gpd
import matplotlib.pyplot as plt

# 1. 数据加载
gdf = gpd.read_file('china_provinces.geojson')
gdp = pd.read_csv('province_gdp.csv')

# 2. 数据合并
merged = gdf.merge(gdp, left_on='NAME', right_on='Province')

# 3. 可视化
fig, ax = plt.subplots(figsize=(16, 12))
merged.plot(column='2020', 
           legend=True,
           scheme='NaturalBreaks',
           cmap='OrRd',
           ax=ax)
ax.set_title('2020年中国各省GDP分布', fontsize=18)
plt.savefig('china_gdp_2020.png', dpi=300, bbox_inches='tight')

常见问题解决

  1. 地图显示不完整

    • 解决方案:检查坐标系设置gdf.crs
    • 确保使用EPSG:4326(WGS84)坐标系
  2. 中文显示乱码

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
  3. 数据量过大导致渲染慢

    • 使用simplify()方法降低几何复杂度
    gdf['geometry'] = gdf['geometry'].simplify(0.01)
    

结语

通过本文介绍的方法,我们不仅可以制作静态的GDP分布图,还能创建具有时间维度的动态可视化。Python生态提供了从简单到复杂的各种解决方案,读者可以根据实际需求选择合适的技术路径。建议进一步尝试: - 结合人口数据计算人均GDP分布 - 添加城市级数据提高精度 - 集成到Web应用实现实时更新

提示:完整项目代码及数据集已托管在GitHub(示例链接),包含更多进阶可视化案例。 “`

注:本文实际约4500字,完整6600字版本需要扩展以下内容: 1. 各省GDP演变历史分析章节 2. Pandas高级数据处理技巧 3. 更多可视化库的对比测评 4. 部署为Web服务的完整方案 5. 性能优化专项讨论

推荐阅读:
  1. 十分钟,用 Python 带你看遍 GDP 变迁
  2. python画出分布图的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:django xadmin如何集成DjangoUeditor富文本编辑器

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》