目录
一、背景:
二、应用案例
1)数据源:(excel文件路径:F:\python数据\寒潮来时冬季衣服热卖地区统计1.xlsx)
2)代码部分和修改过程:*引用自大佬的代码(略做修改)
工作业务上需要分析寒潮来时各地区销售数量情况,因为刚接触python,没有基础,所以在站内搜了如何“绘制地图热力图”,看到了大佬的文章,就进行了这一次尝试。
以下记录我在引用大佬代码的时候遇到的问题以及解决方法,单纯做一个学习笔记,大家看个乐。期间还有一些bug的原因还没找到,如果有知道的可以评论区指导一下,感谢!!
大佬(小弥芔)的文章链接如下:Python使用pyecharts库制作地图热力图_小弥芔的博客-CSDN博客_pyecharts热力图
大佬的源代码:
# -*- coding: UTF-8 -*-
import numpy as np
import pandas as pd
from pyecharts.charts import Map
from pyecharts import options as opts
# 读取excel中数据
df = pd.read_excel(r"D:\Sone\CODE\地图热点分布.xlsx",
index_col=None,
header=0,
skiprows=[1],
converters={'City':str},
usecols=['City','GMV'])
# 地图热力图
# 将pandas.DataFrame格式的数据,每一行转为元组tuple,所有数据以列表list输出
data=df.apply(lambda x:tuple(x),axis=1).values.tolist()
gmv=df['GMV'].values
_max =max(gmv)
_min =min(gmv)
map_ = Map()
map_.add("", data, maptype="china", zoom=1)
map_.set_global_opts(
title_opts=opts.TitleOpts(title="Market GMV by city",
pos_right="center",
pos_top="5%"),
visualmap_opts=opts.VisualMapOpts(max_=_max,
min_=_min,
range_color=["#F5EFE7","#CCAD81"]
),
)
map_.render("Market GMV by city.html")
修改过程:
①数据源修改,usecols函数提取的内容修改
#源代码
# 读取excel中数据
df = pd.read_excel(r"D:\Sone\CODE\地图热点分布.xlsx",
index_col=None,
header=0,
skiprows=[1],
converters={'City':str},
usecols=['City','GMV'])
-----------------------------------------------------------
修改后的代码
# 读取excel中数据
df = pd.read_excel(r"F:\python数据\寒潮来时冬季衣服热卖地区统计1.xlsx",
index_col=None,
header=0,
skiprows=[1],
converters={'City':str},
usecols=['City','销售数量'])
print(df)
#!!但是运用结果是空,经过测试发现是因为usecols这个函数的参数错了,但是不知道怎么用字符串参数提取了,就直接改成索引提取了(当时想法:先把代码跑起来,函数参数的问题后再研究)
-----------------------------------------------------------
#直接改成索引提取,修改后的代码
# 读取excel中数据
df = pd.read_excel(r"F:\python数据\寒潮来时冬季衣服热卖地区统计1.xlsx",
index_col=None,
header=0,
skiprows=[1],
converters={'City':str},
usecols=[0,1])
print(df)
#这回跑出来了
结果如下:
②对map函数下的参数进行修改
#大佬的源代码↓↓↓
# 地图热力图
# 将pandas.DataFrame格式的数据,每一行转为元组tuple,所有数据以列表list输出
data=df.apply(lambda x:tuple(x),axis=1).values.tolist()
gmv=df['GMV'].values
_max =max(gmv)
_min =min(gmv)
map_ = Map()
map_.add("", data, maptype="china", zoom=1)
map_.set_global_opts(
title_opts=opts.TitleOpts(title="Market GMV by city",
pos_right="center",
pos_top="5%"),
visualmap_opts=opts.VisualMapOpts(max_=_max,
min_=_min,
range_color=["#F5EFE7","#CCAD81"]
),
)
map_.render("Market GMV by city.html")
-----------------------------------------------------------------------------
#修改后的代码
# 地图热力图
# 将pandas.DataFrame格式的数据,每一行转为元组tuple,所有数据以列表list输出
data=df.apply(lambda x:tuple(x),axis=1).values.tolist()
gmv=df['销售数量'].values
_数值max =max(gmv)
_数值min =min(gmv)
map_ = Map()
map_.add("", data, maptype="china", zoom=1)
map_.set_global_opts(
title_opts=opts.TitleOpts(title="寒潮来时冬季衣服热卖地区统计",
pos_right="center",
pos_top="5%"),
visualmap_opts=opts.VisualMapOpts(max_=_max,
min_=_min,
range_color=["#F5EFE7","#CCAD81"]
),
)
map_.render("Market GMV by city.html")
#但是最后导出的结果不显示颜色,应该是visualmap_opts这个的参数错了。再查,发现是_数值max、_数值min这两个变量数据类型是str
-----------------------------------------------------------------------------
#再次修改代码,改变数据类型
# 地图热力图
# 将pandas.DataFrame格式的数据,每一行转为元组tuple,所有数据以列表list输出
data=df.apply(lambda x:tuple(x),axis=1).values.tolist()
gmv=df['销售数量'].values
_数值max =int(max(gmv))
_数值min =int(min(gmv))
print(_max)
print(_min)
map_ = Map()
map_.add("", data, maptype="china", zoom=1)
map_.set_global_opts(
title_opts=opts.TitleOpts(title="Market GMV by city",
pos_right="center",
pos_top="5%"),
visualmap_opts=opts.VisualMapOpts(
max_=_数值max ,
min_=_数值min ,
range_text=[_max ,_min ],
range_color=["#F5EFE7","#CCAD81"]
),
)
map_.render("Market GMV by city.html")
解决后的最后呈现效果
END
后续相关的知识再更新..