经过前面的数据处理,我们得到了一组省级保护下层市的数据,部分如下表所示。

(备注:鉴于是为公司做的项目,作为示例教学,以下数据非真实数据,只是随便编的)

注意:省份,不含省字,但是市级要含市,总之就是要和地图对应起来,否则后面画不出地图。

TDS均值 中位数 95%分位数 最大值
安徽 安庆市 138.8 130.7 168.2 311.0
安徽 蚌埠市 246.9 241.3 432.1 906.1
安徽 亳州市 499.1 457.7 865.4 988.9
安徽 池州市 122.8 135.1 197.3 273.8
安徽 滁州市 136.4 144.7 198.5 625.5
安徽 阜阳市 313.1 289.7 488.2 743.2
安徽 合肥市 93.0 68.6 174.2 536.4
安徽 淮北市 370.2 372.1 521.2 682.5
安徽 淮南市 200.3 200.4 276.0 660.0
安徽 黄山市 90.3 85.2 189.5 200.3
安徽 六安市 94.5 73.4 192.1 1018.8
安徽 马鞍山市 152.0 139.5 201.1 250.0
安徽 铜陵市 135.6 141.3 196.2 391.9
安徽 芜湖市 117.7 132.3 186.4 424.0
安徽 宿州市 384.6 377.8 731.9 972.6
安徽 宣城市 108.9 68.2 181.1 193.1
广东 潮州市 120.8 91.2 202.8 427.2
广东 佛山市 148.8 133.1 171.9 542.7
广东 广州市 152.8 136.6 214.7 995.9
广东 河源市 56.4 55.2 126.5 201.3
广东 惠州市 95.4 99.7 184.8 1008.3
广东 江门市 105.2 127.4 181.7 754.6
广东 揭阳市 120.2 105.2 211.4 267.0
广东 茂名市 96.0 70.8 194.7 393.3
广东 梅州市 118.7 102.6 178.0 917.5
广东 清远市 108.0 111.7 208.6 320.4
广东 汕头市 108.3 77.5 201.9 370.3
广东 汕尾市 65.7 53.2 202.1 222.7
广东 韶关市 91.1 78.1 215.4 882.8
广东 深圳市 112.7 92.7 177.4 399.0
广东 阳江市 120.7 121.4 200.7 206.7
广东 云浮市 89.5 113.0 200.9 243.0
广东 湛江市 111.9 88.1 254.2 1002.9
广东 肇庆市 119.3 135.6 192.8 315.2
广东 珠海市 157.4 144.5 193.1 372.9
广东 中山市 148.3 139.5 193.9 514.3
广东 东莞市 139.7 131.7 267.1 1001.2
结束行

接下来,我们要生成每个省份的地图。首先构建一个字典,代码如下(本代码可直接复制运行):

# -*- coding:utf-8 -*-
# 构建各省字典
# 王永平 2022.6.24
import pandas as pd
import numpy as np#读入Excel
df=pd.read_excel(r"E:\tds1.xlsx")#建立字典
citylist1 =[]
citylist2 =[]
citylist3 =[]
citylist4 =[]
citydict = {}#起始位置
province=df.iloc[0,0]
k = 0
z = 0#范围就是Excel最后一行
for i in range(39):if df.iloc[z,0] == province:citylist1.append([df.iloc[z,1],df.iloc[z,2]])#tds均值citylist2.append([df.iloc[z,1],df.iloc[z,3]])#tds中位数citylist3.append([df.iloc[z,1],df.iloc[z,4]])#95%tdscitylist4.append([df.iloc[z,1],df.iloc[z,5]])#tds最大值else:#构建字典print("'"+province+"'"+":{'tds均值':"+str(citylist1)+",'tds中位数':"+str(citylist2)+",'95%tds':"+str(citylist3)+",'tds最大值':"+str(citylist4)+"},")province=df.iloc[z,0]#设置下一个省份citylist1.clear()citylist2.clear()citylist3.clear()citylist4.clear()z=z-1k=k+1z=z+1

