Pandas数据处理(二):缺失值处理

引子:大数据下,缺失值处理往往会被数据分析师忽略,比如自己。极端值的处理往往会得到比较多的重视,因为极端值直接改变整体的均值;受限于数据生产链路问题,极端值出现也非常高频。但是,缺失值却往往会被忽视。
目前,简单的处理方式是直接补成0或者过滤掉。

环境及文件配置

import pandas as pd 
import numpy as np
df2=pd.read_csv('/Users/lushikang/Documents/Reference/learning_python/data_virtualization/pokemon.csv')
df2.info()
#仅作为实验考虑,数据过于规整,需人工制造出缺失值
df2=df2.replace(60, np.nan)

删除法

#过滤掉某个变量是空值的行,本质仍然是利用返回布林值的函数选择pandas的行
df2[df2.Attack.notnull()]
df2[df2.Attack.isnull()]
#dropna方法
df2.dropna(axis=0, how='any')
df2.dropna(axis=0, how='any', thresh=3)
df2.dropna(axis=0, how='any', subset=['Attack', 'HP'])

填充法

#填充为某个常数
df2.Attack.fillna(0)
#向前填充或者向后填充
df2.Attack.fillna(method='ffill')#向前填充
df2.Attack.fillna(method='bfill')#向后填充
#插值法
df2.Attack.interpolate()

缺失值的出现

#极端值替换
df2=df2.replace(60, np.nan)
#对特定列的极端值进行替换
df2.replace({'Attack':40, 'HP':50}, np.nan)
#记录不规范的进行替换
df2.replace('unknown', np.nan)
df2.replace(r'\s+', np.nan, regex=True)

使用其它对象填充缺失值

Attack_new=df2.Attack.copy()
#inplace参数的效果是,直接改变原来的series,而不是创造一个副本
Attack_new.fillna('fillna', inplace=True)
Attack_new
df2.Attack.combine_first(Attack_new)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 缺失值简介 造成数据缺失的原因 有些信息暂时无法获取。例如小越现在在看哪个小姐姐 有些信息是被遗漏的。可能是因为输...
    1想得美阅读 18,604评论 1 12
  • 第八课:案例分析 - 泰坦尼克数据 本节课将重点分析泰坦尼克号沉船事故,我们将探索是什么因素决定了最后是否生还。我...
    Lochaiching阅读 3,065评论 0 11
  • 原文首发于我的博客欢迎关注 当我们拿到一批数据的时候,往往都是“不干净”的,而缺失值是最常见也是最容易发现的。不同...
    tikyle阅读 11,713评论 0 8
  • 一、认识缺失值 在我们的数据分析过程中,经常会碰到缺失值的情况。缺失值产生的原因很多,比如人工输入失误,系统出错,...
    鸣人吃土豆阅读 6,246评论 0 11
  • 数据形式 数据读取 数据预处理 数据收集及读取 很多人认为数据分析就是将数据可视化或者对数据趋势做出预测,其实是不...
    Clemente阅读 2,190评论 0 5