Python数据分析

Python数据分析 知识量:13 - 56 - 232

5.4 处理异常值><

检测异常值- 5.4.1 -

异常值就是根据需要预设的数据规则来判断,超出了合理范围的值。判断标准根据不同的任务来确定,例如:对于某次考试,3科平均分少于60就是异常值,下面是具体示例:

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam.xlsx")
df['check']=(df['Chinese']+df['English']+df['Math'])/3<60
print(df)

运行结果为:

       Name     Sex  Chinese  English  Math  check
0      Noah    male       90       50    66  False
1      Emma  female       56       56    55   True
2      Noah    male       90       50    66  False
3    Olivia  female       86       87    44  False
4      Liam    male       55       88    69  False
5    Sophia  female       90       66    96  False
6      Liam    male       55       88    69  False
7  Isabella  female       66       85    55  False

在DataFrame对象中增加列check,用于检测3科平均分是否小于60,如果是就会标记为True。

处理异常值- 5.4.2 -

对异常值的处理可以采取删除、填充、单独提取分析等方式。其中,删除操作与处理缺失值和重复值时基本一样。单独提取涉及数据的选择,将在后续部分介绍。

对于异常值的填充(替换)可以使用函数replace(to_replace, value) :

  • to_replace 表示需要替换的值。

  • value 表示替换后的值。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam.xlsx")
df['check']=(df['Chinese']+df['English']+df['Math'])/3<60
print(df.replace(True,'B'),'\n')  # 替换单个数值
print(df.replace({True:'B',False:'A'}))  # 替换多个数值,使用字典传递参数

运行结果为:

       Name     Sex  Chinese  English  Math  check
0      Noah    male       90       50    66  False
1      Emma  female       56       56    55      B
2      Noah    male       90       50    66  False
3    Olivia  female       86       87    44  False
4      Liam    male       55       88    69  False
5    Sophia  female       90       66    96  False
6      Liam    male       55       88    69  False
7  Isabella  female       66       85    55  False 

       Name     Sex  Chinese  English  Math check
0      Noah    male       90       50    66     A
1      Emma  female       56       56    55     B
2      Noah    male       90       50    66     A
3    Olivia  female       86       87    44     A
4      Liam    male       55       88    69     A
5    Sophia  female       90       66    96     A
6      Liam    male       55       88    69     A
7  Isabella  female       66       85    55     A

replace()函数默认情况下不会改变原数据对象,可以设置参数inplace=True来使替换对原数据对象生效,即改变原数据对象。