明确目标:利用pandas对数据进行查询操作,并利用pyecharts对地理位置可视化,有些地理位置在地理库中不存在,如雄安新区等,需要我们添加地理位置。
pyecharts中文文档
我们仍然使用招聘数据:数据地址
import pandas as pd
import numpy as np
data = pd.read_excel('数据挖掘.xlsx',header = None)
df = pd.DataFrame(data)
df.index = df.index.set_names(['key'])
df.columns = ['website','position','company','location','low','high','type','education','experience']
df.head()
输出结果:
website | position | company | location | low | high | type | education | experience | |
---|---|---|---|---|---|---|---|---|---|
key | |||||||||
0 | https://jobs.51job.com/hangzhou-bjq/112861375.... | 商品主管/经理 | 浙江迪欧达实业有限公司 | 杭州 | 7.0 | 10.0 | 民营公司 | 大专 | 3-4年经验 |
1 | https://jobs.51job.com/wuhan/95235653.html?s=0... | 数据挖掘工程师 | 环球名车汽车服务湖北股份有限公司 | 武汉 | 4.0 | 8.0 | 民营公司 | 大专 | 1年经验 |
2 | https://jobs.51job.com/changsha-yhq/115208833.... | 大数据挖掘治理工程师 | 湖南云解析科技有限公司 | 长沙 | 8.0 | 15.0 | 民营公司 | 无学历要求 | 无工作经验 |
3 | https://jobs.51job.com/guangzhou-thq/115208435... | 数据挖掘工程师 | 网易集团 | 广州 | 12.0 | 25.0 | 上市公司 | 本科 | 2年经验 |
4 | https://jobs.51job.com/sanmenxia/115240348.htm... | 数据挖掘工程师 | 河南中消物联科技有限公司 | 三门峡 | 8.0 | 15.0 | 民营公司 | 本科 | 无工作经验 |
我们对location进行计数不同,即统计数据挖掘类职位在各个城市的分布数量。
#按照location计数不同
ct = df.groupby('location').count()
for index, row in ct.iterrows():
dic = (index,row['website'])
print(dic,",",end='')
输出结果如下:
('三门峡', 4) ,('上海', 473) ,('东莞', 17) ,('中山', 6) ,('临沂', 1) ,('义乌', 1) ,('乐山', 1) ,('云南省', 1) ,('佛山', 25) ,('兰州', 2) ,('内江', 1) ,('北京', 158) ,('南京', 98) ,('南宁', 4) ,('南昌', 8) ,('厦门', 23) ,('合肥', 44) ,('唐山', 3) ,('商丘', 1) ,('嘉兴', 8) ,('四川省', 1) ,('大连', 7) ,('天津', 5) ,('太原', 1) ,('孝感', 1) ,('宁波', 20) ,('宜昌', 1) ,('常州', 15) ,('常德', 1) ,('广东省', 1) ,('广州', 344) ,('徐州', 5) ,('德州', 1) ,('惠州', 5) ,('成都', 83) ,('扬州', 2) ,('新乡', 1) ,('无锡', 13) ,('昆山', 6) ,('昆明', 16) ,('普洱', 1) ,('杭州', 152) ,('梅州', 1) ,('武汉', 104) ,('汕头', 4) ,('汕尾', 1) ,('江门', 2) ,('沈阳', 21) ,('泉州', 3) ,('洛阳', 3) ,('济南', 14) ,('海口', 6) ,('淄博', 1) ,('深圳', 288) ,('温州', 3) ,('湖州', 3) ,('湘潭', 1) ,('烟台', 4) ,('珠海', 17) ,('盐城', 1) ,('石家庄', 3) ,('福州', 25) ,('绍兴', 2) ,('肇庆', 1) ,('苏州', 55) ,('荆州', 1) ,('荆门', 1) ,('西安', 41) ,('许昌', 2) ,('贵阳', 9) ,('连云港', 1) ,('遂宁', 1) ,('郑州', 18) ,('重庆', 33) ,('金华', 2) ,('镇江', 2) ,('长春', 6) ,('长沙', 44) ,('雄安新区', 2) ,('青岛', 18) ,('韶关', 1) ,('马鞍山', 1)
复制输出结果到data,并添加地理库中不存在的地点的经纬度json文件,最后进行可视化
from pyecharts import Geo
data = [('三门峡', 4) ,('上海', 473) ,('东莞', 17) ,('中山', 6) ,('临沂', 1) ,('义乌', 1) ,('乐山', 1) ,
('云南', 1) ,('佛山', 25) ,('兰州', 2) ,('内江', 1) ,('北京', 158) ,('南京', 98) ,('南宁', 4) ,
('南昌', 8) ,('厦门', 23) ,('合肥', 44) ,('唐山', 3) ,('商丘', 1) ,('嘉兴', 8) ,('四川', 1) ,
('大连', 7) ,('天津', 5) ,('太原', 1) ,('孝感', 1) ,('宁波', 20) ,('宜昌', 1) ,('常州', 15) ,
('常德', 1) ,('广东', 1) ,('广州', 344) ,('徐州', 5) ,('德州', 1) ,('惠州', 5) ,('成都', 83) ,
('扬州', 2) ,('新乡', 1) ,('无锡', 13) ,('昆山', 6) ,('昆明', 16) ,('普洱', 1) ,('杭州', 152) ,
('梅州', 1) ,('武汉', 104) ,('汕头', 4) ,('汕尾', 1) ,('江门', 2) ,('沈阳', 21) ,('泉州', 3) ,
('洛阳', 3) ,('济南', 14) ,('海口', 6) ,('淄博', 1) ,('深圳', 288) ,('温州', 3) ,('湖州', 3) ,
('湘潭', 1) ,('烟台', 4) ,('珠海', 17) ,('盐城', 1) ,('石家庄', 3) ,('福州', 25) ,('绍兴', 2) ,
('肇庆', 1) ,('苏州', 55) ,('荆州', 1) ,('荆门', 1) ,('西安', 41) ,('许昌', 2) ,('贵阳', 9) ,
('连云港', 1) ,('遂宁', 1) ,('郑州', 18) ,('重庆', 33) ,('金华', 2) ,
('镇江', 2) ,('长春', 6) ,('长沙', 44) ,('雄安新区', 2) ,('青岛', 18) ,('韶关', 1) ,('马鞍山', 1)]
geo = Geo("数据挖掘岗位数量", title_color="#fff", title_pos="center",
width=1000, height=800, background_color='#404a59')
#添加新位置的文件文件书写格式如下
# {
#"普洱":[101,22.79],
#"雄安新区":[116.117106,39.164298]
# }
geo.add_coordinate_json('newplace.json')
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0,100],
visual_text_color="#fff", symbol_size=20, is_visualmap=True)
geo.show_config()
geo.render()
可视化结果如下: