2016-10-16 2 views
1

Ich möchte fehlende kategoriale Zellen mit neuen Werten pro Spalte füllen. Zum Beispiel:Fehlende kategoriale Werte mit Pandas füllen?

c1 c2 c3 
a nan a 
b q nan 
c d nan 
a p z 

sollte so etwas wie

c1 c2 c3 
a n1 a 
b q n2 
c d n2 
a p z 

Mein aktuelles Problem geworden ist, dass ich DictVectorizer für categorials Spalte verwende, aber es lässt NaNs wie sie ist.

+1

Eine Methode gibt, die in fehlenden Werten füllt wird Anrechnungs genannt; Vielleicht möchten Sie die Dokumentation von Amelia II lesen, da sie das Problem mit fehlenden Daten und eine Lösung im Detail beschreibt. Außerdem ist das bloße Ausfüllen einiger Mittelwerte nachweislich eine schlechte Idee, und dazu gibt es einige Literatur. – Sycorax

+0

@amoeba pandas ist ein Python-Modul, das Datenrahmenfunktionen ähnlich zu Rs "data.frame" und "data.table" hinzufügt. – Sycorax

+0

@Sycorax Ja, ich weiß. –

Antwort

0

Fillna mit einigen uniq String tut, was Sie wollen:

categorial_data = pd.DataFrame({'sex': ['male', 'female', 'male', 'female'], 
           'nationality': ['American', 'European', float('nan'), 'European']}) 
print(categorial_data) 
categorial_data=categorial_data.fillna('some_unique_string') 
print('after replacement') 
print(categorial_data) 
encoder = DV(sparse = False) 
encoded_data = encoder.fit_transform(categorial_data.T.to_dict().values()) 
print(encoded_data) 

Sie

nationality  sex 
0 American male 
1 European female 
2   NaN male 
3 European female 
after replacement 
      nationality  sex 
0   American male 
1   European female 
2 some_unique_string male 
3   European female 
[[ 1. 0. 0. 0. 1.] 
[ 0. 1. 0. 1. 0.] 
[ 0. 0. 1. 0. 1.] 
[ 0. 1. 0. 1. 0.]] 
Verwandte Themen