首页 > 其他分享 >【pandas小技巧】--列值的映射

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

时间:2023-08-10 12:33:06浏览次数:34  
标签:male 映射 -- grade sex factorize df 列值 pandas

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

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

  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

标签:male,映射,--,grade,sex,factorize,df,列值,pandas
From: https://www.cnblogs.com/wang_yb/p/17619979.html

相关文章

  • 【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用
    在上一篇帖子中,我们学习了Openharmony轻量系统的编译构建https://ost.51cto.com/posts/25293,其中包括了子系统,组件的核心理念、编译构建系统的配置规则等等。下面我们来学习一下编译构建系统的使用。案例:新增组件1:根据功能准备开发套件笔者使用的是润和智能家居开发套件,连接主板......
  • 精准测试探索 | 京东云技术团队
    一、背景什么是精准测试?通常研发提测的需求有代码变更,针对研发的代码变更点以及关联点进行测试,我们称之为精准测试。很多时候,对变更点、影响范围的评估并不是很准确,偶尔会出现影响范围评估不全或者影响范围评估过大的情况。对于影响范围不全,我们所执行的测试用例,就会出现覆盖不全的......
  • 关于智能家居可视化管理平台的建议
    一、方案背景随着现代信息社会的发展,人民的生活水准也在不断提升,人身及财产的安全的需求越来越高。老人在家带孩子的现象普遍存在,老人和小孩成了年轻人的牵挂,工作之余都会都想看看家里的情况。有时候出门忘记关火、带东西等,只能回去处理,浪费时间。传统的家庭防盗监控系统误报率高,无......
  • std::optional的使用
    optional是一个模板类:template<classT>classoptional;它内部有两种状态,要么有值(T类型),要么没有值(std::nullopt)。有点像T*指针,要么指向一个T类型,要么是空指针(nullptr)。std::optional有以下几种构造方式:#include<iostream>#include<optional>usingnamespacestd;intmai......
  • 禁用账号密码使用ssh私钥登录服务器
    1、生成ssh信息id_rsa为私钥,id_rsa.pub为公钥。私钥自己下载到本地电脑妥善保存(丢失后就无法再登陆了)建议删除服务器端的私钥。公钥则可以任意公开。ssh-keygen-trsa--------------------------------------输入生成的名称密码确认密码2、公钥导入到系统中cat/roo......
  • Mac下终端密钥登录linux服务器
    通常我们登录Linux有两种方法:密码或密钥密码登录每次都要输入用户名密码比较麻烦,而使用密钥则可以避免这个问题一、创建密钥对打开终端,输入以下命令ssh-keygen-trsa-C'[email protected]'-t指定密钥类型,默认即rsa,可以省略-C设置注释文字,比如你的邮箱或者服务......
  • Linux基础概念:历史、发展、发行版及命令行工具详解
    ·介绍:Linux是一种开源的、类Unix操作系统内核,它具有广泛的应用领域和强大的稳定性。本文将深入探讨Linux的历史与发展、常见的Linux发行版及其特点,以及常用的Linux命令行工具和基本操作。此外,还会提供个人见解和难点解析。一、Linux的历史与发展Linux的历史可以追溯到1991年,由芬......
  • 用户空间协议栈设计和netmap综合指南
    本文分享自华为云社区《用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度》,作者:LionLong。协议概念1.1、七层网络模型和五层网络模型应用层: 最接近用户的一层,为用户程序提供网络服务。主要协议有HTTP、FTP、TFTP、SMTP、DNS、POP3、DHCP等。表示层: 数据的表示......
  • LiveData的用法
    一.实时数据LiveData在上一节中,我们学习了ViewModel,了解到ViewModel的主要作用是存放页面所需要的各种数据。我们在示例代码中定义了接口,当数据发生变化的时候,采用接口的方式实现对页面的通知。但是这种方式是有缺陷的,当要存储的数据非常多的时候,就要定义大量的接口,代码会显......
  • 一文看懂什么样的网络适合部署智能网卡?
    智能网卡可在网络任务方面卸载服务器CPU,提供内存扩展并执行安全操作、硬件加载等关键任务,在多个网络层为服务器提供额外的计算能力。这种可编程的算力设备本身可以高速执行必要的功能,而不是使用传统基础设施中服务器的资源。随着工作负载的日益增加,越来越多智能网卡正在加速服务器......