目录
- np.nan的判定
- np.nan处理 将当前列的nan位置用平均数进行代替
-
np.nan的判定
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200711215417456.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTkyNTM3,size_16,color_FFFFFF,t_70)
np.nan处理 将当前列的nan位置用平均数进行代替
jupyter notebook
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200831171003114.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTkyNTM3,size_16,color_FFFFFF,t_70#pic_center)
源码
def fill_ndarray(t1):
for i in range(t1.shape[1]): # 遍历每一列
temp_col = t1[:, i] # 当前的一列
nan_num = np.count_nonzero(temp_col != temp_col)
if nan_num != 0: # 不为0,说明当前这一列中有nan
temp_not_nan_col = temp_col[temp_col == temp_col] # 选中当前一列不为nan的
# 选中当前为nan的位置,把当前一列不为nan的数求平均值后,填充在nan的位置
temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
return t1
if __name__ == '__main__':
t1 = np.arange(12).reshape((3, 4)).astype("float")
t1[1, 2:] = np.nan
print(t1)
print("*" * 100)
t1 = fill_ndarray(t1)
print(t1)