什么是缺失值?
就是数据缺少的数据,在 pandas 是 nan 标记,但是实际数据文件中可能会用另外一种方式标记,比如:问号。
对于缺失值,我们要进行如下步骤处理:
- 如何判断缺失值?
- 对于缺失值如何处理?
- 对于 nan 标记缺失值处理
- 填充
- 删除
- 对于非 nan 标记缺失值处理
- 先将非 NaN 替换 NaN
- 对于 nan 标记缺失值处理
import pandas as pd data = pd.read_csv("./data/movie.csv") # 1. 判断缺失值 data.describe() # 初步是否有缺失值,但是不准确 pd.notnull(data) # 如果值不是 nan, 则对应位置的值为 True np.all(movie.notnull()) # False 表示有缺失值 np.any(movie.isnull()) # True 表示有缺失值 # 2. 处理缺失值:缺失值使用 nan 标记 for column in data.columns: # 1. 先判断每一列是否有缺失值 if not np.all(data[column].notnull()): # 2. 使用均值来填充缺失值 mean_value = data[column].mean() # 3. 将均值填充 NaN data[column].fillna(mean_value, inplace=True) # inplace 就地 # 3. 处理缺失值:缺失值使用非 nan 标记 # 3.1 先将缺失值标记符号转换为 pandas 的 nan 标记 # 3.2 再进行 dropna 或者 fillna 处理 data = pd.read_csv("./data/breast-cancer-wisconsin.data") # 判断 data 中是否存在 ? 数据 np.any(data.values == "?") # 将 ? 替换为 nan 标记 data = data.replace(to_replace='?', value=np.nan) # 删除包含 nan 的行数据 data = data.dropna()