python 计算百分比_如何在Python中的groupby中计算计数和百分比

I have following output after grouping by

Publisher.groupby('Category')['Title'].count()

Category

Coding 5

Hacking 7

Java 1

JavaScript 5

LEGO 43

Linux 7

Networking 5

Others 123

Python 8

R 2

Ruby 4

Scripting 4

Statistics 2

Web 3

In the above output I want the percentage also i.e for the first row 5*100/219 and so on. I am doing following

Publisher.groupby('Category')['Title'].agg({'Count':'count','Percentage':lambda x:x/x.sum()})

But it gives me an error. Please help

解决方案

I think you can use:

P = Publisher.groupby('Category')['Title'].count().reset_index()

P['Percentage'] = 100 * P['Title'] / P['Title'].sum()

Sample:

Publisher = pd.DataFrame({'Category':['a','a','s'],

'Title':[4,5,6]})

print (Publisher)

Category Title

0 a 4

1 a 5

2 s 6

P = Publisher.groupby('Category')['Title'].count().reset_index()

P['Percentage'] = 100 * P['Title'] / P['Title'].sum()

print (P)

Category Title Percentage

0 a 2 66.666667

1 s 1 33.333333