pandas 缺失值 异常值处理

目录

    • 缺失值
      • 缺失值的判定
        • pd.isnull()
        • pd.notnull()
      • 缺失值的处理
        • pd.dropna()
        • pd.drop_duplicates()
        • pd.fillna()
    • 异常值
      • 异常值处理

缺失值

缺失值的判定

pandas 缺失值 异常值处理_第1张图片

pd.isnull()

pandas 缺失值 异常值处理_第2张图片

pd.notnull()

pandas 缺失值 异常值处理_第3张图片

pandas 缺失值 异常值处理_第4张图片
错误筛选

pandas 缺失值 异常值处理_第5张图片

缺失值的处理

pd.dropna()

pandas 缺失值 异常值处理_第6张图片

pandas 缺失值 异常值处理_第7张图片

pd.drop_duplicates()

df = pd.DataFrame({'color':['red','blue','red','red'],'price':[10,15,20,10]})
display(df)

pandas 缺失值 异常值处理_第8张图片

如果使用df3 = pd.concat([df1,df2],axis = 1)生成新的DataFrame,新的df3中columns相同,使用drop_duplicates()会出问题

# 按color这一列, 清除重复数据
df.drop_duplicates('color')

在这里插入图片描述

pd.fillna()

t.mean()会求当前所有列为nan的平均值
pandas 缺失值 异常值处理_第9张图片

pandas 缺失值 异常值处理_第10张图片

异常值

异常值处理

处理标准:根据正太分布 将过大或者过小的数据删除

即x - x_mean > 3σ该值异常值

σ:std标准差

x_mean:平均值

import pandas as pd
import numpy as np


df = pd.DataFrame(np.random.randn(100000,3),columns = ['red','green','blue'])
cond = df.abs() - df.mean() > 3*df.std()
cond.sum()  # 小于3σ标准的总和
# 让小于3σ标准的那些作为条件 即布尔索引
# 借助any()函数, 测试是否有True,有一个或以上返回True,反之返回False
cond = cond.any(axis = 1)
df2 = df.drop(labels=df[cond].index)

pandas 缺失值 异常值处理_第11张图片

你可能感兴趣的:(Pandas)