2017-12-29 20 views
0

私のデータフレームの各列に欠損値のサマリーテーブルを作成する以下のコードがあります。一意の値を数えるために同様のテーブルを作成することもできますが、DataFrameにはunique()メソッドがなく、各列のみが独立しています。パンダのデータフレームの各列のユニークを数えるにはどうすればよいですか?

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 

(ソース:https://stackoverflow.com/a/39734251/7044473

私は、一意の値のために同じことを達成できますか?

答えて

0

pd.unique機能を使用して、一連の固有の値のカウントを作成できます。たとえば、次のように

>>> 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 

あなたが実際にそれぞれの値は、各列に表示された回数をしたい場合、あなたはpd.value_countsと同様のことを行うことができます。

>>> 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 
関連する問題