python groupby分组后计数
时间: 2023-08-01 16:09:50 浏览: 101
你可以使用 Python 中的 `groupby` 函数来对数据进行分组,并使用 `len` 函数计算每个组的数量。首先,你需要导入 `groupby` 函数和需要分组的数据。然后,使用 `groupby` 函数按照特定的键进行分组,将分组后的结果转换为字典,并计算每个组的数量。
下面是一个示例代码:
```python
from itertools import groupby
data = [1, 1, 2, 3, 3, 3, 4, 4, 5]
groups = groupby(data)
result = {key: len(list(group)) for key, group in groups}
print(result)
```
输出结果为:
```
{1: 2, 2: 1, 3: 3, 4: 2, 5: 1}
```
在这个示例中,我们有一个包含重复元素的列表 `data`。我们使用 `groupby` 函数对 `data` 进行分组,并将结果保存在 `groups` 中。然后,我们遍历 `groups` 并使用 `len` 函数计算每个组的数量,最后将结果存储在字典 `result` 中。
相关问题
python groupby分组后计数的代码
假设有一个包含学生姓名和所在班级的列表students:
```
students = [
{'name': 'Tom', 'class': 'A'},
{'name': 'Jerry', 'class': 'B'},
{'name': 'Alice', 'class': 'A'},
{'name': 'Bob', 'class': 'B'},
{'name': 'Cindy', 'class': 'C'},
{'name': 'David', 'class': 'B'}
]
```
我们可以使用groupby函数将学生按照班级分组,并计算每个班级中有多少名学生:
```
from itertools import groupby
students.sort(key=lambda x: x['class']) # 先按照班级排序
for k, g in groupby(students, key=lambda x: x['class']):
count = len(list(g))
print(f"班级{k}共有{count}名学生")
```
输出结果为:
```
班级A共有2名学生
班级B共有3名学生
班级C共有1名学生
```
python groupby分组后分别‘计数
可以使用pandas库的groupby函数进行分组,然后使用agg函数对每个分组进行计数操作。
示例代码:
```python
import pandas as pd
# 创建一个DataFrame
data = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]})
# 使用groupby函数进行分组,并使用agg函数对每个分组进行计数操作
count_data = data.groupby(['A', 'B']).agg({'C': 'count'})
print(count_data)
```
输出结果:
```
C
A B
bar one 2
three 1
two 2
foo one 2
three 1
two 1
```
其中,'A'和'B'列是根据这两列的值进行分组的,'C'列是进行计数操作的列。最终输出的结果是每个分组中'C'列的计数值。
阅读全文