前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用pyecharts对职位数据进行地图可视化

利用pyecharts对职位数据进行地图可视化

作者头像
Python与Excel之交
发布2021-08-05 14:46:33
6880
发布2021-08-05 14:46:33
举报
文章被收录于专栏:Python与Excel之交

pyecharts 是基于百度开源的Echarts、方便与Python 进行对接、直接可以用于python的一个库。

今天我们利用pyecharts实现职位数据的地图可视化。

安装pyecharts

pyecharts 的安装只需要在命令端输入以下命令。

代码语言:javascript
复制
pip install pyecharts

如果下载失败或者觉得下载太慢,可以用镜像进行下载:

代码语言:javascript
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

pyecharts 目前不再自带地图 js 文件。所以要自行安装对应的地图文件包,如果下载失败或者觉得下载太慢,可以用镜像进行下载。

代码语言:javascript
复制
pip install echarts-countries-pypkg  # 世界地图
pip install echarts-china-provinces-pypkg # 中国省级行政区地图
pip install echarts-china-cities-pypkg # 中国城市地图
pip install echarts-china-counties-pypkg # 中国县区地图
pip install echarts-china-misc-pypkg # 中国区域地图
pip install echarts-united-kingdom-pypkg

小试牛刀

导入需要的模块:

代码语言:javascript
复制
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType 

先简单的绘制出中国地图:

代码语言:javascript
复制
# 数据
data = {'河南': 25, '北京': 65, '河北': 111, '辽宁': 221, '江西': 1, '上海': 22, '安徽': 56, '江苏': 78, '湖南': 9,'浙江': 13, '海南': 62, '广东': 262, '湖北': 87, '黑龙江': 171, '澳门': 61, '陕西': 171, '四川': 67, '内蒙古': 63, '重庆': 93,'云南': 16, '贵州': 12, '吉林': 33, '山西': 312, '山东': 511, '福建': 46, '青海': 71, '天津': 91,'其他': 71}
# 以元组的方式输出数值
data_list = list(zip(data.keys(), data.values())) 
map_ = (
        Map() # 如果想绘制其它图形,可修改Map
        .add(series_name="中国地图",data_pair=data_list,maptype="china")
        .set_global_opts(title_opts=opts.TitleOpts(title="公 众 号 :Python与Excel之交")
             # 设置地图显示最大值
                         ,visualmap_opts=opts.VisualMapOpts(max_=500))
    )
map_.render_notebook()

任务实战

导入数据源:

代码语言:javascript
复制
df = pd.read_csv('D:\数据小刀\爬虫④\前程无忧\前程无忧.csv')
df.head()

我们先对数据源的工作地址,进行字符串的切割,取出上海、广州等城市名称:

代码语言:javascript
复制
df["工作地址"] = df["工作地址/经验要求/学历要求/招聘人数"].str.split(',', expand=True)[0]
df["工作地址"] = df["工作地址"].str.split('-', expand=True)[0]

因为maptype=‘china’时,地图只显示全国省级行政区,数据只能是省级行政区,不能显示城市名称,所以我们需要导入经纬度,绘制散点图。

代码语言:javascript
复制
df1 = pd.read_csv('D:\数据小刀\爬虫④\拉勾网\中国城市地理坐标.csv')
coords = {df1.iloc[i]['地名']: [df1.iloc[i]['经度'], df1.iloc[i]['纬度']] for i in range(len(df1))}

去除没有经纬度的地区和不必要的字符串:

代码语言:javascript
复制
df = df[(df['工作地址'] != '异地招聘')]
df = df[(df['工作地址'] != '工作地址/经验要求/学历要求/招聘人数')]
df = df[(df['工作地址'] != '雄安新区')]

统计每个城市的职位数量,并以元组的方式输出数值:

代码语言:javascript
复制
df_0 = df['工作地址'].astype("str").value_counts()
df_0 = df_0.sort_values(ascending=False)
regions = df_0.index.to_list()
values = df_0.to_list()
data_list = list(zip(regions, values))

设置背景颜色:

代码语言:javascript
复制
geo = Geo(init_opts=opts.InitOpts(theme=ThemeType.DARK))

设置地图类型为中国地图,当maptype等于广东、广州时,可修改为对应的地图:

代码语言:javascript
复制
geo.add_schema(maptype='china')

设置经纬度:

代码语言:javascript
复制
for key, value in coords.items():
    geo.add_coordinate(key, value[0], value[1])

设置图例,数据,散点大小,散点颜色:

代码语言:javascript
复制
geo.add('',data_list, symbol_size=10, itemstyle_opts=opts.ItemStyleOpts(color='blue'))

设置为数据不显示,设置为散点图,当type等于heatmap时可修改为热力图:

代码语言:javascript
复制
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False), type='scatter')

设置地图显示最大值:

代码语言:javascript
复制
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=200),title_opts=opts.TitleOpts(title='公众号:Python与Excel之交'))
geo.render_notebook() # 打开

取出上海的行政区,利用Map进行地图可视化:

代码语言:javascript
复制
df["工作地址"] = df["工作地址/经验要求/学历要求/招聘人数"].str.split(',', expand=True)[0]
df8 = df.工作地址.str.contains('上海-.*') # 利用正则表达式进行匹配
df8 = df[df8]
df8 = df8["工作地址"].str.split('-', expand=True)[1]
df8 = df8.astype("str").value_counts()
df8 = df8.sort_values(ascending=False)
regions = df8.index.to_list()
values = df8.to_list()
data_list = list(zip(regions, values))
map_ = (
        Map(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        .add("",data_pair=data_list,maptype="上海") # 修改地图
        .set_global_opts(legend_opts = opts.LegendOpts(is_show = False)
                         ,title_opts=opts.TitleOpts(title="公 众 号 :Python与Excel之交")
                         ,visualmap_opts=opts.VisualMapOpts(max_=100,is_piecewise=False))
        .set_series_opts(label_opts=opts.LabelOpts(is_show = False,font_size=15))
        
    )
map_.render_notebook()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装pyecharts
  • 小试牛刀
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档