从数据集中删除NaN

时间:2018-10-27 11:07:41

标签: python pandas

 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。请帮助。

4 个答案:

答案 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])