当前位置:   article > 正文

pandas对缺失值NaN处理_pandas nan 处理

pandas nan 处理

看下面这张图片,其中有缺失值NaN,处理数据时需要先对缺失值进行处理

1 .如何处理缺失值nan

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

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

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

      • pd.isnull(df),   【有缺失值时返回True,否则False】
      • pd.notnull(df)    【与isnull相反】
    • 存在缺失值nan:

      • 1、删除存在缺失值的:dropna(axis='rows')

        • 注:不会修改原数据,需要接受返回值
      • 2、替换缺失值:fillna(value, inplace=True)

        • value:替换成的值
        • inplace:True:会修改原数据,False:不替换修改原数据,生成新的对象
  • 如果缺失值没有使用NaN标记,比如使用"?"

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

2. 电影数据的缺失值处理

  • 电影数据文件获取
  1. # 读取电影数据
  2. movie = pd.read_csv("./data/IMDB-Movie-Data.csv")

2.1 判断缺失值是否存在

  • pd.notnull()
pd.notnull(movie)
  1. Rank Title Genre Description Director Actors Year Runtime (Minutes) Rating Votes Revenue (Millions) Metascore
  2. 0 True True True True True True True True True True True True
  3. 1 True True True True True True True True True True True True
  4. 2 True True True True True True True True True True True True
  5. 3 True True True True True True True True True True True True
  6. 4 True True True True True True True True True True True True
  7. 5 True True True True True True True True True True True True
  8. 6 True True True True True True True True True True True True
  9. 7 True True True True True True True True True True False True

  • np.all(pd.notnull(movie))
    

  • pd.isnull()

2.2 存在缺失值nan,并且是np.nan

  • 1、删除

pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan

  1. # 不修改原数据
  2. movie.dropna() # 有缺失值的那一行将会被删除
  3. # 可以定义新的变量接受或者用原来的变量名
  4. data = movie.dropna()
  • 2、替换缺失值
  1. # 替换存在缺失值的样本的两列
  2. # 替换填充平均值,中位数
  3. # movie['Revenue (Millions)'].fillna(movie['Revenue (Millions)'].mean(), inplace=True)
'
运行

替换所有缺失值:

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

2.3 不是缺失值nan,有默认标记的

数据是这样的:

wis = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data")

以上数据在读取时,可能会报如下错误:

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)>

解决办法:

  1. # 全局取消证书验证
  2. import ssl
  3. ssl._create_default_https_context = ssl._create_unverified_context
'
运行

处理思路分析:

  • 1、先替换‘?’为np.nan
    • df.replace(to_replace=, value=)
      • to_replace:替换前的值
      • value:替换后的值
  1. # 把一些其它值标记的缺失值,替换成np.nan
  2. wis = wis.replace(to_replace='?', value=np.nan)

  • 2、进行缺失值的处理
  1. # 删除
  2. wis = wis.dropna()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/931812
推荐阅读
相关标签
  

闽ICP备14008679号