首页 > 其他分享 >pandas-数值映射和替换

pandas-数值映射和替换

时间:2023-09-08 19:33:45浏览次数:37  
标签:map 映射 df gender 替换 replace pd pandas

pandas-数值映射和替换

目录

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

映射map()

Series.map(arg,na_action=None)
arg: 接收 function、dict 或 Series,表示映射关系;
import pandas as pd  
  
data = {  
    'Name': ['Tom', 'Jerry', 'Spike', 'Tyke'],  
    'Age': [3, 4, 6, 1]  
}  
  
df = pd.DataFrame(data)  
# 使用一个函数映射Name列  
df['Name'] = df['Name'].map({'Tom': 'Top Cat', 'Jerry': 'The Terrorist'})  
print(df)

输入字典dict

import pandas as pd  
  
# 创建一个简单的 DataFrame  
df = pd.DataFrame({'name': ['xiaomin', 'xiaoxin', 'wanglei'], 
                   'age': [29, 25, 31], 
                   'gender':['man','woman','man'],
                   'score':[90,92,98],
                   'home': ['beijing', 'chengdu', 'shanhai'],
                   'indx':['A','V','E'],
                   })  

print(df)
#       name  age gender  score     home indx
# 0  xiaomin   29    man     90  beijing    A
# 1  xiaoxin   25  woman     92  chengdu    V
# 2  wanglei   31    man     98  shanhai    E

gender_map={'man':'1','woman':'0'}
df['gender']=df['gender'].map(gender_map)
print(df)
#       name  age gender  score     home indx
# 0  xiaomin   29      1     90  beijing    A
# 1  xiaoxin   25      0     92  chengdu    V
# 2  wanglei   31      1     98  shanhai    E

输入函数

import pandas as pd  
  
# 创建一个简单的 DataFrame  
df = pd.DataFrame({'name': ['xiaomin', 'xiaoxin', 'wanglei'], 
                   'age': [29, 25, 31], 
                   'gender':['man','woman','man'],
                   'score':[90,92,98],
                   'home': ['beijing', 'chengdu', 'shanhai'],
                   'indx':['A','V','E'],
                   })  
print(df)

def gender_map(x):
    gender = 1 if x == "man" else 0
    return gender
#注意这里传入的是函数名,不带括号
data["gender"] = data["gender"].map(gender_map)
#       name  age gender  score     home indx
# 0  xiaomin   29      1     90  beijing    A
# 1  xiaoxin   25      0     92  chengdu    V
# 2  wanglei   31      1     98  shanhai    E

df['score'] = df['score'].map(lambda x : "%.3f"%x)
print(df)
#       name  age gender   score     home indx
# 0  xiaomin   29      1  90.000  beijing    A
# 1  xiaoxin   25      0  92.000  chengdu    V
# 2  wanglei   31      1  98.000  shanhai    E

替换replace()

DataFrame.replace(self, to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

to_replace: 接收 str、regex、list、dict、Series、int、float 或者 None,表示将被替换的值;
			1)numeric: 等于to_replace的数值将被替换为value
			2)str: 完全匹配to_replace的字符串将被替换为值
			3)regex: 匹配to_replace的正则表达式将被替换为值
value:		接收标量、字典、列表、str、正则表达式,默认为 None;用于替换与 to_replace 匹配的任何值的值;
inplace:	接收布尔值,默认为 False,如果是 True,将修改原来的数据;
limit:		接收 int,默认为 None,用于限制填充次数;
regex:		接收 bool 或与 to_replace 相同的类型,默认为 False,表示是否将 to_replace 或 value 解释为正则表达式
method:		取值为 {'pad','ffill','bfill',无}
# 单数替换
s = pd.Series([0, 1, 2, 3, 4])
s.replace(0, 5)
#0    5
#1    1
#2    2
#3    3
#4    4
#dtype: int64

import pandas as pd  
import numpy as np
# 创建一个简单的 DataFrame  
df = pd.DataFrame(np.arange(1,16).reshape(3,5),
                  columns=list("abcef"))  
print(df)
#     a   b   c   e   f
# 0   1   2   3   4   5
# 1   6   7   8   9  10
# 2  11  12  13  14  15


df.replace([0, 1, 2, 3], 4)


df.replace([0, 1, 2, 3], [4, 3, 2, 1])


s.replace([1, 2], method='bfill')

dtype: int64


>>> df.replace({0: 10, 1: 100})
     A  B  C
0   10  5  a
1  100  6  b
2    2  7  c
3    3  8  d
4    4  9  e
>>> df.replace({'A': 0, 'B': 5}, 100)
     A    B  C
