Se eu tiver uma 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']
})
Posso fazer count(distinct hID)
no Qlik para chegar a uma contagem de 5 para hID exclusivo. Como faço isso em python usando um dataframe pandas? Ou talvez uma matriz numpy? Da mesma forma, se count(hID)
eu fizer isso, terei 8 no Qlik. Qual é a forma equivalente de fazer isso nos 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'])
Respostas:
Conte valores distintos, use
nunique
:df['hID'].nunique() 5
Conte apenas valores não nulos, use
count
:df['hID'].count() 8
Conte os valores totais, incluindo valores nulos, use o
size
atributo:df['hID'].size 8
Edite para adicionar condição
Use indexação booleana:
df.loc[df['mID']=='A','hID'].agg(['nunique','count','size'])
OU usando
query
:df.query('mID == "A"')['hID'].agg(['nunique','count','size'])
Resultado:
nunique 5 count 5 size 5 Name: hID, dtype: int64
fonte
Se eu assumir que data é o nome do seu dataframe, você pode fazer:
data['race'].value_counts()
isso mostrará o elemento distinto e seu número de ocorrência.
fonte
data['race'].value_counts(normalize=True)
Ou obtenha o número de valores únicos para cada coluna:
df.nunique() dID 3 hID 5 mID 3 uID 5 dtype: int64
Novo em
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
Você sempre foi capaz de fazer um
agg
dentro de agroupby
. Useistack
no final porque gosto mais da apresentação.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
fonte
Você pode usar
nunique
em pandas:df.hID.nunique() # 5
fonte
Para contar valores únicos na coluna, digamos
hID
de dataframedf
, use:len(df.hID.unique())
fonte
você pode usar uma propriedade única usando a função len
fonte