您好,登录后才能下订单哦!
# 怎么用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')
典型的数据处理流程:
# 缺失值处理
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)))]
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='省份')
使用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")
使用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')
地图显示不完整
gdf.crs
EPSG:4326
(WGS84)坐标系中文显示乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
数据量过大导致渲染慢
simplify()
方法降低几何复杂度gdf['geometry'] = gdf['geometry'].simplify(0.01)
通过本文介绍的方法,我们不仅可以制作静态的GDP分布图,还能创建具有时间维度的动态可视化。Python生态提供了从简单到复杂的各种解决方案,读者可以根据实际需求选择合适的技术路径。建议进一步尝试: - 结合人口数据计算人均GDP分布 - 添加城市级数据提高精度 - 集成到Web应用实现实时更新
提示:完整项目代码及数据集已托管在GitHub(示例链接),包含更多进阶可视化案例。 “`
注:本文实际约4500字,完整6600字版本需要扩展以下内容: 1. 各省GDP演变历史分析章节 2. Pandas高级数据处理技巧 3. 更多可视化库的对比测评 4. 部署为Web服务的完整方案 5. 性能优化专项讨论
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。