相关文章
数据分析师实战篇1
2024-11-10 17:39

一、数据读取

数据分析师实战篇1

 
 
 

6876 rows × 17 columns

二、数据浏览

 
 

这里列举出了数据集拥有的各类字段,一共有6876个,其中companyLabelList,businessZones,firstType,secondType,positionLables都存在为空的情况。公司id和职位id为数字,其他都是字符串。

因为数据集的数据比较多,如果我们只想浏览部分的话,可以使用head函数,显示头部的数据,默认5,也可以自由设置参数,如果是尾部数据则是tail。

 
 

三、数据清洗

数据集中,最主要的脏数据是薪资这块,后续我们要拆成单独的两列。

看一下是否有重复的数据。

 
 

unique函数可以返回唯一值,数据集中positionId是职位ID,值唯一。配合len函数计算出唯一值共有5031个,说明有多出来的重复值。

使用drop_duplicates清洗掉。

 

drop_duplicates函数通过subset参数选择以哪个列为去重基准。keep参数则是保留方式,first是保留第一个,删除后余重复值,last还是删除前面,保留最后一个。duplicated函数功能类似,但它返回的是布尔值。

 
 
 

接下来加工salary薪资字段。目的是计算出薪资下限以及薪资上限。薪资内容没有特殊的规律,既有小写k,也有大小K,还有「k以上」这种写法,k以上只能上下限默认相同。

我们定义了个cut_word函数,它查找「-」符号所在的位置,并且截取薪资范围开头至K之间的数字,也就是我们想要的薪资下限。apply将cut_word函数应用在salary列的所有行。

但是[k以上]这类没有“-”怎么处理呢?find函数找不到该符号会返回-1,所以这里使用一个if函数加以判断

因为python大小写敏感,我们用upper函数将k都转换为K,然后以K作为截取。

薪资上限topsalary的思路也相近,只是变成截取后半部分。在cut_word函数增加了新的参数用以判断返回bottom还是top。

 
 
 
 
 

此时df_duplicates已经增加了两个字段,一个是bottomsalary,一个是topsalary,也就是最低和最高薪资

再分别把它们的数据类型转换成数字“int”,并计算平均薪资

 
 
 
 

注意,到这里为止只是把两列的数据类型预览为数字而已,其本身真正的数据类型并没有发生变化,要想改变其本身的数据类型,需要重新对其进行赋值,如下操作

 
 

此时两列的数据类型才更改为数字,使用lambda匿名函数计算平均薪资如下,lambda x: ******* ,前面的lambda x:理解为输入,后面的星号区域则是针对输入的x进行运算。案例中,因为同时对top和bottom求平均值,所以需要加上x.bottomSalary和x.topSalary。其中axis=1是对行进行操作,axis=0是对列进行操作。

 
 
 
 

到此,数据清洗的部分完成。切选出我们想要的内容进行后续分析。

四、数据分析

 
 

先对数据进行几个描述统计

 
 

value_counts是计数,统计所有非零元素的个数,以降序的方式输出Series。数据中可以看到北京招募的数据分析师是最多的。

我们可以依次分析数据分析师的学历要求,工作年限要求。

 
 

可见,对数据分析师的学历要求是本科的最多数,其次是大专。

 
 

可见,对数据分析师3-5年的工作经验需求是最多的,其次是1-3年。

针对数据分析师的薪资,我们用describe函数。

 

它能快速生成各类统计指标。数据分析师的薪资的平均数是17k,中位数是15k,两者相差不大,最大薪资在75k,应该是数据科学家或者数据分析总监档位的水平。标准差在8.99k,有一定的波动性,大部分分析师薪资在17+—9k之间。

五、数据可视化

 

pandas自带绘图函数,它是以matplotlib包为基础封装,所以两者能够结合使用。%matplotlib inline是jupyter自带的方式,允许图表在cell中输出。plt.style.use(‘ggplot’)使用R语言中的ggplot2配色作为绘图风格,纯粹为了好看。

 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BWRXXZYv-1584262605325)(output_57_1.png)]

