パンダでは同じことをする方法が複数あることがよくありますが、私は不思議に思っていました -df.value_counts()とdf.groupby( '...')の使用はいつ適切ですか?count()?
特定の列内の値でデータをグループ化し、値は、いつdf.groupby('colA').count()
を使用するのが合理的で、いつdf['colA'].value_counts()
を使用するのが理にかなっていますか?
パンダでは同じことをする方法が複数あることがよくありますが、私は不思議に思っていました -df.value_counts()とdf.groupby( '...')の使用はいつ適切ですか?count()?
特定の列内の値でデータをグループ化し、値は、いつdf.groupby('colA').count()
を使用するのが合理的で、いつdf['colA'].value_counts()
を使用するのが理にかなっていますか?
差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
Groupby
とvalue_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()
は、シリーズの頻度を見つけるために使用する必要があります。