使用pyecharts对成都java岗位分布做可视化分析——接上篇

tech2026-08-20  1

上一篇文章详细描写了从某个招聘网站爬取某个岗位的详细过程。这次,将使用python中的pyecharts库做一个入门级分析。获取原始数据。 pyecharts库中包含多种作图方式,这次先使用柱状图按城区分类统计招聘数量。 首先,导入需要使用的类,然后先查看一下前五条数据。

from pyecharts.charts import Bar from pyecharts import options import csv with open('file/java招聘.csv')as f: reader = csv.reader(f) next(reader) for i in range(5): print(next(reader)) ['四川格瑞特科技有限公司', 'Java高级开发工程师', '0.8-1.2万/月', "['成都-武侯区', '3-4年经验', '本科', '招若干人']", '2020-09-03 09:27:45', '50-150人'] ['成都盛世普益科技有限公司', 'java开发工程师(偏数据方向),年薪7-15万', '6-8千/月', "['成都-青羊区', '2年经验', '本科', '招若干人']", '2020-09-03 09:27:15', '50-150人'] ['上海梦创双杨数据科技股份有限公司', 'Java中高级开发工程师-成都', '1-3万/月', "['成都-锦江区', '3-4年经验', '本科', '招20人']", '2020-09-03 09:26:34', '1000-5000人'] ['成都一诺非凡广告有限公司', 'Java开发实习生', '6-8千/月', "['成都-武侯区', '无需经验', '大专', '招1人']", '2020-09-03 09:25:07', '150-500人'] ['成都爱易佰网络科技有限公司', 'Java架构师(社招)', '1-2.5万/月', "['成都-武侯区', '在校生/应届生', '本科', '招1人']", '2020-09-03 09:23:27', '50-150人']

可以看到,关于位置的信息在列表的第四列的第一个元素里,关于地区的信息在短横线的后面,这里需要做一下数据清洗。首先将没有给出明确地区的数据排除在外。这里需要用到字符串切割和字符串切片操作。

def prepare_data(): with open('file/java招聘.csv')as f: reader = csv.reader(f) # 越过表头 next(reader) for row in reader: try: new_row = row[3][1:-1].split(',') # print(new_row,type(new_row)) # print(new_row[0][1:-1]) if new_row[0][1:-1] == '成都' or new_row[0][1:-1] == '异地招聘': pass else: district = new_row[0].split('-')[1][:-1] print(district) except: continue

可以看见数据已经清洗成功了

武侯区 青羊区 锦江区 武侯区 武侯区

然后,创建一个字典来统计每个城区出现的次数,城区名字做键,次数为值。在上面的代码上做补充:

def prepare_data(): with open('file/java招聘.csv')as f: reader = csv.reader(f) next(reader) all_district = {} for row in reader: try: new_row = row[3][1:-1].split(',') # print(new_row,type(new_row)) # print(new_row[0][1:-1]) if new_row[0][1:-1] == '成都' or new_row[0][1:-1] == '异地招聘': pass else: district = new_row[0].split('-')[1][:-1] job_num = all_district.get(district,1) job_num += 1 all_district[district] = job_num except: continue # print(all_district) return all_district

到此,我们已经完成了数据准备的过程,接下来使用pyecharts作图就可以啦!

{'武侯区': 71, '青羊区': 28, '锦江区': 36, '高新区': 167, '温江区': 7, '双流区': 16, '郫都区': 13, '金牛区': 20, '龙泉驿区': 3, '天府新区': 6, '崇州市': 2, '成华区': 8, '新津县': 2}

由于返回的数据是字典类型,所以使用了列表生成式来将数据转换成列表类型。

def create_bar(): # 创建柱状图对象 bar = Bar() # 关联数据 districts = [key for key in prepare_data().keys()] nums = [value for value in prepare_data().values()] bar.add_xaxis(districts) bar.add_yaxis('招聘量', nums) # 设置图表标题,隐藏图表图例 bar.set_global_opts(title_opts=options.TitleOpts( title='成都java招聘城区分布', pos_left='300' ), legend_opts=options.LegendOpts( is_show=False ) ) # 制作图表 bar.render('图表/成都java招聘分布.html') if __name__ == '__main__': create_bar()

最后,来看一下生成的图表吧! 虽然只爬取了前十页数据,排除了无具体位置信息的数据和异地招聘的数据,肉眼可见,高新区一骑绝尘!其次是地理位置紧挨着高新区的武侯区,租房要住在这两个区,上班才方便哦!

最新回复(0)