Python之Pandas超详细入门教程 -- 第五章 Pandas缺失值处理【进阶篇】

1 如何处理NAN

  • 获取缺失值的标记方式(NaN或者其他标记方式)

    • 如果缺失值的标记方式是NaN

      • 判断数据中是否包含NaN:

        • pd.isnull(df),
        • pd.notnull(df)
      • 存在缺失值nan:

        • 1、删除存在缺失值的:dropna(axis=‘rows’)
          • 注:不会修改原数据,需要接受返回值
        • 2、替换缺失值:fillna(value, inplace=True)
          • value:替换成的值
          • inplace:True:会修改原数据,False:不替换修改原数据,生成新 的对象
    • 如果缺失值没有使用NaN标记,比如使用"?"

      • 先替换‘?’为np.nan,然后继续处理

2 案例:电影数据的缺失值处理

  • 首先读取了csv电影数据,观察发现数据中存在NAN缺失值。
movie_data = pd.read_csv("./data/IMDB-Movie-Data.csv")
movie_data.tail()

在这里插入图片描述

  • 接着需要对数据进行是否存在NAN判断,常用api有两个如下:
pd.notnull(movie_data)  # 数据中不是NAN则返回True,是NAN则返回False

pd.isnull(movie_data)  # 数据中是NAN则返回True,不是NAN则返回False
  • 上述数据中已经判断存在NAN,接下来需要对数据进行清洗,可以删除或者替换缺失值NAN
  1. 删除
    pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan。

    注:dropna删除缺失值数据方法是删除存在NAN的整行数据。

# 不修改原数据
movie_data.dropna()

# 可以定义新的变量接受或者用原来的变量名
data = movie_data.dropna()
  1. 替换缺失值
movie_data[i].fillna(value=movie_data[i].mean(), inplace=True)

完整代码:

# 对数据中每一列进行判断,只要存在NAN,就用这列数据的平均值替换NAN
for i in movie_data.columns:
    if np.any(pd.isnull(movie_data[i])) == True:
        movie_data[i].fillna(value = movie_data[i].mean(), inplace = True)
        
movie_data

3 不是缺失值NAN,其他默认标记

  • 比如缺失值是?或者/等符号,那么该如何处理呢?处理思路分析:

  • 1、先替换,将其他默认标记符号替换为np.nan

    扫描二维码关注公众号,回复: 14454843 查看本文章
    • df.replace(to_replace=, value=)
      • to_replace:替换前的值
      • value:替换后的值
# 把一些其它值标记的缺失值,替换成np.nan
wis = wis.replace(to_replace='?', value=np.nan)
  • 2、在进行缺失值的处理,删除或者替换操作
# 删除
wis = wis.dropna()

注:NAN类型实际是float浮点型。

type(np.NAN)

float

创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

Dragon少年 | 文

如果本篇博客有任何错误,请批评指教,不胜感激 !
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hhladminhhl/article/details/109194206