【pandas小技巧】--列值的映射

pandas,技巧,映射 · 浏览次数 : 140

小编点评

**映射列值** **1. map** ```python df.sex = df.sex.map({ 'female': 0, 'male': 1 }) ``` **2. factorize** ```python df.grade = df.grade.factorize()[0] ``` **3. dffactorize** ```python df.grade = df.grade.factorize()[0] ``` **小技巧** * 如果需要对多个值进行映射,可以使用列表 comprehension。 * 如果需要将数字类型转换为字符串,可以使用 `astype("str")` 方法。

正文

映射列值是指将一个列中的某些特定值映射为另外一些值,常用于数据清洗和转换。

使用映射列值的场景有很多,以下是几种常见的场景:

  1. 将字符串类型的列中的某些值映射为数字。例如,将“男”和“女”分别映射为 0 和 1,以便进行机器学习算法的训练和预测。
  2. 将缩写替换为全称。例如,将“USA”和“UK”分别替换为“美国”和“英国”,使得数据更加易读。
  3. 将错误拼写的单词替换为正确的单词。例如,将“Cocacola”替换为“Coca-Cola”,以避免错误的统计和分析。

本篇介绍几个常用的映射小技巧。

1. map 映射

map映射是最简单也是最直接的,比如下面的示例,将性别映射成01

import pandas as pd

df = pd.DataFrame({
    "name": ["Lily", "Harry", 
             "Annie", "Joe","Tom"],
    "sex": ["female", "male", 
            "female", "male","male"],
    "grade":["A", "E", "B", "F", "A"],
})

df.sex = df.sex.map({
    "female": 0, 
    "male": 1,
})
df

image.png

2. factorize 映射

map函数映射列的值是最直观的方式,不过如果列的值种类比较多的时候,一个一个映射比较麻烦。
比如下面示例中的 grade 列,不像 sex 列只有两种值。

这时,可以用 factorize 方法来映射。

df = pd.DataFrame({
    "name": ["Lily", "Harry",
             "Annie", "Joe","Tom"],
    "sex": ["female", "male",
            "female", "male","male"],
    "grade":["A", "E", "B", "F", "A"],
})

df.sex = df.sex.factorize()[0]
df.grade = df.grade.factorize()[0]
df

image.png

factorize函数返回的是一个二元元组,第一个元素是映射之后的数字数组,
第二个元素是索引类型,索引的值就是列中各个不同的值。

df.grade.factorize()

image.png
所以代码中用的是 factorize()[0]

这里还有一个小技巧,如果映射后想把得到的值二元化,
比如上面的 grade 列,映射之后有4种不同的值,代表不同的成绩等级。
如果我们只想要不及格F)和及格(非F)两种情况,那么

df.grade = df.grade.factorize()[0]
df.grade = (df.grade == 3).astype("int")
df

image.png

与【pandas小技巧】--列值的映射相似的内容:

【pandas小技巧】--列值的映射

映射列值是指将一个列中的某些特定值映射为另外一些值,常用于数据清洗和转换。 使用映射列值的场景有很多,以下是几种常见的场景: 1. 将字符串类型的列中的某些值映射为数字。例如,将“男”和“女”分别映射为 0 和 1,以便进行机器学习算法的训练和预测。 2. 将缩写替换为全称。例如,将“USA”和“U

【pandas小技巧】--缺失值的列

在实际应用中,数据集中经常会存在缺失值,也就是某些数据项的值并未填充或者填充不完整。缺失值的存在可能会对后续的数据分析和建模产生影响,因此需要进行处理。 `pandas`提供了多种方法来处理缺失值,例如删除缺失值、填充缺失值等。删除缺失值可能会导致数据量减少,填充缺失值则能够尽量保留原始数据集的完整

【pandas小技巧】--拆分列

拆分列是`pandas`中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理。拆分列的使用场景比较广泛,以下是一些常见的应用场景: 1. 处理日期数据:在日期数据中,经常会将年、月、日等信息合并成一列,通过拆分列可以将其拆分成多个新列,方便进行时间序

【pandas小技巧】--统计值作为新列

这次介绍的小技巧不是统计,而是把统计结果作为**新列**和原来的数据放在一起。`pandas`的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,没有把它们合并在一个数据集中来观察。 下面通过两个场景示例来演示如果把统计值作为新列的数据。 # 1. 成绩统计的场景

【pandas小技巧】--DataFrame的显示样式

上一篇介绍了`DataFrame`的显示参数,主要是对`DataFrame`中值进行调整。 本篇介绍`DataFrame`的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。 下面介绍一些针对单个数据和批量数据的样式调整方式

【pandas小技巧】--修改列的名称

重命名 `pandas` 数据中列的名称是一种常见的数据预处理任务。这通常是因为原始数据中的列名称可能不够清晰或准确。例如,列名可能包含空格、大写字母、特殊字符或拼写错误。 使用 `pandas` 的 `rename`函数可以帮助我们更改列名,从而使数据更加清晰和易于理解。此外,重命名列名还可以确保

【pandas小技巧】--按类型选择列

本篇介绍的是`pandas`选择列数据的一个小技巧。之前已经介绍了很多选择列数据的方式,比如`loc`,`iloc`函数,按列名称选择,按条件选择等等。 这次介绍的是按照列的**数据类型**来选择列,按类型选择列可以帮助你快速选择正确的数据类型,提高数据分析的效率。 # 1. 类型种类 `panda

【pandas小技巧】--数据转置

所谓**数据转置**,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理。 `pandas`中`DataFrame`的转置非常简单,每个`DataFrame`对象都有一个`T`属性,通过这个属性就能得到转置之后的`DataFrame`。下面介

【pandas小技巧】--日期相关处理

日期处理相关内容之前`pandas基础`系列中有一篇专门介绍过,本篇补充两个常用的技巧。 # 1. 多列合并为日期 当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用 `to_datetime`函数来处理: ```pytho

【pandas小技巧】--category类型补充

`category`类型在**pandas基础**系列中有一篇介绍数据类型的文章中已经介绍过。`category`类型并不是`python`中的类型,是`pandas`特有的类型。 `category`类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成`category`类型,以及