Pandas缺失值处理
判断数据是否为NaN:
pd.isnull(df),
pd.notnull(df)
判断缺失值是否存在
np.all(pd.notnull(data)) # 返回false代表有空值
np.any(pd.isnull(data)) #返回true代表有空值
处理方式:
-
存在缺失值nan,并且是np.nan:
-
1、删除缺失值:dropna(axis='rows')
- 注:不会修改原数据,需要接受返回值
-
2、替换缺失值:fillna(value, inplace=True)
- value:替换成的值
- inplace:True:会修改原数据,False:不替换修改原数据,生成新的对象
-
# 替换存在缺失值的样本的两列
# 替换填充平均值,中位数
movie['Revenue (Millions)'].fillna(movie['Revenue (Millions)'].mean(), inplace=True)
- 不是缺失值nan,有默认标记的
- 将不是nan的值替换成np.nan——df.replace(to_replace,value)
- to_replace- 替换前的值—被替换的
- value—要修改成的值,上岗的值
- 再按照是nan的方式处理
- 将不是nan的值替换成np.nan——df.replace(to_replace,value)
# 把一些其它值标记的缺失值,替换成np.nan
wis = wis.replace(to_replace='?', value=np.nan)
SSL报错
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