本文正在参加「金石方案 . 分割6万现金大奖」

对于薪资数据的歪斜状况以及盒图离群点的探求

一.需求布景

课题中心:招聘网站的职位招聘数据预处理

之前的文章,咱们现已对职位薪资数据进行了爬取(9000条)数据,然后进行了数据的清洗,终究得到了4000条有用数据。

具体需求:

  • 按不同的类别区分职位中的薪酬数据,画盒图/箱线图,查看孤立点/离群点;
  • 运用分位数图、分位数-分位数图办法处理数据;

本次使命的结构图:

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

技能要点: 爬虫库(Beautifulsoup、requests-html、Scrapy)、数据预处理(python、kettle)、数据可视化(matplotlib、pyecharts、tebleau)、python-web结构(Flask)

二. 使命开端

2.1 薪酬的中位数、均值和众数和数据歪斜模块具体规划

Java为例,python和Go相似流程:

1.经过过去的爬虫和数据清理等过程,咱们得到了4000条左右的有用数据,咱们先将其读取进来:

data=pd.read_csv("A-06-终究有用数据.csv",encoding="gbk")

2.以Java为例:咱们运用关键词“java”对数据进行挑选,循环挑选过程中将职位名,薪资需求的关键字放到列表里边,然后存入字典里,经过pandas的处理:

xingzhi={}
zhiwei=[]
xin1=[]
xin2=[]
foriinrange(len(data)):
if"java"indata.iloc[i]['职位名']:
a=re.findall("\d+\.?\d*",data.iloc[i]['薪资'])
#print(data.iloc[i]['职位名'])
zhiwei.append(data.iloc[i]['职位名'])
xin1.append(int(a[0]))
xin2.append(int(a[1]))
xingzhi={"职位名":zhiwei,'最低薪资':xin1,'最高薪资':xin2}
df=pd.DataFrame(xingzhi)

2.输出题目要求的均值,中位数和众数:

print("java职位最低薪资的均值为:",df['最低薪资'].mean())
print("java职位最高薪资的均值为:",df['最高薪资'].mean())
print("java职位最低薪资的中位数为:",df['最低薪资'].median())
print("java职位最高薪资的中位数为:",df['最高薪资'].median())
print('java职位最低薪资的众数:',df['最低薪资'].mode())
print('java职位最高薪资的众数:',df['最高薪资'].mode())

3.输出作用如下:

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

4.指定默认字体:处理plot不能显现中文问题,处理保存图像是负号’-‘显现为方块的问题。

mpl.rcParams['font.sans-serif']=['STZhongsong']
mpl.rcParams['axes.unicode_minus']=False

5.对x和y轴数据进行规范化,x轴运用数据的长度循环列表

importmatplotlib.pyplotasplt
y1=xin1
x1=range(0,df['最低薪资'].count())
x2=range(0,df['最高薪资'].count())
y2=xin2
fig=plt.figure()
plt.subplot(2,1,1)
plt.bar(x1,y1,color="green")
plt.ylabel('薪资,单位K')
plt.title('java岗位的薪资状况(最低薪资-最高薪资)')
plt.subplot(2,1,2)
plt.bar(x2,y2,color="red")
plt.xlabel('公司个数')
plt.ylabel('薪资,单位K')
#plt.title('java岗位的薪资状况(最低薪资-最高薪资)')
plt.legend()
plt.show()

6.显现作用:

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

7.计算结果:

java职位: java职位最低薪资的均值为: 15.938611789326822 java职位最高薪资的均值为: 26.44890129054761 java职位最低薪资的中位数为: 15.0 java职位最高薪资的中位数为: 25.0 java职位最低薪资的众数: 0 15 Name: 最低薪资, dtype: int64 java职位最高薪资的众数: 0 30 Name: 最高薪资, dtype: int64 python职位: python职位最低薪资的均值为: 13.84330985915493 python职位最高薪资的均值为: 24.184859154929576 python职位最低薪资的中位数为: 15.0 python职位最高薪资的中位数为: 25.0 python职位最低薪资的众数: 0 15 Name: 最低薪资, dtype: int64 python职位最高薪资的众数: 0 30 Name: 最高薪资, dtype: int64 Go职位: Go职位最低薪资的均值为: 19.64329268292683 Go职位最高薪资的均值为: 34.707317073170735 Go职位最低薪资的中位数为: 19.0 Go职位最高薪资的中位数为: 30.0 Go职位最低薪资的众数: 0 15 Name: 最低薪资, dtype: int64 Go职位最高薪资的众数: 0 30 Name: 最高薪资, dtype: int64

2.2 按不同的类别区分职位中的薪酬数据,画盒图/箱线图,查看孤立点/离群点

1.与上文一样,咱们运用关键词“java”对数据进行挑选,循环挑选过程中将职位名,薪资需求的关键字放到列表里边,然后存入字典里,经过pandas的处理: 将上限和下限别离处理:

xingzhi={}
zhiwei=[]
xin1=[]
xin2=[]
foriinrange(len(data)):
if"java"indata.iloc[i]['职位名']:
a=re.findall("\d+\.?\d*",data.iloc[i]['薪资'])
#print(data.iloc[i]['职位名'])
zhiwei.append(data.iloc[i]['职位名'])
xin1.append(int(a[0]))
xin2.append(int(a[1]))
xingzhi={"职位名":zhiwei,'最低薪资':xin1,'最高薪资':xin2}
df=pd.DataFrame(xingzhi)
labels='Java职位薪酬下限','Java职位薪酬上限'
A=xin1
B=xin2

2.开端画图,将上面传入的进行处理

plt.grid(True)#显现网格
plt.boxplot([A,B],
medianprops={'color':'red','linewidth':1.5},
meanline=True,
showmeans=True,
meanprops={'color':'blue','ls':'--','linewidth':1.5},
flierprops={"marker":"o","markerfacecolor":"red","markersize":10},
labels=labels)
plt.yticks()
plt.show()

3.Python和GO言语的相似,如下:(GO言语代码省略不写)与这几个大致相同。

xingzhi={}
zhiwei=[]
xin1=[]
xin2=[]
foriinrange(len(data)):
if"python"indata.iloc[i]['职位名']:
a=re.findall("\d+\.?\d*",data.iloc[i]['薪资'])
zhiwei.append(data.iloc[i]['职位名'])
xin1.append(int(a[0]))
xin2.append(int(a[1]))
xingzhi={"职位名":zhiwei,'最低薪资':xin1,'最高薪资':xin2}
df=pd.DataFrame(xingzhi)
labels='python职位薪酬下限','python职位薪酬上限'
A=xin1
B=xin2
plt.grid(True)#显现网格
plt.boxplot([A,B],
medianprops={'color':'red','linewidth':1.5},
meanline=True,showmeans=True,
meanprops={'color':'blue','ls':'--','linewidth':1.5},
flierprops={"marker":"o","markerfacecolor":"red","markersize":10},
labels=labels)
plt.yticks()
plt.show()

4.运行结果如下:

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

后边的使命会还会发布相关的文章。