Pandas 分组后计算比例百分比
在本文中,我们将讨论如何使用Pandas进行分组操作并计算每组占总数的比例百分比。这在数据分析等领域经常常用。下面的示例数据将用来演示这个过程。
import pandas as pd
data = {'class': ['A', 'A', 'B', 'B', 'C', 'C'],
'score': [80, 90, 85, 92, 70, 82]}
df = pd.DataFrame(data)
以上代码将创建一个DataFrame,其中包含一个class列代表班级以及一个score列代表分数。
| class | score | |
|---|---|---|
| 0 | A | 80 |
| 1 | A | 90 |
| 2 | B | 85 |
| 3 | B | 92 |
| 4 | C | 70 |
| 5 | C | 82 |
阅读更多:Pandas 教程
Pandas 分组
首先,我们将使用groupby函数来按照班级进行分组。这可以使用下面的语句完成。
grouped = df.groupby('class')
运行以上代码后,grouped将成为一个DataFrameGroupBy对象,该对象将数据按照班级进行了分组。接下来,我们可以使用size()函数来查看每个班级的数据量。
print(grouped.size())
输出结果为:
class
A 2
B 2
C 2
dtype: int64
这表明了每个班级有几个数据。
计算比例百分比
有了按班级分组的数据,我们可以将每个班级的数据相加,从而得到数据的总量。可以使用sum()函数来实现。
total = grouped['score'].sum()
total将包含每个班级的总分数。接下来,我们可以将每个班级的总分数除以总分数的总和,从而得到每个班级的百分比。可以使用下面的代码来实现。
percentage = total / total.sum() * 100
percentage对象将包含每个班级的比例百分比。
最后,我们可以使用reset_index()函数将percentage转换为DataFrame。这可以使用下面的代码实现。
result = percentage.reset_index(name='percentage')
result将是一个新的DataFrame,其中包含每个班级的比例百分比。
class percentage
0 A 25.101215
1 B 26.758793
2 C 48.140992
总结
本文介绍了如何使用Pandas进行分组计算比例百分比。使用groupby()函数,我们能将数据按照分组分好。使用sum()函数统计每组数据,然后除以总分数的总和,从而得到每组的比例百分比。最后使用reset_index()函数将结果转化为DataFrame,方便存储和使用。这是数据分析中常用的技巧,相信本文的内容可以为使用Pandas的读者提供实用的技巧。
极客笔记