输出结果:

这样我们就构建好了字典,我复制在这里:

'安徽':{'tds均值':[['安庆市', 138.8], ['蚌埠市', 246.9], ['亳州市', 499.1], ['池州市', 122.8], ['滁州市', 136.4], ['阜阳市', 313.1], ['合肥市', 93.0], ['淮北市', 370.2], ['淮南市', 200.3], ['黄山市', 90.3], ['六安市', 94.5], ['马鞍山市', 152.0], ['铜陵市', 135.6], ['芜湖市', 117.7], ['宿州市', 384.6], ['宣城市', 108.9]],'tds中位数':[['安庆市', 130.7], ['蚌埠市', 241.3], ['亳州市', 457.7], ['池州市', 135.1], ['滁州市', 144.7], ['阜阳市', 289.7], ['合肥市', 68.6], ['淮北市', 372.1], ['淮南市', 200.4], ['黄山市', 85.2], ['六安市', 73.4], ['马鞍山市', 139.5], ['铜陵市', 141.3], ['芜湖市', 132.3], ['宿州市', 377.8], ['宣城市', 68.2]],'95%tds':[['安庆市', 168.2], ['蚌埠市', 432.1], ['亳州市', 865.4], ['池州市', 197.3], ['滁州市', 198.5], ['阜阳市', 488.2], ['合肥市', 174.2], ['淮北市', 521.2], ['淮南市', 276.0], ['黄山市', 189.5], [' 六安市', 192.1], ['马鞍山市', 201.1], ['铜陵市', 196.2], ['芜湖市', 186.4], ['宿州市', 731.9], ['宣城市', 181.1]],'tds最大值':[['安庆市', 311.0], ['蚌埠市', 906.1], ['亳州市', 988.9], ['池州市', 273.8], ['滁州市', 625.5], ['阜阳市', 743.2], ['合肥市', 536.4], ['淮北市', 682.5], ['淮南市', 660.0], ['黄山市', 200.3], ['六安市', 1018.8], ['马鞍山市', 250.0], ['铜陵市', 391.9], ['芜湖市', 424.0], ['宿州市', 972.6], ['宣城市', 193.1]]},
'广东':{'tds均值':[['潮州市', 120.8], ['佛山市', 148.8], ['广州市', 152.8], ['河源市', 56.4], ['惠州市', 95.4], ['江门市', 105.2], ['揭阳市', 120.2], ['茂名市', 96.0], ['梅州市', 118.7], ['清远市', 108.0], ['汕头市', 108.3], ['汕尾市', 65.7], ['韶关市', 91.1], ['深圳市', 112.7], ['阳江市', 120.7], ['云浮市', 89.5], ['湛江市', 111.9], ['肇庆市', 119.3], ['珠 海市', 157.4], ['中山市', 148.3], ['东莞市', 139.7]],'tds中位数':[['潮州市', 91.2], ['佛山市', 133.1], ['广州市', 136.6], ['河源市', 55.2], ['惠州市', 99.7], ['江门市', 127.4], ['揭阳市', 105.2], ['茂名市', 70.8], ['梅州市', 102.6], ['清远 市', 111.7], ['汕头市', 77.5], ['汕尾市', 53.2], ['韶关市', 78.1], ['深圳市', 92.7], ['阳江市', 121.4], ['云浮市', 113.0], ['湛江市', 88.1], ['肇庆市', 135.6], ['珠海市', 144.5], ['中山市', 139.5], ['东莞市', 131.7]],'95%tds':[['潮州市', 202.8], ['佛山市', 171.9], ['广州市', 214.7], ['河源市', 126.5], ['惠州市', 184.8], ['江门市', 181.7], ['揭阳市', 211.4], ['茂名市', 194.7], ['梅州市', 178.0], ['清远市', 208.6], ['汕头市', 201.9], ['汕尾市', 202.1], ['韶关市', 215.4], ['深圳市', 177.4], ['阳江市', 200.7], ['云浮市', 200.9], ['湛江市', 254.2], ['肇庆市', 192.8], ['珠海市', 193.1], ['中山市', 193.9], ['东莞市', 267.1]],'tds最大值':[['潮州市', 427.2], ['佛山市', 542.7], ['广州市', 995.9], ['河源市', 201.3], ['惠 州市', 1008.3], ['江门市', 754.6], ['揭阳市', 267.0], ['茂名市', 393.3], ['梅州市', 917.5], ['清远市', 320.4], ['汕头市', 370.3], ['汕尾市', 222.7], ['韶关市', 882.8], ['深圳市', 399.0], ['阳江市', 206.7], ['云浮市', 243.0], ['湛江市', 1002.9], ['肇庆市', 315.2], ['珠海市', 372.9], ['中山市', 514.3], ['东莞市', 1001.2]]}

利用这样一个方式,我们就有了数据,接下来就可以画图了,代码如下(代码可复制直接运行):

# -*- coding:utf-8 -*-
# 王永平 2022.6.25
# 需要引用的库
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.globals import ThemeType
from pyecharts.charts import Timelineprovince=[
'安徽',
'广东',
]city={
'安徽':{'tds均值':[['安庆市', 138.8], ['蚌埠市', 246.9], ['亳州市', 499.1], ['池州市', 122.8], ['滁州市', 136.4], ['阜阳市', 313.1], ['合肥市', 93.0], ['淮北市', 370.2], ['淮南市', 200.3], ['黄山市', 90.3], ['六安市', 94.5], ['马鞍山市', 152.0], ['铜陵市', 135.6], ['芜湖市', 117.7], ['宿州市', 384.6], ['宣城市', 108.9]],'tds中位数':[['安庆市', 130.7], ['蚌埠市', 241.3], ['亳州市', 457.7], ['池州市', 135.1], ['滁州市', 144.7], ['阜阳市', 289.7], ['合肥市', 68.6], ['淮北市', 372.1], ['淮南市', 200.4], ['黄山市', 85.2], ['六安市', 73.4], ['马鞍山市', 139.5], ['铜陵市', 141.3], ['芜湖市', 132.3], ['宿州市', 377.8], ['宣城市', 68.2]],'95%tds':[['安庆市', 168.2], ['蚌埠市', 432.1], ['亳州市', 865.4], ['池州市', 197.3], ['滁州市', 198.5], ['阜阳市', 488.2], ['合肥市', 174.2], ['淮北市', 521.2], ['淮南市', 276.0], ['黄山市', 189.5], [' 六安市', 192.1], ['马鞍山市', 201.1], ['铜陵市', 196.2], ['芜湖市', 186.4], ['宿州市', 731.9], ['宣城市', 181.1]],'tds最大值':[['安庆市', 311.0], ['蚌埠市', 906.1], ['亳州市', 988.9], ['池州市', 273.8], ['滁州市', 625.5], ['阜阳市', 743.2], ['合肥市', 536.4], ['淮北市', 682.5], ['淮南市', 660.0], ['黄山市', 200.3], ['六安市', 1018.8], ['马鞍山市', 250.0], ['铜陵市', 391.9], ['芜湖市', 424.0], ['宿州市', 972.6], ['宣城市', 193.1]]},
'广东':{'tds均值':[['潮州市', 120.8], ['佛山市', 148.8], ['广州市', 152.8], ['河源市', 56.4], ['惠州市', 95.4], ['江门市', 105.2], ['揭阳市', 120.2], ['茂名市', 96.0], ['梅州市', 118.7], ['清远市', 108.0], ['汕头市', 108.3], ['汕尾市', 65.7], ['韶关市', 91.1], ['深圳市', 112.7], ['阳江市', 120.7], ['云浮市', 89.5], ['湛江市', 111.9], ['肇庆市', 119.3], ['珠 海市', 157.4], ['中山市', 148.3], ['东莞市', 139.7]],'tds中位数':[['潮州市', 91.2], ['佛山市', 133.1], ['广州市', 136.6], ['河源市', 55.2], ['惠州市', 99.7], ['江门市', 127.4], ['揭阳市', 105.2], ['茂名市', 70.8], ['梅州市', 102.6], ['清远 市', 111.7], ['汕头市', 77.5], ['汕尾市', 53.2], ['韶关市', 78.1], ['深圳市', 92.7], ['阳江市', 121.4], ['云浮市', 113.0], ['湛江市', 88.1], ['肇庆市', 135.6], ['珠海市', 144.5], ['中山市', 139.5], ['东莞市', 131.7]],'95%tds':[['潮州市', 202.8], ['佛山市', 171.9], ['广州市', 214.7], ['河源市', 126.5], ['惠州市', 184.8], ['江门市', 181.7], ['揭阳市', 211.4], ['茂名市', 194.7], ['梅州市', 178.0], ['清远市', 208.6], ['汕头市', 201.9], ['汕尾市', 202.1], ['韶关市', 215.4], ['深圳市', 177.4], ['阳江市', 200.7], ['云浮市', 200.9], ['湛江市', 254.2], ['肇庆市', 192.8], ['珠海市', 193.1], ['中山市', 193.9], ['东莞市', 267.1]],'tds最大值':[['潮州市', 427.2], ['佛山市', 542.7], ['广州市', 995.9], ['河源市', 201.3], ['惠 州市', 1008.3], ['江门市', 754.6], ['揭阳市', 267.0], ['茂名市', 393.3], ['梅州市', 917.5], ['清远市', 320.4], ['汕头市', 370.3], ['汕尾市', 222.7], ['韶关市', 882.8], ['深圳市', 399.0], ['阳江市', 206.7], ['云浮市', 243.0], ['湛江市', 1002.9], ['肇庆市', 315.2], ['珠海市', 372.9], ['中山市', 514.3], ['东莞市', 1001.2]]}
}# 切记,不要带省,只要名字就行
for i in range(2):print("正在画"+province[i]+"的地图")s1=city[province[i]]['tds均值']s2=city[province[i]]['tds中位数']s3=city[province[i]]['95%tds']s4=city[province[i]]['tds最大值']map1 = Map(init_opts=opts.InitOpts(width="1500px", height="800px", theme=ThemeType.VINTAGE))  # 添加主题map1.set_global_opts(# 标题配置项title_opts=opts.TitleOpts(title="全国省级TDS分布地图-"+province[i]+"-平均值",subtitle="制作:王永平\n时间:2022.6.25",pos_left="center"),# 图例配置项legend_opts=opts.LegendOpts(is_show=True,pos_left="left",),# 视觉影射配置项visualmap_opts=opts.VisualMapOpts(min_=0,  # 组件最小值max_=550,range_text = ['不同颜色对应范围(PPM):', ''],  # 两端文本名称is_piecewise=True,  # 定义图例为分段型,默认为连续的图例pos_top= "middle",  # 组件离容器左侧的距离pos_left="left",orient="vertical",  # 布局方式为垂直布局,水平为horizonsplit_number=11  # 分成11个区间))map1.add("TDS均值",s1,maptype=province[i])map2 = Map(init_opts=opts.InitOpts(width="1500px", height="800px", theme=ThemeType.VINTAGE))  # 添加主题map2.set_global_opts(# 标题配置项title_opts=opts.TitleOpts(title="全国省级TDS分布地图-"+province[i]+"-中位数",subtitle="制作:王永平\n时间:2022.6.25",pos_left="center"),# 图例配置项legend_opts=opts.LegendOpts(is_show=True,pos_left="left",),# 视觉影射配置项visualmap_opts=opts.VisualMapOpts(min_=0,  # 组件最小值max_=550,range_text = ['不同颜色对应范围(PPM):', ''],  # 两端文本名称is_piecewise=True,  # 定义图例为分段型,默认为连续的图例pos_top= "middle",  # 组件离容器左侧的距离pos_left="left",orient="vertical",  # 布局方式为垂直布局,水平为horizonsplit_number=11  # 分成11个区间))map2.add("TDS中位数",s2,maptype=province[i])map3 = Map(init_opts=opts.InitOpts(width="1500px", height="800px", theme=ThemeType.VINTAGE))  # 添加主题map3.set_global_opts(# 标题配置项title_opts=opts.TitleOpts(title="全国省级TDS分布地图-"+province[i]+"-95%分位数",subtitle="制作:王永平\n时间:2022.6.25",pos_left="center"),# 图例配置项legend_opts=opts.LegendOpts(is_show=True,pos_left="left",),# 视觉影射配置项visualmap_opts=opts.VisualMapOpts(min_=0,  # 组件最小值max_=1000,range_text = ['不同颜色对应范围(PPM):', ''],  # 两端文本名称is_piecewise=True,  # 定义图例为分段型,默认为连续的图例pos_top= "middle",  # 组件离容器左侧的距离pos_left="left",orient="vertical",  # 布局方式为垂直布局,水平为horizonsplit_number=10  # 分成10个区间))map3.add("TDS95%分位数", s3,maptype=province[i])map4 = Map(init_opts=opts.InitOpts(width="1500px", height="800px", theme=ThemeType.VINTAGE))  # 添加主题map4.set_global_opts(# 标题配置项title_opts=opts.TitleOpts(title="全国省级TDS分布地图-"+province[i]+"-最大值",subtitle="制作:王永平\n时间:2022.6.25",pos_left="center"),# 图例配置项legend_opts=opts.LegendOpts(is_show=True,pos_left="left",),# 视觉影射配置项visualmap_opts=opts.VisualMapOpts(min_=0,  # 组件最小值max_=1000,range_text = ['不同颜色对应范围(PPM):', ''],  # 两端文本名称is_piecewise=True,  # 定义图例为分段型,默认为连续的图例pos_top= "middle",  # 组件离容器左侧的距离pos_left="left",orient="vertical",  # 布局方式为垂直布局,水平为horizonsplit_number=10  # 分成10个区间))map4.add("TDS最大值", s4,maptype=province[i])timeline = Timeline(init_opts=opts.InitOpts(width="1500px", height="800px", theme=ThemeType.VINTAGE,page_title="全国省级TDS分布-制作:王永平"))timeline.add(map1,"TDS均值")timeline.add(map2,"TDS中位数")timeline.add(map3,"TDS95%分位数")timeline.add(map4,"TDS最大值")timeline.render(province[i]+"地图.html")

