不管是学生还是工作的小伙伴,估计都对不同岗位工作几年的薪酬水平比较感兴趣。
本文对爬取下来的信息进行清洗处理,以深圳风控建模岗为例,分析不同工作年限岗位薪资水平如何,招聘最看重面试者什么能力。
如果想了解其他城市的工作岗位,可以在文后留言或私信我,在空余时间我可以帮忙实现一下。
爬虫效果
把获取的信息转成数据框
清洗数据
删除工作岗位非风控建模的招聘信息
薪酬水平字段细分处理
绘制岗位信息词云图
先来看下批量爬取招聘网站上工作岗位的招聘信息文章获取的招聘信息:
****************************************
招聘中
风控算法工程师(大模型,内容安全方向) 30-55K
广州 5-10年 本科
感兴趣 立即沟通
完善在线简历
新增附件简历
...
五险一金补充医疗保险定期体检全勤奖年终奖股票期权带薪年假员工旅游免费班车通讯补贴交通补助包吃节日福利住房补贴零食下午茶
====================
职位描述
微信扫码分享
举报
风控/安全策略经验
大模型
内容安全
岗位职责:
1、负责公司大模型内容安全、隐私安全等业务风险领域的治理方案和相关风控模型开发
2、针对不同的业务场景,选择合适的算法,进行训练和优化,推动算法落地并持续迭代
岗位要求:
1、本科以上学历,至少3年业务安全、内容安全等策略经验
2、有过隐私数据识别项目经验优先
3、对数据敏感,具有较强的逻辑思维和数据分析能力,掌握数据分析工具sql和excel等
4、熟悉数据科学、机器学习、社群挖掘的相关知识,有成功实践的算法项目
覃女士
3日内活跃
唯品会
·
招聘主管
****************************************
招聘中
风控算法工程师 25-50K·14薪
广州 5-10年 本科
感兴趣 立即沟通
完善在线简历
新增附件简历
...
团建聚餐零食下午茶员工旅游带薪年假股票期权绩效奖金年终奖五险一金
====================
职位描述
微信扫码分享
举报
Python
岗位职责:
1、独立完成建模方案设计、模型开发及部署,运用各类算法开发包括营销响应、流失预警等营销模型及反欺诈规则、申请评分、额度模型、行为评分、催收评分等风险模型,并对现有模型进行优化完善;
2、配合商务进行客户需求沟通、方案讲解及咨询支持,对客户提出的业务痛点提供有效的解决方案及量化的决策建议;
3、充分了解客户业务端审批流程及风险表现,结合用户特征,制定或优化贷前、贷中及贷后风控策略;为客户提供用户分层筛选、差异化营销手段等策略建议;
4、根据客户需求,独立带领项目成员进行咨询项目的实施,包括方案设计、项目计划安排、实施过程管理、项目质量把控、报告撰写及交付汇报;
5、其他创新探索工作:深入挖掘用户行为序列数据,设计特征维度框架及指标体系结构,进行特征开发;探索如图算法等创新算法实践及应用,并进行充分工程验证后推广应用在已有业务中。
岗位要求:
1、本科及以上学历,数学、统计学、计算机等相关专业优先;6年以上银行、持牌消金、头部互金、金融科技公司模型及策略相关工作经验;
2、至少能熟练使用Python/Spark/R其中一种分析及建模工具,数据挖掘及建模经验丰富,能够有效利用LR、XGBoost、LightGBM等机器学习算法以及神经网络等深度学习算法构建特征与模型;
3、对零售信贷市场、信贷产品形态有一定的认知度,对全生命周期风控管理流程有深刻的理解,并掌握各环节的风控要点及风控策略制定逻辑;
4、具备独立思考的能力,逻辑严谨,对数据敏感,善于发现. 探索并解决问题,自我驱动力强;
5、具备较强的抗压能力,踏实、勤奋、细心,愿意并乐于接受新尝试、新挑战,探索创新主动性强。
郭先生
3日内活跃
至久科技
·
运营总监
****************************************
招聘中
风控算法工程师 23-35K
广州 5-10年 本科
感兴趣 立即沟通
完善在线简历
新增附件简历
节日福利带薪年假股票期权年终奖定期体检五险一金
====================
职位描述
微信扫码分享
举报
Python
SQL
风控/安全策略经验
计算机相关专业
金融机构策略开发/建模经验
1、本科以上学历,计算机、统计学、人工智能等相关专业优先。
2、熟悉数据科学相关方法,可以将具体业务目标转化成技术目标、可以完成对实现项目增益目标所需要的数据分析挖掘、建模、A/B实验设置的整体方案设计,并可以为最终业务成效负责。
3、然悉多种主流算法:GBDT/ESMM/XGBO0T等,熟悉分布式计算框架,如Hadoop、Spark,至少掌握一种深度学习框架:TensorFlow。
4、有一定自动化建模、自学习等方面的相关经验,可以设计实现通过特征衍生自动挖掘关联表的有效特征信息,获取全面特征,有一定能力解决实际建模时:数据缺失、数据不平衡、小样本数据、特征抽取等相关瓶颈问题。
5、有财富领域/营销领域相关数据分析、建模领域实践项目经验优先
张女士
3日内活跃
同盾科技
·
HR
****************************************
招聘中
高级风控建模师 20-30K
广州 3-5年 本科
感兴趣 立即沟通
完善在线简历
新增附件简历
...
五险一金加班补助年终奖员工旅游通讯补贴交通补助节日福利零食下午茶团建聚餐带薪年假
====================
职位描述
微信扫码分享
举报
SQL
SAS
Java
消费金融行业
风控建模
风控模型
岗位职责
1、负责数据分析工作,挖掘数据价值,拟定各种业务主题的数据分析方案和流程;
2、根据业务目标,负责开发应用于贷前审批、贷中监控、贷后催收、反欺诈等业务的数学模型;
3、负责数据质量和模型性能监控体系搭建的相关工作;
深度挖掘用户数据,建立用户画像,设计风险评估模型,控制信贷风险。
任职要求:
1、本科及以上学历,3年以上相关行业工作经验,对风控有实际操作经验,理解风控策略和模型,熟悉策略分析的相关方法;
2、具有数据处理、分析或建模经验,具备消费金融行业从业经验者优先;
3、熟悉掌握SQL/SAS/R/Python/Java等至少一种数据分析工具或语言工具;
4、熟悉基础数据挖掘模型,如回归、决策树、SVM、神经网络等算法
5、文字能力及表达能力强,具备跨部门沟通能力,具备较强分析解决问题能力。
宾女士
刚刚活跃
智租
·
HR
首先把爬虫循环获取的列表转成数据框,具体如下:
import pandas as pd
date = pd.DataFrame({'all_job_yq':all_job_yq, 'all_zw_desc':all_zw_desc})
display(date.head(5))
得到结果:
其中all_job_yq列存储岗位的基本信息,all_zw_desc列存储岗位要求描述和单位相关信息。
date.shape
(183, 2)
date.all_job_yq[4].split('\n')
['招聘中',
'风控建模工程师 15-30K·14薪',
'深圳 3-5年 本科',
'感兴趣 立即沟通',
'完善在线简历',
'新增附件简历',
'...',
'五险一金补充医疗保险定期体检年终奖加班补助全勤奖带薪年假餐补团建聚餐免费工装生日福利']
date.all_zw_desc[1].split('\n')
['职位描述',
'微信扫码分享',
'举报',
'机器学习',
'风控算法',
'Python',
'岗位职责:',
'1、负责风控业务各环节的信用及反欺诈模型开发,包括但不限于贷前、贷中、催收等阶段的模型开发;',
'2、对海量数据进行特征工程工作,运用机器学习、深度学习对结构化和非结构化数据、时间序列数据进行特征挖掘;',
'3、具有大数据清洗挖掘经验,对各类底层数据清洗整合,从各维度挖掘出用户的风险特征,开发模型准确评估用户的信用风险和欺诈风险,支撑业务发展;',
'4、深入理解业务,研究探索智能风控领域新技术,并应用于业务中解决实际问题,持续提升风控效果。',
'任职要求:',
'1、计算机、数学相关专业本科及以上学历优先,3年以上算法相关工作经验;',
'2、优秀的编码能力,扎实的数据结构和算法功底;',
'3、对技术有好奇心,对机器学习、深度学习等算法领域有研究热情,熟练掌握常用的机器学习算法;',
'4、优秀的分析问题和解决问题的能力,有良好的沟通表达能力和团队精神,有较宽的视野,能快速学习新事物。',
'夏女士',
'3日内活跃',
'深圳冠晨',
'·',
'HR']
接着对数据框进行数据清洗,获取岗位名称、薪酬水平、公司名称、工作年限、学历要求等信息,并生成相应的数据框,代码如下:
job = []
salr = []
comp = []
addr = []
year = []
educ = []
zw_desc = []
for i in range(len(date)):
sub_job = date.all_job_yq[i].split('\n')[1].split(' ')[0]
job.append(sub_job)
sub_salr = date.all_job_yq[i].split('\n')[1].split(' ')[1]
salr.append(sub_salr)
sub_comp = date.all_zw_desc[i].split('\n')[-3]
comp.append(sub_comp)
sub_addr = date.all_job_yq[i].split('\n')[2].split(' ')[0]
addr.append(sub_addr)
sub_year = date.all_job_yq[i].split('\n')[2].split(' ')[1]
year.append(sub_year)
sub_educ = date.all_job_yq[i].split('\n')[2].split(' ')[2]
educ.append(sub_educ)
sub_zw_desc = date.all_zw_desc[i]
zw_desc.append(sub_zw_desc)
sub_date = pd.DataFrame({'job':job, 'salr':salr, 'comp':comp, 'addr':addr, 'year':year, 'educ':educ, 'zw_desc':zw_desc})
sub_date.head(5)
得到结果:
可以发现这时的数据已经初步是我们想分析的数据了。不过由于boss直聘中搜索关键词获取的岗位不太准确,job中有一些不是风控建模的岗位也混进来了。
接下来我们对工作岗位非风控建模的行进行删除。
四、删除工作岗位非风控建模的招聘信息 接着通过定义函数,把含有非风控建模岗关键词的行标记为1,否则标记为0,具体代码如下:
def del_var(x):
del_var = ['策略分析师',
'数据分析师',
'数据决策',
'风控策略',
'风控专员',
'风控政策',
'芯片',
'产品经理',
'法务',
'合规',
'基金',
'财务',
'程序化',
'经纪业务',
'soc',
'风控产品',
'游戏',
'电气',
'ESL',
'3D',
'期货',
'数据商务',
'角色',
'渲染设计师',
'审核',
'审计'
]
lab = 0
for i in del_var:
if i in x:
lab = 1
break
return lab
sub_date['is_del'] = sub_date['job'].apply(del_var)
display(sub_date['is_del'].value_counts())
得到结果:
0 114
1 69
Name: is_del, dtype: int64
可以发现有69行是非风控建模岗的数据,我们把这些行进行删除,具体代码如下:
sel_sub_date = sub_date[sub_date['is_del'] == 0]
sel_sub_date.shape
得到结果:
(114, 8)
五、薪酬水平字段细分处理 为了方便统计,我们把薪酬水平拆分成最小月薪、最大月薪、n薪等指标。
由于薪酬存放有些是类似25-45k·15薪结构,有些是20-30k结构,我们首先把具体月薪拆出来,具体代码如下:
def salr_deal(x):
return x.split('·')[0]
sel_sub_date['salr_del'] = sel_sub_date['salr'].apply(salr_deal)
sel_sub_date['salr_del']
得到结果: 1 20-35K
2 25-40K
3 15-30K
4 15-30K
5 35-55K
172 Risk
174 35-55K
176 20-35K
180 14-19K
181 30-40K
接着把一年几个月的薪酬数据清洗出来,如果未写几个月的填12个月,具体代码如下: def salr_mth(x):
try:
mth = x.split('·')[1].replace('薪', '')
return mth
except:
return 12
sel_sub_date['salr_mth'] = sel_sub_date['salr'].apply(salr_mth)
sel_sub_date['salr_mth']
得到结果: 1 12
2 12
3 12
4 14
5 16
..
172 12
174 14
176 13
180 16
181 12
接着把单月最小月薪和最大月薪算出来,具体代码如下: def salr_min(x):
try:
return x.split('-')[0]
except:
return 0
def salr_max(x):
try:
return x.split('-')[1].replace('K', '')
except:
return 0
sel_sub_date['salr_min'] = sel_sub_date['salr_del'].apply(salr_min)
sel_sub_date['salr_max'] = sel_sub_date['salr_del'].apply(salr_max)
sel_sub_date['salr_min']
得到结果: 1 20
2 25
3 15
4 15
5 35
172 Risk
174 35
176 20
180 14
181 30
接着处理没有薪酬的的行,并计算最低年收入和最高年收入,代码如下: sel_sub_date_f = sel_sub_date[sel_sub_date['salr_max']!=0]
sel_sub_date_f = sel_sub_date_f[sel_sub_date_f['salr_del']!='-']
sel_sub_date_f['year_salr_min'] = sel_sub_date_f['salr_mth'].astype(float)*sel_sub_date_f['salr_min'].astype(float)
sel_sub_date_f['year_salr_max'] = sel_sub_date_f['salr_mth'].astype(float)*sel_sub_date_f['salr_max'].astype(float)
sel_sub_date_f.to_csv('sel_sub_date_f2.csv',encoding='gbk')
得到结果: 然后看下不同工作年限要求对应的单月收入,其中单位为K。 从上表可知,工作年限1-3年,最低月收入基本都在2万以下。工作年限3-5年,最低月收入大部分分布在1万5到3万5。 工作年限5-10年,最低月收入大部分分布在2万到4万。工作年限10年以上,最低月收入基本高于4万。 接着看下年收入,应用月薪✖计数月就可以得到大致的年收入,结果如下: 可以发现10年以上工作经验年收入基本都在50万以上。 六、绘制岗位信息词云图 最后,把岗位信息去除无用词,并分词后绘制词云图,具体代码如下: text = []
for i in range(len(sel_sub_date['zw_desc'])):
text.append(sel_sub_date['zw_desc'][i])
text = str(text).replace('\n', '')
rm_list = ['和', '的', 'n1', 'n2', 'n3', 'n4', 'n5', 'n', '等', '与', '描述', '分享', '职位', '扫码', '猎头', '微信', '有', '举报', '岗位', '职责']
for i in rm_list:
text = text.replace(i, '')
cut_text=jieba.cut(text)
result=" ".join(cut_text)
font=r'C:\Windows\Fonts\simfang.ttf'
wc=WordCloud(
background_color='white', # 设置背景色,默认为黑色
font_path=font, #指定文字路径
width=500, # 设置背景宽
height=350, # 设置背景高
max_font_size=50, # 最大字体
min_font_size=10, # 最小字体
mode='RGBA' # 当参数为“RGBA”并且background_color不为空时,背景为透明
)
wc.generate(result) # 根据分词后的文本产生词云
wc.to_file(r"wordcloud.png") # 保存绘制好的词云图
plt.imshow(wc) # 以图片的形式显示词云
plt.axis("off") # 关闭图像坐标系,即不显示坐标系
plt.show() # plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。其后必须有plt.show()才能显示
得到结果:
可以发现风险、模型、业务、数据、算法、机器学习、经验等字比较大,说明这些内容在风控建模岗位招聘中提到的次数比较多。
也说明风控建模岗位比较看重面试者对业务的理解、对数据算法的经验。
至此,应用Python分析深圳不同工作年限风控建模岗薪资水平,招聘最看重面试者什么能力已讲解完毕,感兴趣的同学可以自己跟着代码实现一下。
【部分群限时免费进】分群讨论学习Python、玩转Python、风控建模【29.9元进】、人工智能、数据分析相关问题,还提供练习数据资料、招聘内推信息、优秀文章、学习视频、公众号文章答疑,也可交流工作中遇到的难题。如需添加微信号19967879837,加时备注想进的群,比如学习python。
【python爬虫】批量识别pdf中的英文,自动翻译成中文下
【Python】【爬虫】最近想买电脑,用Python爬取京东评论做个参考
限时免费进群
19967879837
添加微信号、手机号