import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,:-1]
y = dataset.iloc[:, 3]
from sklearn.preprocessing import Imputer
imputer =Imputer(missing_values = 'NaN', strategy = 'mean' ,axis = 0)
imputer = imputer.fit(X.values[:, 1:3])
X.values[:, 1:3] = imputer.transform(X.values[:, 1:3])
此代码可以正常工作,但无法从我的数据集中删除NaN。请帮助。
答案 0 :(得分:0)
您在寻找吗?
[print(X.dropna())][1]
?
答案 1 :(得分:0)
DataFrame的android.view.ViewGroup
不可更改(不可更改),因此您的最后一行应该抛出错误,因为它试图分配给values
。相反,请尝试使用X.values[:, 1:3]
或.loc
访问器分配给DataFrame本身:
iloc
答案 2 :(得分:0)
像这样:
X.fillna(X.mean(axis=0), axis=0)
?
答案 3 :(得分:-1)
首先,您无法更改pandas dataframe
的值。因此,首先,将值复制到这样的numpy数组中:
# Importing the dataset
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 3].values
然后,您可以执行代码中的操作。只需删除最后一行中的values
,就像这样:
# Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])