没经验学历的外教竟然这么吃香,我酸了!

目录

背景:

介绍说明:

总览

外语培训表格数据

幼儿园表格数据

职业学院表格数据

中小学数据表格

数据处理

数据表格合并

教师数据清洗

清洗经验、学历

清洗出工资

JobLeadChina数据清洗 

数据分析

洋外教的工资真的高吗

不同级别和工作年限的工资比较

学历水平对薪资的影响 

什么机构在招聘洋外教?

洋外教来源真的很乱吗?

总结:

 


背景:

这几天拿到了一份关于“英语外籍老师与本土老师招聘数据在中国的工作情况”的数据(没经验没学历的外教为啥能拿1.4W+的高薪?),这些数据是我在Github上找到的,有需要的可以留言,后面可以把相关数据分享和你们,大家也可以关注原作者的微信公众号“[Alfred数据室]”查看相关数据。

介绍说明:

首先我们先看下这几个excel表格,“外语培训”是记录一些培训院校对外语教师的招聘添加、城市、经验和学历要求,“幼儿园”表格是记录幼儿园学校对外语教师的招聘要求,同理“职业学院”和“中小学”也是对外语教师的招聘要求、包括工作经验、学历、薪资等,具体所图所示:

总览

外语培训表格数据

幼儿园表格数据

职业学院表格数据

中小学数据表格

数据处理

数据表格合并

首先第一步是使用concat方法把“幼儿园、中小学、外语培训、职业学院”数据进行合并成一个表格,具体代码如下:

import re
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#import seaborn as sns

plt.style.use('ggplot')
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  #解决seaborn中文字体显示问题
plt.rc('figure', figsize=(10, 10))  #把plt默认的图片size调大一点
plt.rcParams["figure.dpi"] =mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
%matplotlib inline

# 把来自万行教师的四个数据集组合成一个Dataframe
data_kdgd['type'] = '幼儿园'
data_pmsc['type'] = '中小学'
data_trn['type'] = '外语培训'
data_clg['type'] = '职业院校'
data_wx = pd.concat([data_kdgd, data_pmsc, data_trn, data_clg])
data_wx.info()

实际运行结果:

再看一下表格的具体内容是什么样子的:

#sample方法是随机选取若干行的内容
data_wx.sample(5) #随机选取5行内容

结果:

 

教师数据清洗

  • 清洗出省份、城市
  • 经验、学历
  • 工资

表格合并之后,从上图可以看到有些数据是多余的,还有一些数据的单位不一致,部分数据还有空值,我们要接着对数据进行进一步处理,在这里我们从“省份、城市”、“经验、学历”、“工资”这几个维度来处理,。

首先进行清洗出省份、城市,我们看到省份、城市的数据格式是不一致的,我们在这里要统一格式,代码如下:

#把数据内容转换为str类型,然后使用split方法通过“-”符号进行分割
data_wx['area'].str.split("-", expand=True)

运行结果:

在这里我们把data_wx数据新增两列分别为“province、city”

data_wx['province'] = data_wx['area'].str.split("-", expand=True)[0]

data_wx['city'] = data_wx['area'].str.split("-", expand=True)[1]
# print(data_wx)
# 把北京、天津、上海、重庆的城市改为原来的名字
data_wx.loc[data_wx['province'] == '北京', 'city'] = '北京'
data_wx.loc[data_wx['province'] == '上海', 'city'] = '上海'
data_wx.loc[data_wx['province'] == '天津', 'city'] = '天津'
data_wx.loc[data_wx['province'] == '重庆', 'city'] = '重庆'

清洗经验、学历

原始数据:

数据清洗,新增经验年限、学历要求,清洗后的数据如下图所示:

#获取经验年限
data_wx['exp'] = data_wx['exp_title'].str.split("/", expand=True)[0]

#获取学历要求
data_wx['degree'] = data_wx['exp_title'].str.split("/", expand=True)[1]
#进行去重
data_wx['exp'].unique()
print(data_wx.head(5))
exp_map = {'不限':'经验不限', '一年以上':'一到三年', '三年以上':'三到五年', '两年以上':'一到三年',
           '五年以上':'五到十年', '应届毕业生':'经验不限', '六年以上':'五到十年', '四年以上':'三到五年',
           '九年以上':'五到十年', '七年以上':'五到十年', '十年以上':'十年以上', '在读学生':'经验不限', 
           '八年以上':'五到十年'}

