2016-08-28 10 views
0

私は主成分分析(PCA)を行っているデータセットを持っています。データを変換しようとすると、ValueErrorというメッセージが表示されます。以下のコードの一部です:pandasデータフレームfillna()が機能していませんか?

import pandas as pd 
import numpy as np 
import matplotlib as mpl 
from sklearn.preprocessing import StandardScaler 
from sklearn.decomposition import PCA as sklearnPCA 

data = pd.read_csv('test.csv',header=0) 
X = data.ix[:,0:1000].values # values of 1000 predictor variables 
Y = data.ix[:,1000].values  # values of binary outcome variable 
sklearn_pca = sklearnPCA(n_components=2) 
X_std = StandardScaler().fit_transform(X) 

それは私が次のエラーメッセージを取得することをここにある:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). 

だから私は、元のデータセットは、任意のNaN値を持っていたかどうかをチェック:

print(data.isnull().values.any()) # prints True 
data.fillna(0)      # replace NaN values with 0 
print(data.isnull().values.any()) # prints True 

data.isnull().values.any()は、NaN値を0に置き換えた後でも、まだTrueと表示されています。

答えて

0

あなたがfillna

小再生から返されたオブジェクトでデータを交換する必要があります。場所に置き換えてみてください、達成するには、2つの方法があります

import pandas as pd 

data = pd.DataFrame(data=[0,float('nan'),2,3]) 

print(data.isnull().values.any()) # prints True 
data = data.fillna(0)      # replace NaN values with 0 
print(data.isnull().values.any()) # prints False now :) 
0

data.fillna(0, inplace=True) 

あるいは、使用返さオブジェクト:

data1 = data.fillna(0) 
関連する問題