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

2024-03-08 11:59

本文主要是介绍没经验学历的外教竟然这么吃香,我酸了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

背景:

介绍说明:

总览

外语培训表格数据

幼儿园表格数据

职业学院表格数据

中小学数据表格

数据处理

数据表格合并

教师数据清洗

清洗经验、学历

清洗出工资

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 snsplt.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.nanif "享公办教师薪资待遇" in data :return  np.nanif 'K' in data and '月' in data:
#         low ,high = re.findall(pattern = pat_K,string = data)[0]
#         return (float(low) + float(high))/2low, high = re.findall(pattern=pat_K, string=data)[0]return (float(low)+float(high))/2if 'W' in data and '年' in data:
#         low,high = re.findall(pattern = pat_W,string = data)[0]
#         return (float(low) + float(high))/2*10/12low, high = re.findall(pattern=pat_W, string=data)[0]return (float(low)+float(high))/2*10/12if 'K' not in data and '月' in data:low,high = re.findall(pattern = pat,string = data)[0]return (float(low) + float(high))/2/1000data_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/1000else:low,high =re.findall(pattern = pat_jlc,string = data)[0]return (float(low) + float(high))/2data_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 Barattr = ['经验不限\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 Piepie =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天时间来完成,完整代码和数据有需要的可以私信给我,我看到后会及时发给各位,文章写得不好的地方请大家海涵并且嘴下留情,如果能给本人提出一些改进意见的话是再好不过了,在此谢谢大家!

 

这篇关于没经验学历的外教竟然这么吃香,我酸了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/787019

相关文章

2024年 Biomedical Signal Processing and Control 期刊投稿经验最新分享

期刊介绍 《Biomedical Signal Processing and Control 》期刊旨在为临床医学和生物科学中信号和图像的测量和分析研究提供一个跨学科的国际论坛。重点放在处理在临床诊断,患者监测和管理中使用的方法和设备的实际,应用为主导的研究的贡献。 生物医学信号处理和控制反映了这些方法在工程和临床科学的界面上被使用和发展的主要领域。期刊的范围包括相关的评论论文(review p

经验笔记:NAT穿越技术

NAT穿越技术经验笔记 随着互联网的普及和技术的发展,P2P(Peer to Peer,点对点)通信成为许多应用的核心功能之一。然而,网络地址转换(NAT)设备的存在常常成为实现P2P通信的一个障碍。本文旨在总结NAT穿越技术的基本原理及其配置方法,并探讨如何保障NAT穿越的安全性。 1. NAT穿越技术概述 NAT穿越技术是一种使位于不同NAT网络中的主机能够直接通信的技术。NAT(Net

经验笔记:SQL调优

SQL调优经验笔记 引言 SQL调优是确保数据库系统高效运行的重要环节。通过对查询语句、数据库配置、硬件资源等方面进行优化,可以显著提升数据库性能,进而增强应用程序的整体表现。以下是基于常见调优手段和实践经验整理的一份经验笔记。 1. 查询语句优化 1.1 避免使用SELECT * 只选择需要的列,减少不必要的数据传输。 示例: -- 不推荐SELECT * FROM users WH

AI时代产品经理面临的变与不变:0经验求职产品经理要注意哪些细节?

AI时代,各种产品形态、业务的变化,让市场也对产品经理提出了新的要求,产品经理要有哪些变与不变呢?现在入行产品经理是好时机么?没有技术背景、没有学历有优势如何入行做产品经理?今天我们一起探讨一下! 产品人究竟需要具备哪些能力?看这个最新的能力模型图就知道了。 随着当前市场的细分,不同行业和领域对产品经理的能力要求已经从单一的具备产品专业能力演变成了兼具产品专业技能+行业/业务知识

安卓错误经验分析之 R cannot be resolved to a variable

当出现 R cannot be resolved to a variable  错误的时候,不能采用编译器建议的修改方法,试着clean一下,然后查找gen文件夹下R.java是否丢失,如果不存在R.java,程序没有报错且采用其它方法均无效,八成是res文件夹下的layout或者manifest出现错误没有显示出来,需要自己查一遍,否则无法根本解决问题,盲目修改代码是没用的。

android开发避坑经验(1)

在 Android 开发的过程中,我们会遇到许多潜在的陷阱和坑,这些问题如果不及时识别和解决,可能会导致项目延迟、代码混乱甚至用户体验下降。本篇文章将分享一些常见的 Android 开发陷阱,以及如何有效地避免这些问题。 1. UI 性能优化 坑点:过度绘制和卡顿 在 Android 应用开发中,UI 是用户最直接的体验。过度使用复杂的布局和不合理的动画会导致应用卡顿。 避坑建议: 使用

经验笔记:Spring Boot项目结构

Spring Boot项目结构经验笔记 引言 Spring Boot 是一个基于 Spring 框架的简化版,它旨在简化新 Spring 应用的初始搭建以及开发过程。Spring Boot 提供了开箱即用的体验,通过自动配置、起步依赖、外部化配置等方式,使开发者可以快速地构建独立的、生产级别的基于 Spring Framework 的应用程序。本文将介绍一个典型的 Spring Boot 项目

我酸了,蚂蚁上市,财富自由都是他们的4、蚂蚁金服上市,算算你离财富自由还有多远?...

蚂蚁金服要上市的消息,大家应该都听说了。数据显示,上市后阿里及蚂蚁员工可能将诞生 5000 个千万富翁,500个亿万富翁!你看这数字,每一个 0 都是财富自由的象征。 我算了一笔账。如果你月入 2 万+ ,想要身价过千万,你至少需要努力 50 多年;如果你月入 1 万 5 ,至少需要努力 80 多年;如果你月入还没有过万,你可能需要 “ 做梦 ” 。 今天简单点,想说的就是:有的时候,做梦也是

胖哥的经验 | 一款普适的实时数仓架构设计

什么?胖哥的经验,没错这是来自我们大数据成神之路小伙伴的经验。有什么问题,欢迎大家加群讨论,公众号回复【加群】。 一、实时数仓的架构背景 首先我们来聊一聊实时数仓是怎么诞生的,在离线数仓的时候数据是T+1的也就是隔一天才能看到昨天的数据,这种形式持续了很久的时间,但是有些场景真的只有实时的数据才有用武之地。例如推荐、风控、考核等。那么这个时候实时指标也就应运而生,在最开始的时候,采用flink\

经验笔记:跨站脚本攻击(Cross-Site Scripting,简称XSS)

跨站脚本攻击(Cross-Site Scripting,简称XSS)经验笔记 跨站脚本攻击(XSS:Cross-Site Scripting)是一种常见的Web应用程序安全漏洞,它允许攻击者将恶意脚本注入到看起来来自可信网站的网页上。当其他用户浏览该页面时,嵌入的脚本就会被执行,从而可能对用户的数据安全构成威胁。XSS攻击通常发生在Web应用程序未能充分过滤用户提交的数据时,导致恶意脚本得以传递