基于pandas的数据清洗

        假设我们有一份不完整的DataFrame类型的数据,我们在使用它之前要对其进行数据的清洗。

        使用pandas我们可以有两种方式来实现对数据的清洗

先假设我们存在下面一组不完整的数据:

import numpy as np
import pandas as pd
from pandas import DataFrame,Series
df=DataFrame(data=np.random.randint(0,100,(12,10)))
df.iloc[3,3]=None
df.iloc[1,7]=None
df.iloc[6,6]=None
df.iloc[8,9]=None
df.iloc[3,9]=None

1.删除缺失值所在的行(一般情况下删除行,特殊情况下也可以删除列)  

方法①:

首先用isnull()函数返回df所有数据哪些为空(返回布尔型),再用any()函数检测行或列中是否存在True

在用loc()函数与index属性得到缺失值所在行,把他删去即可。

# any用来检测行或列中是否存在True
df.isnull().any(axis=1)
df.loc[df.isnull().any(axis=1)].index
df.drop(labels=df.loc[df.isnull().any(axis=1)].index,axis=0) #可以指定inplace=True

方法②:

与①同理,只需把isnull()改为notnull(),把any()改为all()即可。

df.notnull().all(axis=1)
df.loc[df.notnull().all(axis=1)]

方法③:

最简单的方法,直接用dropna()函数指定行或列删除即可。

df.dropna(axis=0)

2.将缺失值进行填充

        一般情况下我们直接将缺失值所在行删除,如果在特殊情况下删除所有缺失行造成的成本过大(比如10行数据中有6行存在缺失值),我们可以将缺失值进行合理化的填充。

使用fillna()函数可以帮助我们把缺失值进行填充

df.fillna(method='ffill',axis=1) #将缺失值所在行向前填充
df.fillna(method='bfill',axis=1) #将缺失值所在行向后填充
df.fillna(method='ffill',axis=0) #将缺失值所在列向前填充
df.fillna(method='bfill',axis=0) #将缺失值所在列向后填充

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值