Python数据分析中如何将字符型离散值转化为数值型


该号刚出生不久,喜欢的朋友别忘了点个关注。(另外文末有个小福利)

很多时候,数据的清洗、整理,是为了进一步对数据的挖掘或者数学建模。而通常涉及数据挖掘和建模的时候,我们会需要纯数值型的数据。然而原始数据里的数据类型是五花八门的,比如身高、体重可能会是浮点型,年龄会是整型,姓名和性别则是字符型等。那么,有没有什么比较方便的办法,能将字符型的离散值转为数值型的离散值呢?

还好在pandas里面,这件事并不难,我们通过一个案例来实现一遍。先虚构一个DataFrame如下:

Python数据分析中如何将字符型离散值转化为数值型

接下来我们尝试把Hobby列里的字符型离散值转换为一一对应的数值型。那么我们先要做的肯定是了解该列的非重复值一共有哪些:

Python数据分析中如何将字符型离散值转化为数值型

不难看出,该列一共有三个非重复值,分别如上。我们接下来的想法就是,可以将所有的Reading转为1,Music转为2,Football转为3。我们先来看看数据类型,这样后期可以有个对比:

Python数据分析中如何将字符型离散值转化为数值型

没有错,Hobby列是object类型,也就是pandas版的字符型。

既然是一些离散化的字符,我们就可以把这些数据当做是一些不同的分类,而想到分类,自然而然就想到pandas里的Categorical。那我们就先把这些字符型数据转化为Categorical类型:

Python数据分析中如何将字符型离散值转化为数值型

在这里,我们指定需要转化的列为Hobby列,转化之后的数据值还是那么些非重复的唯一值。也就是说,这一步,数据值并没有发生变化,而是将Hobby列的数据类型由object转为了category类型。我们只需再来一步,就可以达到我们最终的要求:

Python数据分析中如何将字符型离散值转化为数值型

这一步里面,我们只需要把最终想要的数值型分类以类似列表的形式传递到参数里面即可。这样,最终的转换就完成了。

同样的,如果想将数值型的离散值转化为字符型的,则进行反向操作即可。

当然,除了这个方法外,还可以有其他的方法,比如说字典映射等。如果你手头有更牛掰的方法,还希望可以在讨论区跟大家一起分享。

最后说个小福利,本人的可视化体验课现在已经发布在网易云课堂上了,目前发布了前三个视频,大家可以搜索“ Python交互式可视化体验课程 ”或者“ 熊猫课堂 ”,该课程接下来会继续更新,大家可以免费学习。