Si tengo una mesa como esta:
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']
})
Puedo hacer count(distinct hID)en Qlik para llegar a un recuento de 5 para un HID único. ¿Cómo hago eso en Python usando un marco de datos de pandas? ¿O tal vez una matriz numpy? Del mismo modo, si tuviera que hacerlo count(hID), obtendría 8 en Qlik. ¿Cuál es la forma equivalente de hacerlo en pandas?

df[['mID', 'dID','hID']].groupby('mID').agg(['count', 'size', 'nunique'])df[['dID','hID']].groupby(df['mID']).agg(['count', 'size', 'nunique'])df.groupby('mID')[['dID', 'hID']].agg(['count', 'size', 'nunique'])Respuestas:
Cuente valores distintos, use
nunique:df['hID'].nunique() 5Cuente solo valores no nulos, use
count:df['hID'].count() 8Cuente los valores totales, incluidos los valores nulos, use el
sizeatributo:df['hID'].size 8Editar para agregar condición
Utilice la indexación booleana:
df.loc[df['mID']=='A','hID'].agg(['nunique','count','size'])O usando
query:df.query('mID == "A"')['hID'].agg(['nunique','count','size'])Salida:
nunique 5 count 5 size 5 Name: hID, dtype: int64fuente
Si asumo que los datos son el nombre de su marco de datos, puede hacer:
data['race'].value_counts()esto le mostrará el elemento distintivo y su número de ocurrencia.
fuente
data['race'].value_counts(normalize=True)O obtenga el número de valores únicos para cada columna:
df.nunique() dID 3 hID 5 mID 3 uID 5 dtype: int64Nuevo en
pandas 0.20.0pd.DataFrame.aggdf.agg(['count', 'size', 'nunique']) dID hID mID uID count 8 8 8 8 size 8 8 8 8 nunique 3 5 3 5Siempre has sido capaz de hacer un
agginside agroupby. Uséstackal final porque me gusta más la presentación.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 1fuente
Puedes usar
nuniqueen pandas:df.hID.nunique() # 5fuente
Para contar valores únicos en la columna, digamos
hIDdel marco de datosdf, use:fuente
puede usar una propiedad única usando la función len
fuente