数据清洗之去除空值NaN和空格

       在我们人工进行数据采集时,难免会有遗漏或者误采的情况,数据中经常可能会有空值(NAN)和空格出现。在进行数据分析和处理之前,进行数据清洗是很有必要的流程,同时也是整个数据分析过程中最为重要的环节。

在叙述方法之前,先构造一个含有空格和空值的DataFrame类型的数据:

# 导入相应模块
import numpy as np
import pandas as pd
from numpy import nan as NaN

data = {'name':['Jack','T om','Ma ry'],
        'age':[18,19,NaN ],
       'gender':['m',NaN,NaN]}
df = pd.DataFrame(data)
df

第一步,数据清洗——填充空值fillna():

def data_cleaning1(data):
    cols = data.columns.tolist()
    for col in cols:
        if data[col].dtype == 'object':
            data[col].fillna('缺失数据',inplace=True ) # inplace=True,表在原数据上进行更改
        else:
            data[col].fillna(0,inplace=True)
    return data
df = data_cleaning(df)
df

知识补充,函数fillna():

# 功能:使用指定的方法填充NA / NaN值
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)


# 参数:value : 变量,字典,Series or DataFrame 
# 用于填充缺失值(例如0),或者指定为每个索引(对于Series)或列(对于DataFrame)使用哪个字
# 典/Serise/DataFrame的值。(不在字典/Series/DataFrame中的值不会被填充)

# method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, 默认值 None ;
# pad/ffill:用前一个非缺失值去填充该缺失值
# backfill/bfill:用下一个非缺失值填充该缺失值
# None:指定一个值去替换缺失值(缺省默认这种方式)

# axis :修改填充方向,{0->‘index’, 1->‘columns’}

# inplace : boolean, 默认值 False,生成新数据。如果为Ture,直接在原数据上进行更改

# limit : int, 默认值 None; 限制填充个数

# downcast : 默认是None

第二步,数值清洗2——填充空格(.replace(' ',''):

 针对字符串的一个常用操作replace(替换),将空格用无字符替换,如下

def data_cleaning2(data,*cols):
    for c in cols:
        data[c] = data[c].str.replace(' ','')
    return data
df = data_cleaning2(df,'name')
df

 以上,整理的清洗数据的空值和空格的方法。第一步的方法思路,判断数据当前列为字符还是整型,是字符采用‘缺失数据’填充,若为其它则用0填充。第二步的方法思路,将当前列的数据中的空格采用无字符替换。

 

 

 

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值