缺失值处理

      objective

  • 应用isnull判断是否有缺失数据NaN
  • 应用fullnull实现缺失值的填充
  • 应用dropna实现缺失值的删除
  • 应用replace实现数据的替换

1. 如何处理nan

  • 获取缺失值的标记方式(NaN或者其他标记方式)
  • 如果缺失值的标记方式是NaN: 
    #判断数据中是否包含NaN
    pd.isnull(data)
    pd.notnull(data)
    #存在缺失值NaN
    1.删除缺失值的:
    dropna(axis='rows')  #不会修改原数据,需要接受返回值
    
    2.替换缺失值:
    fillna(value, inplace=True)
    value:替换成的值
    inplace=True 修改原数据
    inplace=False 不修改原数据
    
    

  • 如果缺失值没有使用NaN标记,比如使用的是 ‘’ ?‘’

        首先用replace 将 ‘ ?’ 替换成NaN,再进行后续处理

2.案例

movie=pd.read_csv('./data.csv')   #获取数据

pd.notnull(movie)                #判断缺失值是否存在

ps:这样比较麻烦,整个数据集一起出来

优化代码:

np.all(pd.notnull(movie))

ps: 如果是pd.isnull()搭配 np.any()使用

替换所有缺失值:

for i in movie.columns:
    if np.all(pd.notnull(movie[i]))==False:
    print(i)
    movie[i].fillna(movie[i].mean(), inplace=True)

3.案例: 

movie=pd.read_csv('./data.csv') #读取数据
movie.head()   #惯例
np.all(pd.notnull(movie)) #里面如果有一个缺失值,那么会返回False
data=movie.dropna()       #删除缺失值
movie[col2].mean()        #计算出col2这列的均值
movie[col2].fillna(movie[col2].mean(),inplace=True) #替换


#打印出有空值的列
for i in movie.columns:
    if np.all(pd.notnull(movie[i]))==False:
    print(i)

4.案例:

#如果缺失值是'?'
data2=pd.read_csv('./data2.csv')
data2=data2.replace(to_replace='?',value=np.nan)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值