[英]Counting unique values in a column in pandas dataframe like in Qlik?
如果我有一張這樣的桌子:
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']
})
我可以在count(distinct hID)
執行count(distinct hID)
以得出唯一 hID 的計數為 5。 我如何使用 Pandas 數據框在 python 中做到這一點? 或者也許是一個 numpy 數組? 同樣,如果要執行count(hID)
我將在count(hID)
得到 8。 在熊貓中這樣做的等效方法是什么?
計算不同的值,使用nunique
:
df['hID'].nunique()
5
只計算非空值,使用count
:
df['hID'].count()
8
計算包括空值在內的總值,使用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 是您的數據框的名稱,您可以執行以下操作:
data['race'].value_counts()
這將向您顯示不同的元素及其出現次數。
或者獲取每列的唯一值的數量:
df.nunique()
dID 3
hID 5
mID 3
uID 5
dtype: int64
pandas 0.20.0
新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
你總是能夠在groupby
做一個agg
。 我最后使用了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
要計算列中的唯一值,例如hID
df
hID
,請使用:
len(df.hID.unique())
我正在尋找類似的東西,我找到了另一種可以幫助你的方法
def count_nulls(s):
return s.size - s.count()
def unique_nan(s):
return s.nunique(dropna=False)
from scipy.stats import mode
agg_func_custom_count = {
'embark_town': ['count', 'nunique', 'size', unique_nan, count_nulls, set]
}
df.groupby(['deck']).agg(agg_func_custom_count)
你可以在這里找到更多信息
您可以使用 len 函數使用唯一屬性
len(df['hID'].unique()) 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.