【PyTorch】zh-v2.d2l数据预处理后记
背景
动手学深度学习pytorch:2.2数据预处理练习后记
本来创建了缺失值的表格,后删除最大的缺失值列,且参考了discussion中的他人答案,很好的学习一些代码。
但是当出现多列缺失值都是最大的时候,该如何操作?
解决方案
首先展示去除缺失值最大的列(仅一列的)代码,默认data已创建好。
1.1 创建过程比较笨拙
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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 读取并删除空值最多的列(仅一列)
1 2 3 4
| import pandas as pd
data = pd.read_csv(data_file) print(data)
|
1 2 3 4 5 6 7 8 9
| # 知道每列的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 有多列存在相同数量(最多)的空值
1 2 3 4
| 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),一起去除。