# How to calculate percentages using Pandas groupby

I have 3 users s1 who has 10 dollars, s2 10,20 dollars, and s3 20,20,30 dollars. I want to calculate percentage of users who had 10, 20 and 30 dollars. Is my interpretation correct here?

input

``````import pandas as pd
df1 = (pd.DataFrame({'users': ['s1', 's2', 's2', 's3', 's3', 's3'],
'dollars': [10,10,20,20,20,30]}))
``````

output

``````% of subjects who had 10 dollors        0.4
% of subjects who had 20 dollors        0.4
% of subjects who had 30 dollors        0.2
``````

tried

``````df1.groupby(['dollars']).agg({'dollars': 'sum'}) / df1['dollars'].sum() * 100
``````

### >Solution :

to get the percentage of users that have each kind of bill you can use a `crosstab`:

``````out = pd.crosstab(df1['users'], df1['dollars']).gt(0).mean().mul(100)
``````

output:

``````dollars
10    66.666667
20    66.666667
30    33.333333
dtype: float64
``````

If you want normalized counts:

``````out/out.sum()
``````

Output:

``````dollars
10    0.4
20    0.4
30    0.2
dtype: float64
``````