登录
首页大数据时代pandas是如何检测和处理缺失数据的?
pandas是如何检测和处理缺失数据的?
2020-07-17
收藏

我们都知道pandas 是一款功能强大的python库,基于Numpy,支持高性能的矩阵运算,通常在数据挖掘和数据分析领域应用较多,但是pandas 数据清洗功能也不能忽视,今天小编就为大家分享pandas是如何检测和处理缺失数据的。

一、缺失值是什么?

缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。通常按照数据缺失机制,可分为以下几种:

1.可忽略的缺失

(1)完全随机缺失 MCAR全称:missing completely at random,顾名思义,指的是数据的缺失是随机的,与已观察到的和未观察到的数据无关

(2)随机缺失MAR,全称:missing at random,该类数据的缺失依赖于其他完全变量

2.不可忽略的缺失NIM(全称:non-ignorable missing ) 或者非随机缺失,这种数据的缺失既依赖于完全变量又依赖于不完全变量本身

二、判断是否有缺失值

1.创建数据

import pandas as pd

import numpy as np

data = pd.DataFrame({'a': [1. 2. 4. np.nan,7. 9], 'b': ['a', 'b', np.nan, np.nan, 'd', 'e'], 'c': [np.nan, 0. 4. np.nan, np.nan, 5], 'd': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})

a    b    c   d

0  1.0    a  NaN NaN

1  2.0    b  0.0 NaN

2  4.0  NaN  4.0 NaN

3  NaN  NaN  NaN NaN

4  7.0    d  NaN NaN

5  9.0    e  5.0 NaN

2.判断是否有缺失值及统计

print(data.isnull().any())

a    True

b    True

c    True

d    True

print(data.isnull().sum())  #t统计每一列的缺失值个数

a    1

b    2

c    3

d    6

三、pandas缺失值处理一般采用两种方法

1.删除;

pandas缺失值处理最原始的方法,pandas删除缺失值,通常通过dropna的方法,使用dropna的前提是,缺失值的类型必须是np.nan

删除缺失值为np.nan的所在行

movie.dropna()

参数说明:

axis 参数用于控制行或列,跟其他不一样的是,axis=0 (默认)表示操作行,axis=1 表示操作列。

how 参数可选的值为 any(默认) 或者 all。any 表示一行/列有任意元素为空时即丢弃,all 一行/列所有值都为空时才丢弃。

subset 参数表示删除时只考虑的索引或列名。

thresh参数的类型为整数,它的作用是,比如 thresh=3.会在一行/列中至少有 3 个非空值时将其保留。

2.填充。

最常见的是使用 fillna 完成填充。

data.fillna(0)

除了可以使用标量来填充之外,还可以使用前一个或后一个有效值来填充。

设置参数 method=‘pad’ 或 method=‘ffill’ 可以使用前一个有效值来填充。

设置参数 method=‘bfill’ 或 method=‘backfill’ 可以使用后一个有效值来填充。

3.替换。

有时候,某些异常值也会被当做缺失值来处理,可以使用 replace 方法来替换缺失值。

比如:  user_info.replace({“age”: 40. “birth”: pd.Timestamp(“1978-08-08”)}, np.nan) #将年龄40替换 日期为1978-08-08也替换

数据分析咨询请扫描二维码

客服在线
立即咨询