生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

318

主题
发表于 2024-3-20 17:04:09 | 查看: 961| 回复: 0

背景

动手学深度学习pytorch:2.2数据预处理练习后记

本来创建了缺失值的表格,后删除最大的缺失值列,且参考了discussion中的他人答案,很好的学习一些代码。

但是当出现多列缺失值都是最大的时候,该如何操作?

解决方案

首先展示去除缺失值最大的列(仅一列的)代码,默认data已创建好。

1.1 创建过程比较笨拙

import os

os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_large.csv')
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price\n')  # 列名
    f.write('NA,Pave,127500\n')  # 每行表示一个数据样本
    f.write('2,NA,106000\n')
    f.write('4,Pavel,NA\n')
    f.write('NA,NA,NA\n')
    f.write('NA,Pavel,NA\n')
    f.write('4,NA,NA\n')
    f.write('NA,Pavee,106000\n')
    f.write('4,NA,106000\n')
    f.write('4,Paver,140000\n')
    f.write('NA,NA,140000\n')

修改以上不同列na可以空值na数量。

1.2 读取并删除空值最多的列(仅一列)

import pandas as pd

data = pd.read_csv(data_file)
print(data)
# 知道每列的nan数
nan_numer = data.isnull().sum(axis=0)

# 找到nan_numer(series)中最大数的索引
nan_max_id = nan_numer.idxmax() #还是选择了第一次出现的num列 不过这个函数比较简洁,直接知道索引
#nan_numer.argmax()#列id索引
# 删除nan最大的列
data1 = data.drop([nan_max_id], axis=1)
data1

1.3 有多列存在相同数量(最多)的空值

nan_numer = data.isnull().sum(axis=0)
nan_max_ids = nan_numer[nan_numer == nan_numer.max()].index
data1 = data.drop(nan_max_ids, axis=1)
data1

该代码将id收集起来作为一个set(ids),一起去除。

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人 ( 萌ICP备20244422号 )

GMT+8, 2024-11-21 21:10 , Processed in 0.085445 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表