建立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()
运行后如图