前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从Excel表中获取数据,显示在中国地图上

从Excel表中获取数据,显示在中国地图上

作者头像
顾翔
发布2024-09-10 13:03:53
930
发布2024-09-10 13:03:53
举报
文章被收录于专栏:啄木鸟软件测试

建立Excel文件user.xlsx

代码语言:javascript
复制
省  用户数  占比
广东省  1083   21.66%
北京市  879   17.58%
上海市  637   12.74%
江苏省  350   7.00%
浙江省  332   6.64%
陕西省  285   5.70%
四川省  199   3.98%
湖北省  178   3.56%
福建省  125   2.50%
河南省  113   2.26%
山东省  108   2.16%
湖南省  97   1.94%
辽宁省  86   1.72%
河北省  83   1.66%
天津市  82   1.64%
重庆市  61   1.22%
安徽省  58   1.16%
山西省  46   0.92%
江西省  33   0.66%
广西壮族自治区  32   0.64%
云南省  20   0.40%
吉林省  17   0.34%
甘肃省  15   0.30%
自治区  14   0.28%
新疆维吾尔自治区  14   0.28%
黑龙江省  13   0.26%
贵州省  13   0.26%
台湾省  8   0.16%
宁夏回族自治区  7   0.14%
海南省  5   0.10%
青海省  4   0.08%
香港  2   0.04%

将用户数显示在中国地图上。

第一步:获取excel数据

代码语言:javascript
复制
import pandas as pd
# 读取Excel文件
df= pd.read_excel('user.xlsx')

第二步:获取china-shapefiles-master数据,将其读取出来,然后FCNAME为china中省列,去除重复。

代码语言:javascript
复制
import geopandas as gpd
# 读取中国地图数据
china = gpd.read_file('china-shapefiles-master/china.shp',encoding='utf-8')
#FCNAME为china中省列,去除重复的
china=china.drop_duplicates(subset='FCNAME')

如何知道china-shapefiles-master/china.shp的FCNAME字段与excel中省字段已知。

代码语言:javascript
复制
print(china.columns)

获得

代码语言:javascript
复制
Index(['AREA', 'BOUND_A_', 'BOUND_A_ID', 'FCNAME', 'FENAME', 'NAME', 'OWNER',
       'PERIMETER', 'SOC', 'geometry'],
      dtype='object')

然后用下面语句遍历所有列

代码语言:javascript
复制
for c in china.columns:
    print(china[c].head(10))

代码语言:javascript
复制
...
0        黑龙江省
1      内蒙古自治区
2    新疆维吾尔自治区
3         吉林省
4         辽宁省
5         甘肃省
6         河北省
7         北京市
8         辽宁省
9         辽宁省
Name: FCNAME, dtype: object
...

得知FCNAME为省,与excel中省字段相同(注意:如果Excel中省,为河北或者北京),必须与字典数据总保持一致。 由于地图信息内还有许多省级市,FCNAME字段仍旧为省名,所以通过 drop_duplicates()方法去重。

第三步:合并Excel数据和地图信息,地图信息中的,FCNAME列与Excel数据中的省列相同,作为关键字,将NaN变为0

代码语言:javascript
复制
#合并excel文件与地图文件,将NaN变为0
merged = china.set_index('FCNAME').join(df.set_index('省')).fillna(0)

第四步:画图,将将用户数显示在中国地图上。

代码语言:javascript
复制
fig, ax = plt.subplots(1, 1, figsize=(10, 10))
merged.plot(column=merged.columns[-2], cmap='OrRd', linewidth=0.8, ax=ax, edgecolor='0.8', legend=True)
plt.show()

最后代码

代码语言:javascript
复制
#-*- coding: utf-8 -*-
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt

# 读取Excel文件
df= pd.read_excel('user.xlsx')
# 读取中国地图数据
china = gpd.read_file('china-shapefiles-master/china.shp',encoding='utf-8')
#FCNAME为china中省列,去除重复的
china=china.drop_duplicates(subset='FCNAME')
#合并excel文件与地图文件,将NaN变为0
merged = china.set_index('FCNAME').join(df.set_index('省')).fillna(0)
#开始画图
fig, ax = plt.subplots(1, 1, figsize=(10, 10))
merged.plot(column=merged.columns[-2], cmap='OrRd', linewidth=0.8, ax=ax, edgecolor='0.8', legend=True)
plt.show()

运行后如图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档