本文用到的Excel截图如下:
数值替换就是将数值A替换成数值B,可以用在异常值处理、缺失值填充处理中。主要包含一对一替换、多对一替换、多对多替换这3种情形。
替换开始前先看一下原始数据结构
import pandas as pd
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df)
result:
姓名 年龄
0 小明 23.0
1 小刚 98.0
2 小红 876.0
3 李华 65.0
4 小美 -6.0
5 张三 34.0
6 李四 13.0
7 王五 98.5
我们可以看到,年龄这一列的876、-6、98.5都是不合理的数组,现在进行替换
1.一对一替换
一对一替换就是将某一块区域中的一个值全部替换成另一个值。
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df['年龄'].replace(-6, 6))
result:
0 23.0
1 98.0
2 876.0
3 65.0
4 6.0
5 34.0
6 13.0
7 98.5
Name: 年龄, dtype: float64
对于有规律的替换对象,可以使用replace方法实现批量替换。
eg:
import pandas as pd
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx', sheet_name='Sheet2')
print(df)
result:
姓名 年龄
0 小明 23.0
1 小刚 NaN
2 小红 876.0
3 李华 65.0
4 小美 NaN
5 张三 34.0
6 李四 NaN
7 王五 98.5
替换后:
import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx', sheet_name='Sheet2')
print(df.replace(np.NaN, 0))
result:
姓名 年龄
0 小明 23.0
1 小刚 0.0
2 小红 876.0
3 李华 65.0
4 小美 0.0
5 张三 34.0
6 李四 0.0
7 王五 98.5
有时候需要对全表进行替换,此时replace方法相当于前面缺失值填充的fillna方法(该方法在pandas系列之缺失值的处理|Python 主题月一文中可以看到)
注: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.0
1 小刚 98.0
2 小红 25.0
3 李华 65.0
4 小美 25.0
5 张三 34.0
6 李四 13.0
7 王五 25.0
这里是说将[876, -6, 98.5]的值都替换成25
3.多对多替换
多对多替换其实就是某个区域的多个一对一替换。比如将876换成整除10的结果,-6变成相反数,98.5直接保留整数部分
是先对表进行布尔选择选择行,然后通过普通索引选择列
import pandas as pd
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.replace({876: 87, -6: 6, 98.5: 98}))
result:
姓名 年龄
0 小明 23.0
1 小刚 98.0
2 小红 87.0
3 李华 65.0
4 小美 6.0
5 张三 34.0
6 李四 13.0
7 王五 98.0