图表列出了数据分析师薪资的分布,因为大部分薪资集中20k以下,为了更细的粒度。将直方图的宽距继续缩小。

 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I7IDCjpx-1584262605329)(output_59_1.png)]

数据分布呈双峰状,因为原始数据来源于招聘网站的爬取,薪资很容易集中在某个区间,不是真实薪资的反应(10~20k的区间,以本文的计算公式,只会粗暴地落在15k,而非均匀分布)。

现在观察不同城市、不同学历对薪资的影响。箱线图是最佳的观测方式。

 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VeEW5LIP-1584262605330)(output_62_2.png)]

图表的标签出了问题,出现了白框,主要是图表默认用英文字体,而这里的都是中文,导致了冲突。所以需要改用matplotlib。

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rRlTO0gW-1584262605334)(output_64_0.png)]

首先加载字体管理包,设置一个载入中文字体的变量,不同系统的路径不一样。boxplot是我们调用的箱线图函数,column选择箱线图的数值,by是选择分类变量,figsize是尺寸。

ax.get_xticklabels获取坐标轴刻度,即无法正确显示城市名的白框,利用set_fontpeoperties更改字体。于是获得了我们想要的箱线图。

从图上我们看到,北京的数据分析师薪资高于其他城市,尤其是中位数。上海和深圳稍次,广州甚至不如杭州。

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vinw6o1J-1584262605336)(output_67_0.png)]

从学历看,博士薪资遥遥领先,虽然在top区域不如本科和硕士,这点我们要后续分析。大专学历稍有弱势。

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0Iwc8go-1584262605356)(output_69_0.png)]

工作年限看,薪资的差距进一步拉大,毕业生和工作多年的不在一个梯度。虽然没有其他行业的数据对比,但是可以确定,数据分析师的职场上升路线还是挺光明的。

到目前为止,我们了解了城市、年限和学历对薪资的影响,但这些都是单一的变量,现在想知道北京和上海这两座城市,学历对薪资的影响。

这里需要使用isin函数,用来筛选某一列的某些值。

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ur9wfge-1584262605358)(output_73_0.png)]

从图上可以看到,不同学历背景下,北京都是稍优于上海的,北京愿意花费更多薪资吸引数据分析师,而在博士这个档次,也是一个大幅度的跨越。我们不妨寻找其中的原因

 
 
 

它返回的是不同城市的各列计数结果,因为没有NaN,每列结果都是相等的。现在它和value_counts等价。

 
 

换成mean,计算出了不同城市的平均薪资。因为mean方法只针对数值,而各列中只有avgSalary是数值,于是返回了这个唯一结果。

 
 

按城市和学历分组计算了平均薪资。后面再调用unstack方法,进行行列转置,这样看的就更清楚了。在不同城市中,博士学历最高的薪资在深圳,硕士学历最高的薪资在杭州。北京综合薪资最好。这个分析结论有没有问题呢?不妨先看招聘人数。

 
 

这次换成count,我们在groupby后面加一个avgSalary,说明只统计avgSalary的计数结果,不用混入相同数据。图上的结果很明确了,要求博士学历的岗位只有6个,所谓的平均薪资,也只取决于公司开出的价码,波动性很强,毕竟这只是招聘薪资,不代表真实的博士在职薪资。这也解释了上面几个图表的异常。

接下来计算不同公司招聘的数据分析师数量,并且计算平均数。

 

2243 rows × 2 columns

这里使用了agg函数,同时传入count和mean方法,然后返回了不同公司的计数和平均值两个结果。所以前文的mean,count,其实都省略了agg。agg除了系统自带的几个函数,它也支持自定义函数。

 
 

上图用lamba函数,返回了不同公司中最高薪资和最低薪资的差值。

