python使用groupby分类并求众数
时间: 2023-10-19 11:06:08 浏览: 192
Python程序设计:使用python进行数据分析.pptx
5星 · 资源好评率100%
可以使用Python内置的`collections`模块中的`Counter`和`groupby`函数来实现。以下是一个示例代码:
```python
from collections import Counter
from itertools import groupby
# 构造示例数据
data = [1, 1, 2, 3, 3, 3, 4, 4, 4, 4]
# 使用 groupby 函数按值分组
groups = groupby(data)
# 构造一个字典,键为分组的值,值为该值出现的次数
counts = {k: Counter(g)[k] for k, g in groups}
# 找出每个分组中出现次数最多的元素作为众数
modes = {k: max(Counter(g), key=Counter(g).get) for k, g in groupby(data)}
print(counts) # 输出:{1: 2, 2: 1, 3: 3, 4: 4}
print(modes) # 输出:{1: 1, 2: 2, 3: 3, 4: 4}
```
上述代码首先使用`groupby`函数按值对数据进行分组,并使用`Counter`函数统计每个分组中每个元素出现的次数,得到一个字典`counts`。然后使用`max`函数和`Counter`的`get`方法找出每个分组中出现次数最多的元素作为众数,并构造一个字典`modes`。
阅读全文