【pandas小技巧】--列值的映射
映射列值是指将一个列中的某些特定值映射为另外一些值,常用于数据清洗和转换。
使用映射列值的场景有很多,以下是几种常见的场景:
- 将字符串类型的列中的某些值映射为数字。例如,将“男”和“女”分别映射为 0 和 1,以便进行机器学习算法的训练和预测。
- 将缩写替换为全称。例如,将“USA”和“UK”分别替换为“美国”和“英国”,使得数据更加易读。
- 将错误拼写的单词替换为正确的单词。例如,将“Cocacola”替换为“Coca-Cola”,以避免错误的统计和分析。
本篇介绍几个常用的映射小技巧。
1. map 映射
map映射是最简单也是最直接的,比如下面的示例,将性别映射成0和1。
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

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

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

所以代码中用的是 factorize()[0]。
这里还有一个小技巧,如果映射后想把得到的值二元化,
比如上面的 grade 列,映射之后有4种不同的值,代表不同的成绩等级。
如果我们只想要不及格(F)和及格(非F)两种情况,那么
df.grade = df.grade.factorize()[0]
df.grade = (df.grade == 3).astype("int")
df

【pandas小技巧】--列值的映射的更多相关文章
- pandas小技巧
1. 删除列 import pandas as pd df.drop("Unnamed: 0", axis=1, inplace=True) 2. 转换列的格式 df[" ...
- pandas 小技巧
1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ...
- Pandas一些小技巧
Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ...
- [转载]Js小技巧||给input type=“password”的输入框赋默认值
http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...
- Tensorflow小技巧整理:修改张量特定元素的值
TensorFlow小技巧整理:修改张量特定元素的值 最近在做一个摘要生成的项目,过程中遇到了很多小问题,从网上查阅了许多别人解决不同问题的方法,自己也在旁边开了个jupyter notebook搞些 ...
- python – 基于pandas中的列中的值从DataFrame中选择行
如何从基于pandas中某些列的值的DataFrame中选择行?在SQL中我将使用: select * from table where colume_name = some_value. 我试图看看 ...
- laravel获取checkbox值的小技巧
以前老是用三元运算符来判断,现在有了更好的方法: 1.html代码 <input type="hidden" name="approved" value= ...
- sql里的多行多列转一行多列小技巧
---恢复内容开始--- [ 今天下午接受了一个紧急小任务,是将一组比赛记录统计出来,将象棋游戏玩家的两条记录在一行里面显示,进数据库看之后是首先想到的是行转列,但是一开始就觉得不对,后来写到一半确实 ...
- ssas 为绑定指定的大小太小,导致一个或多个列值被截断
错误信息:ssas 为绑定指定的大小太小,导致一个或多个列值被截断 如果更改了某个维度或是事实表的字段长度,在处理CUBE时提示此错误,我们要做以下更新: 1.刷新数据源视图. 2.打开多维数据集,查 ...
- WinForm 清空界面控件值的小技巧
原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextB ...
随机推荐
- 数据治理之关键环节元数据管理开源项目datahub探索
@ 目录 概述 定义 核心功能 概念 元数据应用 其他开源 架构 概览 组件 元数据摄取架构 服务体系结构 本地部署 环境要求 安装 摄取样例 摄取入门 介绍 核心概念 命令行MySQL摄取示例 配置 ...
- 2021-12-13:字符串解码。给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k
2021-12-13:字符串解码.给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k ...
- 2021-11-14:Fizz Buzz。给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i
2021-11-14:Fizz Buzz.给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i ...
- Django报错No module named django.core.urlresolvers
当需要测试django能否解析网站根路径的URL,并将其对应到我们编写的某个视图函数上时,使用下面的语句 from django.core.urlresolvers import resolve 执行 ...
- Python进行大文件的备份
Python进行大文件的备份的思路:每次仅从原文件中读取指定字符的内容后写入新文件,然后循环操作. def copy_big_file(): # 接收用户输入的文件名 old_file = input ...
- 某表格常用api
这是一个神奇的网站,可作为免费的数据存储平台,已白嫖多年 通过调用接口可以方便的实现增删改查.修改www前缀为vip,还能嫖vip服务器 我常常用来写入程序的日志记录,记录/更新一些关键key 不需要 ...
- CKS 考试题整理 (10)-Dockerfile检测
Task 分析和编辑给定的Dockerfile /cks/docker/Dockerfile(基于ubuntu:16.04 镜像), 并修复在文件中拥有的突出的安全/最佳实践问题的两个指令. 分析和编 ...
- 行行AI人才直播第2期:八友科技创始人梁斌博士《大模型训练数据的一些事》
行行AI人才是顺顺智慧和博客园合作运营的AI行业人才全生命周期服务平台. 自从 OpenAI 发布 ChatGPT 4.0 之后,大模型热度一直不减,国内不管是大厂还是创业团队纷纷杀入大模型领域,大模 ...
- 【后端面经-Java】Java创建线程的方法简介
目录 1. 线程的基本概念 1.1 线程 1.2 线程状态和生命周期 2. 创建线程的四种方法 2.1 继承Thread类 2.2 实现Runnable接口 2.3 实现Callable接口 2.4 ...
- ABP - 缓存模块(2)
1. 缓存模块源码解析 个人觉得 ABP 分布式缓存模块有三个值得关注的核心点.首先是 AbpRedisCache 类继承了微软原生的 RedisCache,并 通过反射的方式获取RedisCache ...