本文主要是介绍pyecharts安装和爬取前程无忧招聘网站数据分析(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一、安装pyecharts
1. 安装pyecharts
2. 生成方式
(1)生成html文件
(2) 直接生成图片
二、实际操作
1. 生成工作地图
2. 生成全国python平均薪资分布图
当我第一次看见pyecharts,就发现它是一个非常厉害的绘图工具,相比较于matplotlib,它不仅仅是动态的,更有很多的绘图种类,例如饼图、折线图、箱型图、地图、词云图等等。大家可以去官网先去预览,点击进入官网
在这里找到示例,可以看到有很多的图形。同时也能看到pyecharts的强大。
在学习的时候完全可在官网上面学习,上面有很代码。
那么废话少说,开始安装pyecharts。
一、安装pyecharts
1. 安装pyecharts
pyecharts有很多的版本,有新版本1.××和旧版本0.5×之分,并且这两个版本不兼容,而且旧版本不维护了,但是现在csdn上面很多都是旧版本的pyecharts。
可以看下这是新旧版本引入同一个库的写法。
#from pyecharts import Bar #旧版本的写法
from pyecharts.charts import Bar #新版本的写法
我个人建议使用新版本,以下就是新版本下载方式,
pip install pyecharts==0.1.9.4
2. 生成方式
当安装完pyecharts才完成了一小半,pyecharts的生成图像的方式有两种,生成html文件和直接生成图。
(1)生成html文件
# 绘制直方图
from pyecharts.charts import Bary1 = [1,4,5,8,15,6]
y2 = [2,9,6,5,1,4]bar = Bar()
bar.add_xaxis(['1','2','3','4','5','6'])
bar.add_yaxis('1',y1)
bar.add_yaxis('2',y2)bar.render('实例1.html') # 一定要加html后缀名,不然点不进浏览器
结果生成了一个html文件实例1.html,打开该文件,就会得到该图片。
(2) 直接生成图片
pyecharts输出一般都是html文件,当直接生成图片(静态图片),就需要安装渲染包snapshot_selenium:把html文件转换成png文件格式。
pip install snapshot-selenium
当然只是安装snapshot_selenium是不够的,还需要安装浏览器驱动器Chromedriver.exe,也就是我上一期安装的,大家可以返回看看。上一期安装Chromedriver.exe
安装完后一定要把Chromedriver.exe 的位置放在运行的文件在同一个包下,例如,
# 绘制直方图
from pyecharts.charts import Bar
from snapshot_selenium import snapshot
from pyecharts.render import make_snapshoty1 = [1,4,5,8,15,6]
y2 = [2,9,6,5,1,4]bar = Bar()
bar.add_xaxis(['1','2','3','4','5','6'])
bar.add_yaxis('1',y1)
bar.add_yaxis('2',y2)make_snapshot(snapshot, bar.render(), r"C:\Users\86178\Desktop\实例1.png")
二、实际操作
1. 生成工作地图
要想生成地图,还需要下载以下关于地图信息的库。
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
大家还需要有一个关于全国的城市列表,比如说在爬取全国招聘信息时,它给出的地址信息是某个省的城市,而要统计全国各省的招聘信息就需要将城市转换到所在的省市。
(大家在评论区私信我,留下QQ邮箱,我会及时发给大家)。格式就像以下这样。
直接就给出代码了,主要就是将城市转换为所在的省市,然后绘制地图就是导入一个列表,列表中的元素是(城市,工作份数)
其实完全自己不用写代码,直接引用官网上面的代码。自己仅仅就是做好数据集就行了。
# 将部分地区的名字换成它对应的省份
fo =open('中国城市.txt','r')
fd = fo.readlines()
dict_city = {}
for i in fd:line = i.strip().split(' ')dict_city[line[0]] = dict_city.get(line[0],[]) + [line[1]]
dict_local_new = {}
for i in dict_city.items():for j in list_local:if j[0] in i[1]:dict_local_new[i[0]] = dict_local_new.get(i[0],0) + j[1]
list_local_new = list(dict_local_new.items())# 配色
pieces=[{'max':1,'color':'#FFFFF0'},{'min':1,'max':9,'color':'#FFE0E0'},{'min':10,'max':99,'color':'#FEC0C0'},{'min':100,'max':499,'color':'#FD9090'},{'min':500,'max':999,'color':'#FC6060'},{'min':1000,'max':9999,'color':'#FB3030'},{'min':10000,'color':'#DD0000'}]def use_pyecharts(city_string,true_city,data_info):provience_city = (Map(init_opts=opts.InitOpts(width="1000px", height="900px", page_title=city_string)).add(city_string,data_info,maptype=true_city, # 切换至其它地方).set_global_opts(title_opts=opts.TitleOpts(title='{}'.format(city_string),title_target="blank", # 新窗口打开subtitle='{}'.format(city_string), # 副标题subtitle_target="self"), # 当前窗口打开visualmap_opts=opts.VisualMapOpts(is_show=True, # 视觉映射配置max_=200,is_calculable=True, # 是否显示拖拽用的手柄is_piecewise=True, # 是否为分段型range_text=["High", "Low"],border_color="#000",pieces=pieces), # 两端文本tooltip_opts=opts.TooltipOpts(trigger="item", # 触发类型trigger_on="mousemove|click", # 提示框的触发条件formatter="{b}:{c}份工作") # 标签内容格式,这里采用的字符串模板).set_series_opts(label_opts=opts.LabelOpts(is_show=True)).render('provience_{}.html'.format(city_string)))use_pyecharts('全国python工作分布图','china',list_local_new)
2. 生成全国python平均薪资分布图
# 处理薪水,单位为千每月
def change_sal(string,old_sal,num_m):sal = old_sal.replace(string, '')min, max = sal.split('-')min , max = eval(min),eval(max)min *= num_m # 改变单位max *= num_mnew_sal = (min+max)/2 # 计算平均薪水return new_saldict_loc_sal = {} # 地点对应的薪水
for i in range(len(data_job['薪水'])):sal = str(data_job['薪水'][i])if '万/月' in sal:sal = change_sal('万/月', sal, 10)elif '元/天' in sal:o_sal = sal.replace('元/天', '')sal = eval(o_sal) * (30 / 1000)elif '万/年' in sal:sal = change_sal('万/年', sal, 10 / 12)elif '千/月' in sal:sal = change_sal('千/月', sal, 1)else:sal = Nonecity = data_job['公司地点'][i]if '-' in city:ls_city = city.strip().split('-')city = ls_city[0]else:city = cityfor c in dict_city.items():if city in c[1]:city = c[0]if sal !=None:dict_loc_sal[city] = dict_loc_sal.get(city,[]) + [sal]else:continuefor loc_sal in dict_loc_sal.items(): # 计算所有平均值avg_sal = sum(loc_sal[1])/len(loc_sal[1])dict_loc_sal[loc_sal[0]] = avg_sal# 配色
pieces=[{'max':1,'color':'#FFFFF0'},{'min':2,'max':5.999999,'color':'#FFE0E0'},{'min':6,'max':8.999999,'color':'#FEC0C0'},{'min':9,'max':12.999999,'color':'#FD9090'},{'min':12,'max':15.999999,'color':'#FC6060'},{'min':16,'max':20.999999,'color':'#FB3030'},{'min':21,'color':'#DD0000'}]list_loc_sal = list(dict_loc_sal.items())
use_pyecharts('全国python平均薪水','china',list_loc_sal)
三、总结
用pyecharts绘图时,可以借助官网上面的代码,上面的图也很多。要是自己全部将其掌握还是有一定难度的。另外一些简单的图用matplotlib也是可以的。
这篇关于pyecharts安装和爬取前程无忧招聘网站数据分析(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!