使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图
经过前面的数据处理,我们得到了一组省级保护下层市的数据,部分如下表所示。
(备注:鉴于是为公司做的项目,作为示例教学,以下数据非真实数据,只是随便编的)
注意:省份,不含省字,但是市级要含市,总之就是要和地图对应起来,否则后面画不出地图。
省 | 市 | 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:构建字典,批量生成所有省份地图相关推荐
- 使用Pyecharts进行全国水质TDS地图可视化全过程1:总体过程简述
目录 一.效果图 二.实现过程1:数据来源及清洗 三.实现过程2:数据分析 四.实现过程3:数据可视化 分享使用Pyecharts进行全国水质TDS地图可视化的全过程. 一.效果图 本次对全国TDS进 ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程6:利用Python+Selenium自动化获取页面信息
本文是扩展文,介绍利用Selenium模拟人工操作,从网页上自动获取信息.这样一种方法可以处理重复性工作,解放双手,提高工作效率.属于使用Pyecharts做可视化之前的一些其他探索. 在利用Exce ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程7:使用pyecharts画地图总述
目录 一.什么是pyecharts? 二.安装pyecharts? 三.pyecharts使用文档 四.pyecharts画地图 五.需要注意的事项 六.地图的下钻 本文为总述.后面几篇文章再详细的拿 ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程5:利用Excel地图实现美国水质地图可视化
本文是扩展文,介绍使用Excel进行地图可视化.属于使用Pyecharts做可视化之前的一些其他探索. 今天我们讲下如何利用Excel自带的Power Map做可视化,2013版EXCEL开始,自带了 ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程3:用Python拆分物流地址以及实现地址补全
目录 1.提取省市区信息 2.提取街镇乡.村或居委会信息 3.自动补全省市信息 简介:本文介绍用Python编程,实现对物流地址的拆分及补全.在快递物流中会用到这种技术. 在TDS地图可视化项目中,我 ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程4:使用Python将Excel表拆分至多个Excel文件
在TDS可视化项目中,我们需要对省.市.区各个层级区域的TDS数据进行计算.它涉及的数量很大,大概有3211个区域的数据. 我们当然可以编程直接在一个表格上处理,但是涉及到这么多区域,它会很容易出错, ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程10:地图的下钻,实现省、市、区县的联动
地图生成后是HTML文件.有了省级地图之后,如果我们想链接到市级地图.我们可以自己改一下生成的地图的HTML源代码. 打开要增加链接的地图文件,例如"全国.html",直接到代码的 ...
- 使用Pyecharts进行全国水质TDS地图可视化全过程2:使用Power Query 进行百万行级别数据匹配
简介:本文介绍使用Excel Power Query进行数据匹配.利用这种方式,可以在几分钟内完成百万级别数据量的匹配. 在TDS可视化地图项目中,我们的原始数据没有TDS和具体安装地址的对应,我们 ...
- python高德地图可视化_【可视化】python地图可视化_Folium
本文简单介绍python语言的地图可视化库Folium 效果图 能力概述 Python语言 地图可视化 可以换(高德)底图 有添加点线面和简单配色的功能 可以导出为html页 简介 Folium是Le ...
- 关于人口普查的那些事,我用地图可视化把数据说明白
地图可视化一直以来都是数据可视化里最酷炫的一种,目前很多工具都支持做地图可视化,例如Matlab.Python.Echarts等,就连EXCEL也能通过power view去实现地图可视化的功能.但是 ...
最新文章
- 炸裂!这些大厂跪求的人才太牛了!
- showModalDialog和showModelessDialog使用心得
- kudu接受kafka消息_Kafka入门详解
- 【 数字信号处理 】定点数的表示之定点数的字长问题
- 答疑:U盘突然无法识别了,数据还能恢复吗
- html5 制作风车,[网页设计]html5 requestAnimationFrame制作动画:旋转风车
- UITabbarController 实例一
- leetcode468. 验证IP地址
- 神经网络优化——学习率
- c语言斐波那契数列递归数组,C语言数据结构学习:递归之斐波那契数列
- 第二章 oracle 10g体系结构及安全管理
- 美化滚动条jquery.nicescroll.js
- 打印工资条怎么做到每个人都有表头明细_快速制作工资条的方法
- 容器技术之Kubernetes
- 360 无法显示网速
- Python学习之路(2)
- 什么是雷曼时刻(Lehman Moment)
- strlen函数原理
- harry -考级复习2
- iconv命令的使用方法