赞
踩
看下面这张图片,其中有缺失值NaN,处理数据时需要先对缺失值进行处理
获取缺失值的标记方式(NaN或者其他标记方式)
如果缺失值的标记方式是NaN
判断数据中是否包含NaN:
存在缺失值nan:
1、删除存在缺失值的:dropna(axis='rows')
2、替换缺失值:fillna(value, inplace=True)
如果缺失值没有使用NaN标记,比如使用"?"
- # 读取电影数据
- movie = pd.read_csv("./data/IMDB-Movie-Data.csv")
pd.notnull(movie)
- Rank Title Genre Description Director Actors Year Runtime (Minutes) Rating Votes Revenue (Millions) Metascore
- 0 True True True True True True True True True True True True
- 1 True True True True True True True True True True True True
- 2 True True True True True True True True True True True True
- 3 True True True True True True True True True True True True
- 4 True True True True True True True True True True True True
- 5 True True True True True True True True True True True True
- 6 True True True True True True True True True True True True
- 7 True True True True True True True True True True False True
np.all(pd.notnull(movie))
pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan
- # 不修改原数据
- movie.dropna() # 有缺失值的那一行将会被删除
-
- # 可以定义新的变量接受或者用原来的变量名
- data = movie.dropna()
- # 替换存在缺失值的样本的两列
- # 替换填充平均值,中位数
- # movie['Revenue (Millions)'].fillna(movie['Revenue (Millions)'].mean(), inplace=True)
'运行
替换所有缺失值:
- for i in movie.columns:
- if np.all(pd.notnull(movie[i])) == False:
- print(i)
- movie[i].fillna(movie[i].mean(), inplace=True)
数据是这样的:
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)>
解决办法:
- # 全局取消证书验证
- import ssl
- ssl._create_default_https_context = ssl._create_unverified_context
'运行
处理思路分析:
- # 把一些其它值标记的缺失值,替换成np.nan
- wis = wis.replace(to_replace='?', value=np.nan)
- # 删除
- wis = wis.dropna()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。