2017-12-29 6 views
0

Ich habe einen Code, der eine Übersichtstabelle der fehlenden Werte in jeder Spalte meines Datenrahmens erstellt. Ich wünschte, ich könnte eine ähnliche Tabelle erstellen, um eindeutige Werte zu zählen, aber DataFrame hat keine unique() -Methode, nur jede Spalte unabhängig.Wie kann man für jede Spalte in einem Pandas-Dataframe Uniques zählen?

def missing_values_table(df): 
    mis_val = df.isnull().sum() 
    mis_val_percent = 100 * df.isnull().sum()/len(df) 
    mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1) 
    mis_val_table_ren_columns = mis_val_table.rename(
    columns = {0 : 'Missing Values', 1 : '% of Total Values'}) 
    return mis_val_table_ren_columns 

(Quelle: https://stackoverflow.com/a/39734251/7044473)

Wie kann ich das gleiche für eindeutige Werte erreichen?

Antwort

0

Mit der Funktion pd.unique können Sie eine Reihe eindeutiger Werte erstellen. Zum Beispiel:

>>> df = pd.DataFrame(np.random.randint(0, 3, (4, 3))) 
>>> print(df) 
    0 1 2 
0 2 0 2 
1 1 2 1 
2 1 2 2 
3 1 1 2 

>>> pd.Series({col: len(pd.unique(df[col])) for col in df}) 
0 2 
1 3 
2 2 
dtype: int64 

Wenn Sie tatsächlich die Anzahl der jeder Wert in jeder Spalte angezeigt möchten, können Sie eine ähnliche Sache mit pd.value_counts tun:

>>> pd.DataFrame({col: pd.value_counts(df[col]) for col in df}).fillna(0) 
    0 1 2 
0 0.0 1 0.0 
1 3.0 1 1.0 
2 1.0 2 3.0 
Verwandte Themen