Python map, apply, transform汇总(打标签法初阶到高阶)

引言

  根据数据的某列进行打标签操作在数据分析领域极度常用,对于一些较为复杂的打标签方法,Python 与 SQL 都能很好的实现,这篇针对 Python,主要用到 map,apply 与 transform 等函数,从初阶到高阶,体会方法的异同优劣。

  与此同时,SQL 的打标签方法除了在业务上常用,也是一个面试的小考点,具体见以下两篇文章。

SQL 面试经典 & 业务实战(一)

https://blog.csdn.net/weixin_43329700/article/details/104118169

SQL 面试经典 & 业务实战(三)

https://blog.csdn.net/weixin_43329700/article/details/104207897


业务背景 & 实现效果

针对背景某地区房价数据进行数据分析过程中的打标签操作,增加可读性的同时也可以根据源数据集来增加一些本来没有的变量,并对并生成可能会对模型精度有提升效果的布尔变量。如生成如下新的一列变量

  • 生成一列每个地区各自的房价平均值,并与源数据的房价对比,看该地区的某一房价是在平均值之上还是平均值之下
  • 增加标签:每一个客户的浏览时长是在平均值之上(1)还是之下(0),从而探究之上的是不是会更有可能购买产品,之上购买的概率会大多少?

口说无凭,看一下效果图即可

源数据(只展示一小部分,网络爬虫获取)
在这里插入图片描述

map

需求:将地区列 dist 的拼音全部转换成对应的中文

方法1:最 low 最强硬的 replace 法
方法2
老司机 map 字典映射法,关于 map 的方法以及其他相关方法就不一一述说了,只是针对打标签而言。
在这里插入图片描述

apply

  刚刚的 map 针对的是 “静态数据”,即为名义变量,“动态数据” 如 roomnum 房间数量列则为数值变量,既然是数值变量,那数目肯定非常多,像 AREA 面积列,分类后的唯一固定值太多了,不像地区那样就那么六个,这时候就可以祭出 apply 了。同样,作为必会且极度出名的 apply,使用方法也无须多言,这里依然只是针对打标签而言。

需求:给房间数目 roomnum 分层
  • 1 ~ 2 个:少(0)
  • 3 个或以上:多(1)

在这里插入图片描述
同理,添加与平均房价相比的 price_bool 变量亦如此,不多赘述

apply 作用机理
在这里插入图片描述


重点来了!

  与平均房价相比的 price_bool 变量的添加难度还不大,那 根据地区划分 的平均房价变量呢,即每个地区某一房价与该地区的平均房价相比,听起来有点拗口。下面来拆解流程

探索性数据分析查看一下各地区的平均房价分布情况
在这里插入图片描述
  由 boxenplot 可以看出不同地区房价的中位数和分布情况的差异还是比较大的,上述看似简单的图其实包含了不少可视化的设置与细节,后续将会继续输出大量实用的可视化的文章,可以直接关注。

  • 图例设置,字体细节
  • 图片整体风格,底色可调
  • 背景网格,增强可读性
  • 左上右边框隐去,视野更加聚焦于图形
  • 底轴 x 轻微向下与偏移,整洁不臃肿

  上述图形的代码和设置均可以封装在自写库中,用到时只需引入自己写的图形库,一行短代码,一个小函数即可。

  所以如果能够分别求出每个地区的房价的平均值,再与该地区的源房价进行比较,那就完美了。

法1:经验者的 to_dict 构造字典配合 map 映射法

在这里插入图片描述
groupby 作用机理
在这里插入图片描述
在这里插入图片描述

还有没有更能体现实力的方法呢?—— transform
在这里插入图片描述
transform 作用机理
在这里插入图片描述

后记

  后续有更多的 Python 数据分析(清洗评估及各种操作),可视化,网络爬虫,SQL 面试,商业实战,Excel 实战,Word 论文排版,心理学等,助力全面发展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章