python - 删除缺失类的行 AND 缺失特征超过 4 个的行
问题描述
嗯,正如标题所说。我正在努力只使用 Numpy 来规范化数据集。
数据集应如下所示:
class,Alcohol,Malic acid,Ash,Alcalinity of ash,Magnesium,Total
phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins,Color
intensity,Hue,OD280/OD315,Proline
1.0,14.23,1.71,2.43,15.6,127.0,2.8,3.06,0.28,2.29,5.64,1.04,3.92,1065.0
,13.2,1.78,,11.2,100.0,2.65,2.76,0.26,1.28,4.38,1.05,3.4,1050.0
1.0,13.16,2.36,,18.6,101.0,2.8,3.24,0.3,2.81,5.68,1.03,3.17,1185.0
1.0,14.37,,2.5,,,3.85,,,,7.8,,
1.0,13.86,1.35,,16.0,98.0,2.98,,0.22,1.85,7.22,1.01,3.55,1045.0
1.0,14.1,2.16,,18.0,,2.95,,0.22,2.38,5.75,1.25,3.17,1510.0
,14.12,1.48,,16.8,95.0,2.2,2.43,0.26,1.57,5.0,1.17,2.82,1280.0
1.0,13.75,1.73,,16.0,89.0,2.6,2.76,0.29,1.81,5.6,1.15,2.9,1320.0
1.0,14.75,1.73,,11.4,91.0,3.1,3.69,0.43,2.81,5.4,1.25,2.73,1150.0
1.0,14.38,1.87,2.38,12.0,102.0,3.3,,0.29,2.96,7.5,1.2,3.0,1547.0
,13.63,1.81,2.7,17.2,112.0,2.85,2.91,0.3,1.46,7.3,1.28,2.88,1310.0
有 14 个特征和 100 个数据。我正在尝试删除缺少类的行并删除缺少 4 个功能的行。
好的,我认为问题很清楚,这就是我所做的:
删除缺少类特征的行:
remove_nan = data[~np.isnan(data).any(axis=1)]
删除缺少类特征和 4 个缺失特征的行:
class_index=14 #14 features
num_classes=3 # 1,2,3 classes
nan_indexes=np.isnan(data)
nan_counts=np.sum(nan_indexes,axis=1)
for class_value in range (0,num_classes):
filtered_rows = [row for row, nan_count in zip(raw_data,
nan_counts)] if row[class_index]==class_value and nan_count < 4]
print(filtered_rows)
我想取回一些值,而不是我得到了 null
[]
[]
[]
我在这里想念什么?请赐教。
解决方案
尝试data = np.array([i for i in data if len(i[~np.isnan(i)])>10])
列表理解用于挑选那些具有超过 10 个非 nan 值的行(因此删除具有 4 个或更多缺失值的行)。然后将生成的二维列表转换为 numpy 数组。
推荐阅读
- python - Pandas 使用 reduce 选项在空数据帧上调用 apply 更改数据类型
- visual-studio-code - 使用 Monaco Editor 运行功能
- plsql - 为阶乘程序创建 plsql 函数
- javascript - this.props.history 没有重定向到主页
- node.js - 从 Node.js 为 Dialogflow 发送的默认响应负载是什么
- python - 在 LIST Python 中查找以元音开头的第一个字符串
- r - 如何在 R 中获得打印输出?
- php - 如何检查单词php中的第一个重复项?
- php - PHP:如何将数组中的每个字符替换为另一个数组中的字符
- jquery - 无效的 jQuery 格式 - 二维数组