このようなテーブルがある場合:
df = pd.DataFrame({
'hID': [101, 102, 103, 101, 102, 104, 105, 101],
'dID': [10, 11, 12, 10, 11, 10, 12, 10],
'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})
Qlikでcount(distinct hID)
を実行して、一意のhIDのカウントを5にすることができます。 pythonデータフレームを使用してpandasでそれを行うにはどうすればよいですか?それとも、numpy配列ですか?同様に、count(hID)
を実行した場合、Qlikで8を取得します。パンダでそれを行う同等の方法は何ですか?
距離値をカウントし、nunique
を使用します。
df['hID'].nunique()
5
NULL以外の値のみをカウントし、count
を使用します。
df['hID'].count()
8
Null値を含む合計値をカウントするには、size
属性を使用します。
df['hID'].size
8
ブールインデックスを使用します。
df.loc[df['mID']=='A','hID'].agg(['nunique','count','size'])
またはquery
を使用:
df.query('mID == "A"')['hID'].agg(['nunique','count','size'])
出力:
nunique 5
count 5
size 5
Name: hID, dtype: int64
データがデータフレームの名前であると仮定すると、次のことができます:
data['race'].value_counts()
これにより、個別の要素とその出現回数が表示されます。
または、各列の一意の値の数を取得します。
df.nunique()
dID 3
hID 5
mID 3
uID 5
dtype: int64
pandas 0.20.0
の新機能 pd.DataFrame.agg
df.agg(['count', 'size', 'nunique'])
dID hID mID uID
count 8 8 8 8
size 8 8 8 8
nunique 3 5 3 5
agg
内でgroupby
を常に実行できます。最後にstack
を使用したのは、プレゼンテーションの方が好きだからです。
df.groupby('mID').agg(['count', 'size', 'nunique']).stack()
dID hID uID
mID
A count 5 5 5
size 5 5 5
nunique 3 5 5
B count 2 2 2
size 2 2 2
nunique 2 2 2
C count 1 1 1
size 1 1 1
nunique 1 1 1
パンダでは nunique
を使用できます。
df.hID.nunique()
# 5