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 Bar

y1 = [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_snapshot

y1 = [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_m
    new_sal = (min+max)/2       # 计算平均薪水
    return new_sal

dict_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 = None
    city = data_job['公司地点'][i]
    if '-' in city:
        ls_city = city.strip().split('-')
        city = ls_city[0]
    else:
        city = city

    for 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:
        continue

for 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也是可以的。

猜你喜欢

转载自blog.csdn.net/Panda4u/article/details/119415418