#引入相关模块 import numpy as np # pandas和numpy常常结合在一起使用,导入numpy库 import pandas as pd # 导入pandas库 print(pd.__version__) # 打印pandas版本信息
1.4.1
4.11.1 缺失值处理
关于缺失值
- 在能够使用大型数据集训练学习算法之前,通常需要先清理数据, 需要通过某个方法检测并更正数据中的错误。
- 任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,缺少值等。
Pandas 会为缺少的值分配 NaN 值。
缺失值检测
- dropna 根据标签的值中是否存在缺失数据对轴标签进行过滤(删除),可通过阈值调节对缺失值的容忍度
- fillna 用指定值或插值方法(如ffill或bfill)填充缺失数据
- isnull 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值NA
- notnull Isnull的否定式
dropna函数定义:
DataFrame.dropna( axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
axis参数确定是否删除包含缺失值的行或列:
- axis=0或axis='index’删除含有缺失值的行,
- axis=1或axis='columns’删除含有缺失值的列,
how参数当我们至少有一个NA时,确定是否从DataFrame中删除行或列,how='all’或者how=‘any’:
- how='all’时表示删除全是缺失值的行(列)
- how='any’时表示删除只要含有缺失值的行(列)
- thresh=n 表示保留至少含有n个非na数值的行
- subset定义要在哪些列中查找缺失值
In [2]:
df = pd.DataFrame([[ '张三',np.nan,3000, 'M'], [ '李四',28,np.nan,np.NaN] , [ '王五 ',25, np.NaN,'W'], [ '赵六',20,4000,'M'], [ np.NaN,np.NaN,np.NaN,np.NaN] ],columns=[ '姓名', '年龄', '工资', '性别']) df
Out[2]:
姓名 | 年龄 | 工资 | 性别 | |
---|---|---|---|---|
0 | 张三 | NaN | 3000.0 | M |
1 | 李四 | 28.0 | NaN | NaN |
2 | 王五 | 25.0 | NaN | W |
3 | 赵六 | 20.0 | 4000.0 | M |
4 | NaN | NaN | NaN | NaN |
- .isnull() 方法返回一个大小和 df 一样的布尔型 DataFrame,并用 True 表示具有 NaN 值的元素,用 False 表示非 NaN 值的元素。
In [3]:
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 4 columns): # Column Non-Null Count Dtype --