原创

【pytorch】zh-v2.d2l数据预处理后记

温馨提示:
本文最后更新于 2024年03月30日,已超过 78 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

背景

动手学深度学习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),一起去除。

正文到此结束
本文目录