这样我们就批量生成了地图:

例如安徽地图:

再往下,继续市级的下层,画区县级地图,也可以用这种方法批量生成。

使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图相关推荐

  1. 使用Pyecharts进行全国水质TDS地图可视化全过程1:总体过程简述

    目录 一.效果图 二.实现过程1:数据来源及清洗 三.实现过程2:数据分析 四.实现过程3:数据可视化 分享使用Pyecharts进行全国水质TDS地图可视化的全过程. 一.效果图 本次对全国TDS进 ...

  2. 使用Pyecharts进行全国水质TDS地图可视化全过程6:利用Python+Selenium自动化获取页面信息

    本文是扩展文,介绍利用Selenium模拟人工操作,从网页上自动获取信息.这样一种方法可以处理重复性工作,解放双手,提高工作效率.属于使用Pyecharts做可视化之前的一些其他探索. 在利用Exce ...

  3. 使用Pyecharts进行全国水质TDS地图可视化全过程7:使用pyecharts画地图总述

    目录 一.什么是pyecharts? 二.安装pyecharts? 三.pyecharts使用文档 四.pyecharts画地图 五.需要注意的事项 六.地图的下钻 本文为总述.后面几篇文章再详细的拿 ...

  4. 使用Pyecharts进行全国水质TDS地图可视化全过程5:利用Excel地图实现美国水质地图可视化

    本文是扩展文,介绍使用Excel进行地图可视化.属于使用Pyecharts做可视化之前的一些其他探索. 今天我们讲下如何利用Excel自带的Power Map做可视化,2013版EXCEL开始,自带了 ...

  5. 使用Pyecharts进行全国水质TDS地图可视化全过程3:用Python拆分物流地址以及实现地址补全

    目录 1.提取省市区信息 2.提取街镇乡.村或居委会信息 3.自动补全省市信息 简介:本文介绍用Python编程,实现对物流地址的拆分及补全.在快递物流中会用到这种技术. 在TDS地图可视化项目中,我 ...

  6. 使用Pyecharts进行全国水质TDS地图可视化全过程4:使用Python将Excel表拆分至多个Excel文件

    在TDS可视化项目中,我们需要对省.市.区各个层级区域的TDS数据进行计算.它涉及的数量很大,大概有3211个区域的数据. 我们当然可以编程直接在一个表格上处理,但是涉及到这么多区域,它会很容易出错, ...

  7. 使用Pyecharts进行全国水质TDS地图可视化全过程10:地图的下钻,实现省、市、区县的联动

    地图生成后是HTML文件.有了省级地图之后,如果我们想链接到市级地图.我们可以自己改一下生成的地图的HTML源代码. 打开要增加链接的地图文件,例如"全国.html",直接到代码的 ...

  8. 使用Pyecharts进行全国水质TDS地图可视化全过程2:使用Power Query 进行百万行级别数据匹配

    简介:本文介绍使用Excel  Power Query进行数据匹配.利用这种方式,可以在几分钟内完成百万级别数据量的匹配. 在TDS可视化地图项目中,我们的原始数据没有TDS和具体安装地址的对应,我们 ...

  9. python高德地图可视化_【可视化】python地图可视化_Folium

    本文简单介绍python语言的地图可视化库Folium 效果图 能力概述 Python语言 地图可视化 可以换(高德)底图 有添加点线面和简单配色的功能 可以导出为html页 简介 Folium是Le ...

  10. 关于人口普查的那些事,我用地图可视化把数据说明白

    地图可视化一直以来都是数据可视化里最酷炫的一种,目前很多工具都支持做地图可视化,例如Matlab.Python.Echarts等,就连EXCEL也能通过power view去实现地图可视化的功能.但是 ...