0  100  100  a
1    1    6  b
2    2    7  c
3    3    8  d
4    4    9  e
>>> df.replace({'A': {0: 100, 4: 400}})
     A  B  C
0  100  5  a
1    1  6  b
2    2  7  c
3    3  8  d
4  400  9  e

参考资料

https://zhuanlan.zhihu.com/p/100064394

https://blog.csdn.net/fullbug/article/details/122786172

https://www.cnblogs.com/wang_yb/p/17619979.html

标签:map,映射,df,gender,替换,replace,pd,pandas
From: https://www.cnblogs.com/tian777/p/17688400.html

相关文章

  • 替换滚珠螺杆需要了解哪些参数?
    滚珠螺杆具有定位精度高、高寿命、低污染和可做高速正逆向的传动及变换传动等特性,因具上述特性,滚珠螺杆已成为近来精密科技产业及精密机械产业的定位及测量系统上的重要零组件之一。众所周知,滚珠螺杆是可以替换的,不仅同品牌之间的可以替换,不同品牌间的滚珠螺杆也是可以实现替换的,只......
  • jpa 树的父子节点映射记录
    jpa父子节点映射记录:(加入条件station_code):----------------------------------------------------------------------------@OneToMany(fetch=FetchType.EAGER)@JoinColumn(name="parent_id",referencedColumnName="rela_tree_id")@JoinColumn(name=&......
  • sqlserver中字符串替换其中几个字为打码
    select*fromdocbasewhereisdelete=0updatedocbasesetsubject=STUFF(subject,23,4,'****')whereisdelete=0 updatedocbasesetsubject=STUFF(subject,23,6,'******')whereisdelete=0andLEN(subject)>19STUFF函数也可以用来替换指定的字符串。它的定义如下......
  • Qt中QGraphics类坐标映射关系详解
    1、Item(图元)坐标:属于局部坐标,通常以图元中心为原点(中心对称),非中心对称类,比如dialog类,一般以左上角为原点,正方向x朝右,y朝下。2、setPos的坐标是父类坐标系的坐标,一般对于item位于scene中的应用场景。3、scene(场景)坐标:属于逻辑坐标logicalcoordinates(与QPainter相同),以场......
  • 用断言更好地实现替换重复出现的单词
     断言是指对匹配到的文本位置有要求。也就是说,在有些情况下,我们对要匹配的文本的位置也有一定的要求。为了解决这个问题,正则中提供了一些结构,只用于匹配位置,而不是文本内容本身,这种结构就是断言。常见的断言有三种:单词边界、行的开始或结束以及环视。 1、单词边界(WordBoundary)单......
  • Pandas库在Anaconda中的部署方法
      本文介绍在Anaconda环境中,安装Python语言pandas模块的方法。  pandas模块是一个基于NumPy的开源数据分析库,提供了快速、灵活、易用的数据结构和数据分析工具。它的主要数据结构是Series和DataFrame,可以处理各种数据格式,如CSV、Excel、SQL数据库等,并且支持数据清洗、缺失值处......
  • pandas-遍历和迭代
    pandas-遍历和迭代目录pandas-遍历和迭代iterrows()itertuples()借助zip()foriindf备注参考资料遍历数据是最常见的一种方式,pandas同样也可以遍历。iterrows()或itertuples():这两个方法用于遍历DataFrame的行。iterrows()返回一个迭代器,产生索引和行的元组,而itertup......
  • pandas-数据合并和拆分
    pandas-数据合并和拆分目录pandas-数据合并和拆分数据拆分拆分行拆分列按条件拆分数据合并appendmergeconcatjoin参考资料数据集拆分是将一个大型的数据集拆分为多个较小的数据集,可以让数据更加清晰易懂,也方便对单个数据集进行分析和处理。同时,分开的数据集也可以分别应用不同......
  • Python的pandas库:数据分析工具
    在Python的数据分析领域,pandas库是一个非常强大的工具。它提供了一种灵活的数据结构,可以帮助我们轻松地处理和分析数据。本文将详细介绍pandas库的主要功能和用法,并通过具体案例进行说明。安装与导入首先,确保已经安装了pandas库。如果尚未安装,可以使用以下命令在Python环境中安装:pi......
  • 如何在jupyter notebook中批量替换文本
    在JupyterNotebook中,您可以使用以下步骤来批量替换文本:1.打开JupyterNotebook并导航到包含需要替换文本的笔记本。2.在需要替换的代码或文本的单元格中,使用快捷键`Ctrl+F`(Windows和Linux)或`Command+F`(Mac)打开查找工具。3.在查找工具中输入您要替换的文本,并点击查找下......