现在我想计算出不同城市,招聘数据分析师需求前5的公司,应该如何处理?agg虽然能返回计数也能排序,但它返回的是所有结果,前五还需要手工计算。能不能直接返回前五结果?当然可以,这里再次请出apply。

 
 

自定义了函数topN,将传入的数据计数,并且从大到小返回前五的数据。然后以city聚合分组,因为求的是前5的公司,所以对companyShortName调用topN函数。

同样的,如果我想知道不同城市,各职位招聘数前五,也能直接调用topN

 
 

可见,虽说是数据分析师,但其实有不少的开发工程师,数据产品经理等。这是抓取下来数据的缺点,它反应的不止是数据分析师,而是数据领域。不同的城市的需求不一样,北京各岗位的需求都比上海高。

同样的,如果我想知道不同城市,各工作年限招聘数前五,也能直接调用topN

 
 

可见,上海,北京,南京工作年限3-5年的招聘数量最多,其次是1-3年。

类似的,我想知道不同城市,各职位平均薪资前五的公司。

 
 

65 rows × 8 columns

这里创建了一个top1N的函数,对平均薪资进行排序,再对城市分组调用top1N函数,由于没有指定某一个字段,所以返回的就是所有字段,若只想返回公司名称,则只需要再后面添加字段名即可

 

65 rows × 2 columns

运用group by,我们已经能随意组合不同维度。接下来配合group by作图。

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ATOnT7Y3-1584262605362)(output_105_0.png)]

多重聚合在作图上面没有太大差异,行列数据转置不要混淆即可。

 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhRVgGaP-1584262605363)(output_107_1.png)]

另外一种分析思路是对数据进行深加工。我们将薪资设立出不同的level。

 
 
 

5031 rows × 2 columns

cut的作用是分桶,它也是数据分析常用的一种方法,将不同数据划分出不同等级,也就是将数值型数据加工成分类数据。cut可以等距划分,传入一个数字就好。这里为了更好的区分,我传入了一组列表进行人工划分,加工成相应的标签。

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3dJAWFJS-1584262605365)(output_112_0.png)]

用lambda转换百分比,然后作堆积百分比柱形图(matplotlib好像没有直接调用的函数)。这里可以较为清晰的看到不同等级在不同地区的薪资占比。它比箱线图和直方图的好处在于,通过人工划分,具备业务含义。0~3是实习生的价位,3~6是刚毕业没有基础的新人,整理数据那种,6~10是有一定基础的,以此类推。

现在只剩下最后一列数据没有处理,标签数据。

 
 

现在的目的是统计数据分析师的标签。它只是看上去干净的数据,元素中的[]是无意义的,它是字符串的一部分,和数组没有关系。

 
 

str方法允许我们针对列中的元素,进行字符串相关的处理,这里的[1:-1]不再是Dataframe和Series的切片,而是对字符串截取,这里把[]都截取掉了。如果漏了str,就变成选取Series第二行至最后一行的数据,切记。

 
 

使用完str后,它返回的仍旧是Series,当我们想要再次用replace去除空格。还是需要添加str的。现在的数据已经干净不少。

 
 

可见positionLables本身有空值,所以要删除,不然容易报错。再次用str.split方法,把元素中的标签按「,」拆分成列表。

 
 

5007 rows × 267 columns

通过apply和value_counts函数统计标签数。因为各行元素已经转换成了列表,所以value_counts会逐行计算列表中的标签,apply的灵活性就在于此,它将value_counts应用在行上,最后将结果组成一张新表。

 
 

将空值删除,并且重置为Dataframe,此时level_0为标签名,level_1为df_index的索引,也可以认为它对应着一个职位,0是该标签在职位中出现的次数,之前我没有命名,所以才会显示0。部分职位的标签可能出现多次,这里忽略它。