data_wx['exp'] = data_wx['exp'].map(exp_map)
#data_wx.sample(5)

degree_map = {'大专':'大专', '不限':'学历不限', '大学本科以上':'本科', '大学本科':'本科', 
              '大专以上':'大专', '不限以上':'学历不限', '中专以上':'中专', '硕士以上':'硕士', 
              '硕士':'硕士', '高中以上':'高中', '中专':'中专'}
data_wx['degree'] = data_wx['degree'].map(degree_map)
data_wx.sample(5)

运行结果:

清洗出工资

data_wx['salary'].unique()

#定义一个函数用来清洗工资
def get_salary(data):
    pat_K = r"(.*)K-(.*)K"
    pat_W = r"(.*)W-(.*)W"
    pat = r"(.*)-(.*)/"
    if "面议" in data :
        return np.nan
    if "享公办教师薪资待遇" in data :
        return  np.nan
    if 'K' in data and '月' in data:
#         low ,high = re.findall(pattern = pat_K,string = data)[0]
#         return (float(low) + float(high))/2
        low, high = re.findall(pattern=pat_K, string=data)[0]
        return (float(low)+float(high))/2
    if 'W' in data and '年' in data:
#         low,high = re.findall(pattern = pat_W,string = data)[0]
#         return (float(low) + float(high))/2*10/12
        low, high = re.findall(pattern=pat_W, string=data)[0]
        return (float(low)+float(high))/2*10/12
    if 'K' not in data and '月' in data:
        low,high = re.findall(pattern = pat,string = data)[0]
        return (float(low) + float(high))/2/1000


    
data_wx['salary_clean']  = data_wx['salary'].apply(get_salary)
#round() 方法返回浮点数x的四舍五入值,这里设置的是保留一位小数
data_wx['salary_clean'] = np.round(data_wx['salary_clean'], 1)
data_wx.sample(5)

运行结果:

JobLeadChina数据清洗 

 

我们上边把我们合并的表格数据已经清洗好了,接下来我们接着对“JobLeadChina”数据进行清洗、整理,我们先看一下数据内容。

data_jlc = pd.read_csv(r'E:\DataAnalysis\interesting-python-master\interesting-python-master\ESL\jobleadchina.csv')
data_jlc.sample(5)

接着清洗出exp_title列的数据

#进行去重操作
data_jlc['exp_title'].unique()
data_jlc['exp_title_clean'] = data_jlc['exp_title'].str.split(':',expand = True)[1]
data_jlc.sample(5)

清洗后结果:

清洗出salary:

data_jlc['salary'].unique()

def get_salary_jlc(data):
    #正则表达式
    pat_jlc = r"(.*)K/MTH - (.*)K/MTH"
    if '00' in data:
        low,high = re.findall(pattern = pat_jlc,string = data)[0]
        return (float(low) + float(high))/2/1000
    else:
        low,high =re.findall(pattern = pat_jlc,string = data)[0]
        return (float(low) + float(high))/2
    
data_jlc['salary_clean'] = data_jlc['salary'].apply(get_salary_jlc)
data_jlc.sample(5)

清洗结果:

数据分析

洋外教的工资真的高吗

#删除data_wx中“salary_clean”> 40的值
data_wx.drop(data_wx[data_wx['salary_clean']>40].index, inplace=True)
#data_wx.sample(5)
data_wx['teacher_type'] = '中教'
data_jlc['teacher_type'] = '外教'
#把data_wx和data_jlc中的salary_calen和teacher_type的列进行连接
data_salary = pd.concat([data_wx[['salary_clean', 'teacher_type']],
                        data_jlc[['salary_clean', 'teacher_type']]])
print(data_salary.sample(5))
#修改data_salary的行名称
data_salary.rename(columns={'salary_clean':'工资', 'teacher_type':'教师类型'}, inplace=True)
#print(data_salary.sample(5))

#求外教工资平均值
np.round(data_jlc['salary_clean'].mean(), 1)
#中教工资平均值
np.round(data_wx['salary_clean'].mean(), 1)

