无法从数据集中删除 NaN 值

Posted

技术标签:

【中文标题】无法从数据集中删除 NaN 值【英文标题】:Unable to remove NaN values from dataset 【发布时间】:2018-12-30 03:08:19 【问题描述】:

当我试图预测 z 的值时,我得到一个错误 “ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。”我是在data.fillna(0, inplace=True) 行中犯了错误还是有其他问题?

import pandas as pd
import numpy as np
from sklearn import cross_validation
from sklearn.ensemble import RandomForestClassifier

data = pd.read_csv("C:/Users/Animkush/Desktop/train.csv")
data.replace("?", -99999, inplace=True)
data.drop(["Id"], 1, inplace=True)
data.convert_objects(convert_numeric=True)
data.fillna(0, inplace=True)

data1 = pd.read_csv("C:/Users/Animkush/Desktop/test.csv")
data1.replace("?", -99999, inplace=True)
data1.drop(["Id"], 1, inplace=True)
data.convert_objects(convert_numeric=True)
data.fillna(0, inplace=True)

def handle_non_numerical_data(data):
    columns = data.columns.values
    for column in columns:
            text_digit_vals = 
            def convert_to_int(val):
            return text_digit_vals[val]

        if data[column].dtype != np.int64 and data[column].dtype != np.float64:
        column_contents = data[column].values.tolist()
        unique_elements = set(column_contents)
        x = 0
        for unique in unique_elements:
            if unique not in text_digit_vals:
                text_digit_vals[unique] = x
                x += 1

        data[column] = list(map(convert_to_int, data[column]))

return data

data = handle_non_numerical_data(data)
data1 = handle_non_numerical_data(data1)

x = np.array(data.drop(["SalePrice"], 1))
y = np.array(data["SalePrice"])
z = np.array(data1)

X_train, X_test, Y_train, Y_test = cross_validation.train_test_split(x, y,test_size=0.1)

clf = RandomForestClassifier()

clf.fit(X_train, Y_train)

print(clf.score(X_train, Y_train))

print(clf.predict(z))

【问题讨论】:

可以添加数据吗? 请包含一个堆栈跟踪 - 以确保问题发生在您/我们期望的地方 - 而不是其他地方。 数据集 - kaggle.com/c/house-prices-advanced-regression-techniques/data 【参考方案1】:

你可能有 inf 值,添加以下行

 data.replace([np.inf, -np.inf], 0, inplace=True)

【讨论】:

以上是关于无法从数据集中删除 NaN 值的主要内容,如果未能解决你的问题,请参考以下文章

在 R 的数据集中将 -inf、NaN 和 NA 值替换为零

将定义集中的值设置为 Pandas 数据框中列的给定值(f.e. NaN)

从数据集中删除相同的值

从表格数据训练深度学习模型时,损失总是 nan

R:从R中的大型数据集中根据列中的值删除行[重复]

为啥在多维数据集中分配值时会产生nan?