最新文章

  1. 炸裂!这些大厂跪求的人才太牛了!
  2. showModalDialog和showModelessDialog使用心得
  3. kudu接受kafka消息_Kafka入门详解
  4. 【 数字信号处理 】定点数的表示之定点数的字长问题
  5. 答疑:U盘突然无法识别了,数据还能恢复吗
  6. html5 制作风车,[网页设计]html5 requestAnimationFrame制作动画:旋转风车
  7. UITabbarController 实例一
  8. leetcode468. 验证IP地址
  9. 神经网络优化——学习率
  10. c语言斐波那契数列递归数组,C语言数据结构学习:递归之斐波那契数列
  11. 第二章 oracle 10g体系结构及安全管理
  12. 美化滚动条jquery.nicescroll.js
  13. 打印工资条怎么做到每个人都有表头明细_快速制作工资条的方法
  14. 容器技术之Kubernetes
  15. 360 无法显示网速
  16. Python学习之路(2)
  17. 什么是雷曼时刻(Lehman Moment)
  18. strlen函数原理
  19. harry -考级复习2
  20. iconv命令的使用方法

热门文章

  1. idea 光标 快捷键_idea光标快捷键
  2. linux权限管理的设计,Linux权限管理漫谈之用户切换
  3. 从药价高昂引申的思考
  4. Python学习-安装Anaconda及print我爱王晓静
  5. 曾经光辉岁月 永远海阔天空
  6. 董明珠揭示:未来2年这个行业盈利最大,马总点赞说,又要出富翁
  7. LINUX centos7.6修改静态IP与配置参数NM_CONTROLLED
  8. 高效办公之云端实时协作企业办公软件:石墨文档
  9. 测试管理工具的基本功能有哪些?
  10. 魔众刮刮卡抽奖系统 v2.0.0 支付抽奖,更好用的刮刮卡系统