删除线格式 ```python

    以上就是本篇文章【数据分析师实战篇1】的全部内容了,欢迎阅览 ! 文章地址:http://gzhdwind.xhstdz.com/news/3139.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://gzhdwind.xhstdz.com/mobile/ , 查看更多   
最新文章
适合中老年游戏活动的项目有哪些?
引言:为何中老年游戏活动尤为重要 随着社会的不断发展和生活水平的提升,中老年人的生活方式也随之改变。对于他们来说,健康和快乐成为了生活的重要组成部分。而游戏活动,不仅能够增加社交互动,还能锻炼身体与思维。因此,选择适合中老
上海旅游攻略:探访繁华之都的风情韵味
引言:开启上海的奇妙之旅 上海,这座迷人的城市,拥有着深厚的文化底蕴与现代化的繁华景象,无论是初次造访还是再次归来,都会让人惊叹于它独特的风情韵味。在这里,历史与现代交融,传统与创新并存,等待着你去探索这座繁华之都的每个角
高新企业网站优化方法大揭秘!
高新企业网站的重要性 随着互联网的快速发展,企业网站已经成为企业宣传、推广和营销的重要渠道。对于高新技术企业来说,网站更是展示企业形象、产品技术、行业影响力的窗口。因此,如何优化企业网站,提升网站的曝光率和用户体验成为了高
探索旅游景区的独特魅力:人文、自然与体验的完美结合”
引言:旅游景区的魅力所在 在如今快节奏的生活中,越来越多的人选择通过旅行来放松身心,寻找内心的宁静。在旅游的过程中,景区的选择则显得尤为重要。一个优质的旅游景区不仅仅是壮丽的自然风光,还有深厚的人文底蕴和丰富的体验活动。本
提升健康与活力:探索运动健身的多样化内容与方法
引言:健身的时代已来临 随着人们生活水平的提高,越来越多的人开始关注自身的健康与活力。运动健身不再是一种单一的方式,而是发展出了多样化的内容与方法。无论是为了减肥、塑形,还是增强体质,运动健身都成为了许多人的日常习惯和生活
80岁老人旅游规定的常见问题及注意事项解析
引言:老年人的旅游热潮 随着社会的发展和生活水平的提升,越来越多的老年人开始积极参与到旅游活动中。他们用实际行动证明,年龄并不是旅途的限制,反而是丰富人生经验的体现。虽然老年游客在旅途中享有更多的自由和乐趣,但在旅游规定及
AI写作论文是否会被检测?解密检测机制!
引言:AI写作的崛起 近年来,人工智能(AI)技术的发展迅猛,尤其是在写作领域。AI写作工具不仅能生成高质量的文章,还能满足不同用户的需求,成为内容创作的得力助手。然而,伴随着AI写作的普及,一个新的问题也逐渐显现出来:AI写作论文
几月份去兰州旅游最宜?
探索兰州的四季魅力 兰州,作为甘肃省的省会,坐落于黄河之畔,是一座历史悠久的城市,兼具独特的自然风貌与深厚的人文底蕴。每个季节,兰州展现出不同的面貌,吸引着四面八方的游客前来探索。那到底几月份去兰州旅游最为宜人呢?接下来,
探索中国旅游标志的原型与文化内涵的深度解读
探索中国旅游标志的原型与文化内涵 中国作为一个拥有悠久历史和丰富文化的国家,其旅游标志更是象征着一种独特的文化内涵。中国旅游标志的原型多取材于中国传统艺术元素,加之对中国文化的理解与诠释,形成了独具魅力的形象。 中国国徽与中
轻松搞定!服务器配置RAID:提高性能数据安全双保险!
轻松搞定!服务器配置RAID:提高性能数据安全双保险! 随着信息技术的不断发展,服务器在企业中扮演着至关重要的角色。为了提高性能和数据安全,服务器配置RAID已经成为了一种常见的选择。RAID(Redundant Array of Independent Disks)即
相关文章