Pandas:如何使用 groupby 和值计数
您可以使用以下基本语法来计算 pandas DataFrame 中每组唯一值的频率:
df. groupby ([' column1 ', ' column2 ']). size (). unstack (fill_value= 0 )
以下示例展示了如何在实践中使用此语法。
示例:在 Pandas 中使用 GroupBy 和值计数
假设我们有以下 pandas DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], ' position ':['G', 'G', 'F', 'F', 'C', 'G', 'F', 'F', 'F', 'F'], ' points ': [8, 8, 10, 10, 11, 8, 9, 10, 10, 10]}) #view DataFrame print (df) team position points 0 AG 8 1 GA 8 2 AF10 3 AF 10 4 AC 11 5 BG 8 6 BF 9 7 BF 10 8 BF 10 9 BF 10
我们可以使用以下语法来计算点值的频率,按团队和位置列分组:
#count frequency of points values, grouped by team and position
df. groupby ([' team ',' position ',' points ']). size (). unstack (fill_value= 0 )
points 8 9 10 11
team position
A C 0 0 0 1
F 0 0 2 0
G 2 0 0 0
B F 0 1 3 0
G 1 0 0 0
以下是如何解释结果:
- 对于 A 队和 C 位置的球员来说,数值 8 在积分栏中出现了0次。
- 对于 A 队和 C 位置的球员来说,数值 9 在积分栏中出现了0次。
- 对于 A 队和 C 位置的球员来说,数值 10 在积分栏中出现了0次。
- 对于 A 队和 C 位置的球员来说,数值 11 在积分栏中出现了1次。
等等。
我们还可以使用以下语法来计算按团队分组的职位频率:
#count frequency of positions, grouped by team
df. groupby ([' team ', ' position ']). size (). unstack (fill_value= 0 )
position C F G
team
A 1 2 2
B 0 4 1
以下是如何解释结果:
- 值“C”在 A 组中出现1次。
- 值“F”在 A 队中出现了2次。
- 值“G”在 A 队中出现了2次。
- 值“C”在 B 组中出现0次。
- B 队出现4次“F”值。
- 值“G”在 B 队中出现1次。
等等。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
如何在 Pandas 中执行 GroupBy 求和
如何在 Pandas 中使用 GroupBy 计算唯一值
如何在 Pandas 中使用 Groupby 和 Plot