应用熊猫的groupby函数后如何分析数据?

时间:2019-03-31 02:59:10

标签: python dataset pandas

我有一组奥运奖牌得主的数据。我正在努力寻找拥有最多奖牌的国家。应用groupby函数后如何处理该系列?

这是我的数据框。

    ID  Name        Sex   Age    City        Sport      Medal
 0  1   A Dijiang   M     24.0   Barcelona  Basketball  Gold
 1  2   A Lamusi    M     23.0   London     Judo        Silver
 ...

我将以下函数应用于名为qq的数据框:

zz = qq[qq.Medal =='Gold'].groupby(['NOC', 'Medal'])
zz.Medal.value_counts()

NOC  Medal  Medal
ALG  Gold   Gold        5
ANZ  Gold   Gold       20
ARG  Gold   Gold       91
ARM  Gold   Gold        2

应用该功能后,如何分析该zz系列?

例如,我如何才能获得最多奖牌的国家? 如果我在没有“金牌”奖牌限制的情况下分组,那么如何计算每个国家的奖牌总数?

1 个答案:

答案 0 :(得分:0)

您需要先过滤掉NaN枚奖牌,然后进行汇总。这是一个示例:

import pandas as pd

df = pd.DataFrame([['USA', 'Gold'],
                   ['USA', 'Bronze'],
                   ['USA', 'NaN'],
                   ['UK', 'Silver'],
                   ['UK', 'NaN']],
                  columns=['NOC', 'Medal'])

valid_medals = df[df['Medal'] != 'NaN']
medal_count = valid_medals.groupby(['NOC'], as_index=False)\
    .count().sort_values(by=['Medal'],ascending=False)
print(medal_count)
print('Top country:')
print(medal_count.iloc[0])

输出:

   NOC  Medal
1  USA      2
0   UK      1
Top country:
NOC      USA
Medal      2
Name: 1, dtype: object