就业系统(三):数据处理及可视化

一、批量处理数据

1.读取文件,如下所示(参数:low_memory指确保数据类型不混淆;converters这里是将work_demand的数据类型转换为str类型)

df = pd.read_csv('C:\\Users\\独为我唱\\Desktop\\data_sum\\all.csv', encoding='gbk' , low_memory=False,converters={'work_demand':str})
idjob_namework_demandcompany_localecompany_nameguimojob_salarydemand
01JavaSpring,MyBatis杭州深圳市德科信息技术有限公司1000-9999人8千-1万 · 14薪大专
12JavaJava,Spring,后端开发,MySQL 杭州上海井星信息科技有限公司20-99人1.5万-2.2万大专

2.删除工作岗位中包含实习生的行数据,删除工作岗位为空的数据并更新

df = df[df['job_name'].str.contains('实习') ==False]    #删除实习生
index = df['job_name'].notnull()   #删除工作名为空的行
df = df[index]
df = df.reset_index(drop=True)   #更新

3.提取薪资单位统一为K,只得到数字

a = df['job_salary'].copy()
for i in range(len(a)):
    a[i] = a[i].replace('\t','').replace('\n','').replace('\r','').replace(' ','')
    a[i] = re.sub(r'·(.*)','',a[i])   #剔除·后的信息

最终job_salary列的数据均为float型的平均值数字

二、数据可视化

1.展示Java各项技能占比

(1)先取出Java工作岗位的技能要求

a = df['work_demand'].str.split()
list1 = []
x = a.copy()
for i in range(len(x)):
    if 'Java' in df['job_name'][i]:
        list1 += x[i]

(2)再按逗号为分割,取出排名前六的数据,形成以字典为元素的列表

newlist = []
for ele in list1:
    newlist += ele.split(',')
newlist = [x.strip() for x in newlist]   #这两行是为了使原df的工作要求单个呈现以逗号分割
res = dict()
for a in set(newlist):    #这里采取集合的方式,排除重复项
    res[a] = newlist.count(a)   #count方法是取出不同工作要求出现的次数
ll = sorted(res.items(),key=lambda item:item[1], reverse=True) #按从大到小排序每种技能的出现次数,items是以列表返回可遍历的(键, 值) 字典。
ll = ll[0:6]    #取出list前6个值

(3)再将元素为字典的列表拆分,得到符合前端传值要求的类型

abi_num = []
abi_name = []
for i in range(len(list1)):
    if i < 6:
        abi_num.append(list1[i][1])
        abi_name.append(list1[i][0])
abi_snum=[]
for i in range(len(abi_name)):
    dict = {}
    dict['value'] = abi_num[i]
    dict['name'] = abi_name[i]
    abi_snum.append(dict)

2.取出java在各地区的薪资图,一定将地区与工作类型java类分组

dff = df.loc[df['job_name'] == 'Java']
grouped2 = dff.groupby([df['job_name'], df['company_locale']])
#groupby函数主要的作用是进行数据的分组以及分组后地组内运算
a = grouped2['job_salary'].mean()   #取出Java岗位在不同地区的平均值
a = a.map(lambda x: int(x))     #将得到的平均值全部化为int型
java_cities_price = a.values.tolist()  #转换为列表类型

3.取出不同学历下的薪资值

gp = df.groupby('demand') #将学历和工作薪资分组,使用mean求出薪资平均值,并根据平均值排序
a = gp['job_salary'].mean().sort_values(ascending=False)
job_price_index = a.index.tolist()  #使用两个列表分别保存学历名和其对应的薪资值
job_price = a.values.tolist()
for i in range(len(job_price)):
    job_price[i] = int(job_price[i])   #取整

4.采用render方法将上述结果传递到前端页面的JavaScript中,采用生成JavaScript对象的方式渲染到浏览器上。最后采用echarts将数据可视化出来。详细代码见第一章。

 

参考链接

groupby函数详解:https://www.cnblogs.com/Yanjy-OnlyOne/p/11217802.html

                               https://blog.csdn.net/weixin_42782150/article/details/90716533

 python拉勾网职位分析:https://nbviewer.jupyter.org/github/China-LuoYaxiong/ipynb/blob/master/%E6%8B%89%E5%8B%BE%E7%BD%91%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E8%81%8C%E4%BD%8D%E5%88%86%E6%9E%90.ipynb#%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E6%8A%80%E8%83%BD%E8%AF%8D%E4%BA%91%E5%9B%BE

python中map函数和lambda函数:https://blog.csdn.net/weixin_43283397/article/details/95627104

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值