利用python核算工资_利用Python对数据分析岗位进行分析

作为一名2020届即将毕业的大学生来说,我觉得下半学期最重要的两件事情就是找实习和顺利毕业。我本科读的是统计学专业,因此我很想找一份数据分析的工作。所以爬取了前程无忧招聘网站的数据,通过分析并对这个岗位有个大体的理解。

一 、明确问题

在对数据分析之前,我们必须清楚的是,我们的目的是什么?拿这个来说,我主要想知道数据分析岗位在那个城市分布较多?平均薪资多少?学历要求情况?技术要求是什么 ?等问题。接下来,我们通过Python中的Pandas、Numpy、matplotlib等库进行数据分析。

二、理解数据本文数据来源于前程无忧招聘信息网

导入数据,将原来存放在Excel中的数据导入到Python中

#导入pandas库

import pandas as pd

import numpy as np

from pandas import DataFrame,Series

df=pd.read_excel(r"E:\前程无忧网招聘.xlsx")

3.查看数据的字段,对数据有个大体的了解

df.head()#查看df的前五行数据

从上面的数据中可以看出,数据采集的过程中字段包括,工作名称、年薪、所在公司、招聘人数、工作地点、详细职位等。字段3所包含信息较多,不方便分析。接下来我们对数据进行处理。

三、数据处理

1. 对数据进行分列

fenlie=df["字段3"].str.split("|",5,True)#对字段3所在的列,进行分列处理

c1=fenlie[[0]]

c1=c1[0].str.split("-",2,True)

c1=c1.rename(columns={0:"地区"})[["地区"]]

df=pd.merge(df,c1,left_index=True,right_index=True)#将新的表添加到df中

2. 替换

fenlie[1].replace(list(fenlie[fenlie[1].str.contains("经验")== False][1]),"无经验",inplace=True)#对数据进行替换

c2=fenlie[[1]]

3.对列进行重命名

c2=c2.rename(columns={1:"有无经验"})[["有无经验"]]

df=pd.merge(df,c2,left_index=True,right_index=True)#合并数据

4.查找字符串位置,并设置新列

df["所要人数"]=df["字段3"].apply(lambda x:x[x.find("人")-1:x.find("人")])#找出字段人所在的位置,并将其提取出来

df["所要人数"]=df["所要人数"].replace("干","无说明")

df["发布日期"]=df["字段3"].apply(lambda x:x[x.find("发")-5:x.find("发")])

c3=df["关键字"].str.split(":",2,True)

c3=c3.rename(columns={1:"关键字"})[["关键字"]]

df=pd.merge(df,c3,left_index=True,right_index=True)

5.删除多余的列

df=df.drop(["字段3","关键字_x"],axis=1)

6.填充数据

df=df.fillna({"工资":"面谈","关键字_y":"无"})#填充数据

7.去除脏数据

df["地区"]=df["地区"].apply(lambda x:x.strip())#将多余的空格去除

8.去除重复值

df.drop_duplicates(subset=None, keep='first', inplace=False)

最终得出一份较为规整的数据,便于我们下一步的分析。

四、数据分析数据分析岗位地区分布

#导入画图库

import matplotlib.pyplot as plt

%matplotlib inline

plt.rcParams["font.sans-serif"]='SimHei'

plt.rcParams["axes.unicode_minus"]=False

#绘制条形图

diqu1=df["地区"].value_counts().head(10)#地区太多,我们提取排行前十的地区进行分析

x=diqu1.index

y=diqu1.values

#绘制条形图

plt.bar(x,y,width=0.7,label="人数")

for a,b in zip(x,y):

plt.text(a,b,b,ha="center",va="bottom",fontsize=10)#添加数据标签

plt.legend()

plt.xlabel("地区")# x轴标签

plt.ylabel("人数")# y轴标签

2.数据分析岗位要求学历占比

df1=pd.read_excel(r"E:\前程无忧网招聘.xlsx")

df1["大专"]=df1["字段3"].apply(lambda x:x.count("大专"))#计算要求学历为大专的人数

a=df1["大专"].sum()

df1["本科"]=df1["字段3"].apply(lambda x:x.count("本科"))#计算要求学历为本科的人数

b=df1["本科"].sum()

df1["硕士"]=df1["字段3"].apply(lambda x:x.count("硕士"))#计算要求学历为硕士的人数

c=df1["硕士"].sum()

xueli=pd.Series([a,b,c,1424-a-b-c],index=["大专","本科","硕士","无具体说明"])#计算无具体说明的人数

explode=[0,0.05,0,0]

plt.pie(xueli,labels=["大专","本科","硕士","无具体说明"],autopct="%.0f%%",explode=explode,radius=1.0)

3.岗位薪资分布

#对薪资字段进行数据处理

df["工资1"]=df["工资"].replace("面谈","0")

df["工资1"]=df["工资1"].apply(lambda x:'0' if x.find("年")>0 or x.find("天")>0 else x)

df["工资1"]=df["工资1"].str.split("-",2,True)[0]

df["工资2"]=df["工资1"].astype("float64").apply(lambda x:x*1000 if x>=3 else x*10000).astype("int")

gongzi=df[df["工资2"]>0]

#绘制工资分布直方图

plt.hist(x = gongzi["工资2"].values,#指定数据

bins = 5, # 指定直方图中条块的个数

color = 'steelblue',# 指定直方图的填充色

edgecolor = 'black')# 指定直方图的边框色

plt.xlabel('薪资')

plt.ylabel('薪资分布')

4.地区之间工资差异

diqu1=gongzi["地区"].value_counts().head(10)

index=diqu1.index

gongzi=gongzi[gongzi["地区"].isin(index)]

gongzi.boxplot(column=["工资2"], by="地区")

plt.grid(linestyle="--", alpha=0.3)

plt.show()

5.关键字词云图

from wordcloud import WordCloud

import jieba

#将字符串切分为单个字符

def chinese_jieba(text):

wordlist_jieba=jieba.lcut(text)

space_wordlist=''.join(wordlist_jieba)

return space_wordlist

with open("E:\haha.txt",encoding="gbk")as file:

text=file.read()

wordcloud = WordCloud(font_path='C:\Windows\Fonts\微软雅黑\msyh.ttc',

background_color="black",width=600,

height=300,max_words=50,min_font_size=8).generate(text)

image=wordcloud.to_image()

image.show()

五、结论

(1)热门城市方面:在数据岗位的热门城市主要是上海、广州、深圳、北京、杭州等一线城市。(2)学历方面:59%的公司要求数据分析岗位是本科及本科以上学历。不过小编相信,如果专业知识过硬的话,学历并不阻碍各位前程似锦。(3)数据分析岗位的薪资分布主要集中在5000-10000元。 (4)通过关键字可以发现,数据分析岗位主要要求掌握数据库、Excel、Python等数据分析工具对数据进行分析。

这是我这一段时间学习的成果,第一次展示给大家。若存在不足,恳请大家批评指正!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值