从图片中可以看出,外教薪资平均水平要高于中教薪资很高。

不同级别和工作年限的工资比较

#不同级别的工作年限的平均工资水平
np.round(data_jlc.groupby('exp_title_clean')['salary_clean'].mean(), 1)

#不同工作年限的工资平均水平
np.round(data_wx.groupby('exp')['salary_clean'].mean(), 1)

比较不同工作年限和经验的做个比较,从下图中可以看出,工作经验10年以下的薪资水平外普遍比国内高,10年工作以上的中教工资水平略高一些。

#图形绘制比较不同工作经验的英语外教与中教工资对比
from pyecharts import Bar


attr = ['经验不限\nInternship', '一到三年\nEntry Level', '三到五年\nExecutive',
        '五到十年\nMid-Senior', '十年以上\nDirector']
value1 = [10.1, 15.8, 14.0, 15.8, 20.9]
value2 = [7.8, 8.0, 10.1, 13.6, 21.6]

bar = Bar("不同工作经验的英语外教与中教工资对比", width = 700,height=500)
bar.add("外教", attr, value1, xaxis_label_textsize=18, legend_top=30,
        yaxis_label_textsize=20, is_label_show=True)
bar.add("中教", attr, value2, xaxis_label_textsize=18, legend_top=30,
        yaxis_label_textsize=20, is_label_show=True)
bar.render('不同工作经验的英语外教与中教工资对比.html')

学历水平对薪资的影响

都说学历是个敲门砖,那这个敲门砖对薪资的影响大吗?经过代码处理和图片展示,可以看出学历对中教有很大的影响,对外教的影响不是很大,看到这我酸了,一个“哎”字来表达此刻心情。

# 通过学历进行对比,即学历对工资水平的影响
#data_jlc.sample(5)
#data_jlc.groupby('education')['salary_clean'].count().mean()
# t = data_jlc.groupby('education')['salary_clean'].value_counts()
# print(t)
np.round(data_jlc.groupby('education')['salary_clean'].mean(),1)

data_wx.loc[data_wx['degree']=='中专', 'degree'] = '高中'
np.round(data_wx.groupby('degree')['salary_clean'].mean(),1)

#绘制条形图比较不同学历的英语外教与中教工资对比
attr = ['学历不限\nAny education', '高中', '大专\nAssociate',
        '本科\nBachelor', '硕士\nMaster']
value1 = [13.9, np.nan, 12.8, 16.3, 21.3]
value2 = [7.5, 4.4, 6.4, 9.2, 11.0]

bar = Bar("不同学历的英语外教与中教工资对比", width = 700,height=500)
bar.add("外教", attr, value1, xaxis_label_textsize=15, legend_top=30,
        yaxis_label_textsize=20, is_label_show=True)
bar.add("中教", attr, value2, xaxis_label_textsize=15, legend_top=30,
        yaxis_label_textsize=20, is_label_show=True)
bar.render("不同学历的英语外教与中教工资对比.html")
bar

 

什么机构在招聘洋外教?

到底是哪些人和公司需要外教呢? 通过分析可知培训机构和学校对外教需求量最大,这是因为什么导致的,结果不得而知,大家可以YY一下。

洋外教来源真的很乱吗?

外教一般以上的是男性,外教男性看来还是比女性吃香的,哈哈。

data_gm.sample(5)
sex = data_gm['Sex'].value_counts()
#data_gm['Sex']

#外教性别比例
from pyecharts import Pie


pie =Pie('性别比例',background_color = 'white', width=500, height=500)
pie.add('',['男性', '女性', '未知'],sex.values, 
        center = [50,50],radius=[25, 50],rosetype='radius', is_label_show=True,
       legend_text_size=16, label_text_size=16)
pie.render('外教性别比例.html')
pie

 

总结:

从以上分析看出,在不同工作年限和学历大致相同的情况下,外教工资更高一些,期中培训机构和学校对外教的需求量更大, 而且男性外教比女性外教多。

这个和大家分享的内容,我大概用了4天时间来完成,完整代码和数据有需要的可以私信给我,我看到后会及时发给各位,文章写得不好的地方请大家海涵并且嘴下留情,如果能给本人提出一些改进意见的话是再好不过了,在此谢谢大家!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值