Pandasで聞いたことがありますが、同じことを行う方法は複数あることがよくありますが、
特定の列内の値でデータをグループ化し、その値を持つアイテムの数を数えようとしている場合、df.groupby('colA').count()
を使用する意味があり、df['colA'].value_counts()
?
違いがあります _value_counts
_ return:
結果のオブジェクトは降順であるため、最初の要素が最も頻繁に出現する要素になります。
しかし count
ではなく、index
(groupby('col')
の列によって作成された)によって出力をソートします。
_df.groupby('colA').count()
_
関数count.
_によるdf
のすべての列の集計用です。したがって、NaN
sを除く値をカウントします。
したがって、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
_は単一の列またはシリーズのみに制限され、その唯一の目的は値の頻度のシリーズを返すことです
Groupby
はオブジェクトを返すため、その上で統計計算を実行できます。したがって、df.groupby(col).count()
を実行すると、groupbyの_specific columns
_に関して列に存在する真の値の数が返されます。
いつ_value_counts
_を使用する必要があり、_groupby.count
_を使用する必要がある場合:例を見てみましょう
_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]})
_
グループバイカウント:
_df.groupby('color').count()
id size
color
b 2 2
g 2 2
r 3 3
_
Groupbyカウントは、通常、指定された1つ以上の列_
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
_
通常、値カウントは、特定の1つの列に存在する値の頻度を見つけるために使用されます。
結論として :
.groupby(col).count()
は、指定されたcol
に関して列に存在する有効な値の頻度を検索する場合に使用する必要があります。
.value_counts()
は、シリーズの頻度を見つけるために使用する必要があります。