无法从数据集中删除 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 值替换为零