pandas——数据清洗之异常处理

异常处理函数

先对数据计算出一个上限和下限,判断数据是否在这个范围内,可以进行替换等操作

常用计算函数:

分位数:df.身高.quantile(0.5) #一半分位数,也就是中位数
中位数:df.身高.median()
平均数:df.身高.mean()
标准差:df.身高.std()
描述函数:df.身高.describe()

判断是否有异常值any()

import pandas as pd
import numpy as np 

df=pd.read_csv('test_innom.csv',encoding='gbk')
print(df.身高)
df_mean=df.身高.mean()
df_std=df.身高.std()
min_da=df_mean-df_std
max_da=df_mean+df_std
print(any((df.身高< min_da )| (df.身高 > max_da) ))
for x in df.身高:
	if (x< min_da )| (x > max_da) :
		print("异常值%d"%x)
print(df_mean)
print(df_std)
print(df.身高.describe())
print(df.身高.median())
print(df.身高.quantile(0.5))

在这里插入图片描述

使用最大值替换超范围值

使用loc函数确定需要修改的数据位置,在对数据进行替换赋值,下面的例子将超出最大值的数据使用不超过最大值的数据替代

import pandas as pd
import numpy as np 

df=pd.read_csv('test_innom.csv',encoding='gbk')
print(df.身高)
df_mean=df.身高.mean()
df_std=df.身高.std()
min_da=df_mean-df_std
max_da=df_mean+df_std
print(any((df.身高< min_da )| (df.身高 > max_da) ))
for x in df.身高:
	if (x< min_da )| (x > max_da) :
		print("异常值%d"%x)
rep_val_max=df.身高[df.身高<max_da].max()
df.loc[df.身高>max_da,'身高']=rep_val_max
print(df.身高)	

在这里插入图片描述

发布了70 篇原创文章 · 获赞 1 · 访问量 2420

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104981892