2017-11-25 11 views

答えて

2

value_countsリターンあり:

最初の要素は、最も頻繁に発生する要素となるように、得られたオブジェクトが降順であろうが。

しかしcountない、それは(groupby('col')の列で作成された)indexによって出力をソート。


df.groupby('colA').count() 

だから、NaN Sを除く値をカウント機能count.によって集約のためdfのすべての列です。

だから、必要countのみ1つの列が必要な場合:

df.groupby('colA')['colA'].count() 

サンプル:

df = pd.DataFrame({'colB':list('abcdefg'), 
        'colC':[1,3,5,7,np.nan,np.nan,4], 
        'colD':[np.nan,3,6,9,2,4,np.nan], 
        'colA':['c','c','b','a',np.nan,'b','b']}) 

print (df) 
    colA colB colC colD 
0 c a 1.0 NaN 
1 c b 3.0 3.0 
2 b c 5.0 6.0 
3 a d 7.0 9.0 
4 NaN e NaN 2.0 
5 b f NaN 4.0 
6 b g 4.0 NaN 

print (df['colA'].value_counts()) 
b 3 
c 2 
a 1 
Name: colA, dtype: int64 

print (df.groupby('colA').count()) 
     colB colC colD 
colA     
a  1  1  1 
b  3  2  2 
c  2  2  1 

print (df.groupby('colA')['colA'].count()) 
colA 
a 1 
b 3 
c 2 
Name: colA, dtype: int64 
3

Groupbyvalue_countsは全く異なる機能です。データフレームでは、value_countsを実行することはできません。

Value Countsは、単一の列または一連のために制限されており、それが唯一の目的は、1がその上に統計的な計算を実行できるように値

Groupbyの一連の周波数は、オブジェクトを返す返すことであるのです。したがって、df.groupby(col).count()を実行すると、groupby内のspecific columnsに関して列に存在する真の値の数が返されます。

value_countsを使用しなければならないとするときgroupby.count使用する必要があります。

df.groupby('color').count() 
     id size 
color   
b  2  2 
g  2  2 
r  3  3 

GROUPBY数は、一般的に取得するために使用されます。 は

df = pd.DataFrame({'id': [1, 2, 3, 4, 2, 2, 4], 'color': ["r","r","b","b","g","g","r"], 'size': [1,2,1,2,1,3,4]}) 

GROUPBYがを数える例を取ることができます有効な値の数 はすべての列にありますwith reference toまたはwith respect to 以上の列が指定されています。したがって、数字(nan)は除外されません。

頻度をgroupbyで調べるには、@ jezのように指定した列自体に対して集計する必要があります。 (これを避け、開発者の生活を容易にするvalue_countsが実装されている可能性があります)。

カウント:

df['color'].value_counts() 

r 3 
g 2 
b 2 
Name: color, dtype: int64 

値COUNTは、一般 本一つの特定の列の値の周波数を求めるために使用されます。結論として

:あなたが指定したcolに関しての列に存在する有効な値の周波数を見つけたいとき

.groupby(col).count()を使用する必要があります。

.value_counts()は、シリーズの頻度を見つけるために使用する必要があります。

関連する問題