发布网友 发布时间:2024-10-01 23:58
共1个回答
热心网友 时间:2024-10-28 23:59
本文用到的Excel截图如下:
数值替换就是将数值A替换成数值B,可以用在异常值处理、缺失值填充处理中。主要包含一对一替换、多对一替换、多对多替换这3种情形。
替换开始前先看一下原始数据结构
importpandasaspddf=pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')print(df)result:
姓名年龄0小明23.01小刚98.02小红876.03李华65.04小美-6.05张三34.06李四13.07王五98.5我们可以看到,年龄这一列的876、-6、98.5都是不合理的数组,现在进行替换
1.一对一替换一对一替换就是将某一块区域中的一个值全部替换成另一个值。
df=pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')print(df['年龄'].replace(-6,6))result:
023.0198.02876.0365.046.0534.0613.0798.5Name:年龄,dtype:float64对于有规律的替换对象,可以使用replace方法实现批量替换。
eg:
importpandasaspddf=pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx',sheet_name='Sheet2')print(df)result:
姓名年龄0小明23.01小刚NaN2小红876.03李华65.04小美NaN5张三34.06李四NaN7王五98.5替换后:
importpandasaspdimportnumpyasnpdf=pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx',sheet_name='Sheet2')print(df.replace(np.NaN,0))result:
姓名年龄0小明23.01小刚0.02小红876.03李华65.04小美0.05张三34.06李四0.07王五98.5有时候需要对全表进行替换,此时replace方法相当于前面缺失值填充的fillna方法(该方法在pandas系列之缺失值的处理一文中可以看到)
注:np.NaN是python中对缺失值的一种表示方法
2.多对一替换还是文章开头的表格数据,现在要将年龄这一列的876、-6、98.5这三个数字进行替换
df=pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')print(df.replace([876,-6,98.5],25))result:
姓名年龄0小明23.01小刚98.02小红25.03李华65.04小美25.05张三34.06李四13.07王五25.0这里是说将[876, -6, 98.5]的值都替换成25
3.多对多替换多对多替换其实就是某个区域的多个一对一替换。比如将876换成整除10的结果,-6变成相反数,98.5直接保留整数部分
是先对表进行布尔选择选择行,然后通过普通索引选择列
姓名年龄0小明23.01小刚98.02小红876.03李华65.04小美-6.05张三34.06李四13.07王五98.50result:
姓名年龄0小明23.01小刚98.02小红876.03李华65.04小美-6.05张三34.06李四13.07王五98.51