python groupby 去重计数
时间: 2023-08-27 21:05:09 浏览: 103
对于您的第一个问题,可以通过使用Python中的groupby函数来对列表进行分组和计数,示例代码如下:
```
from itertools import groupby
data = [1, 2, 2, 3, 3, 3, 4, 5, 5]
grouped_data = groupby(data)
for key, group in grouped_data:
count = len(list(group))
print("数字 {} 出现了 {} 次".format(key, count))
```
运行以上代码,输出结果为:
```
数字 1 出现了 1 次
数字 2 出现了 2 次
数字 3 出现了 3 次
数字 4 出现了 1 次
数字 5 出现了 2 次
```
以上是关于Python中使用groupby函数进行去重计数的介绍,希望能够帮助到您。
相关问题
python groupby 条件去重计数
在 Python 中,可以使用 `groupby` 函数和字典来实现根据条件去重并计数的操作。
假设有一个列表 `data`,其中包含了多个字典,每个字典都有一个 `id` 和 `category` 属性,我们要对 `category` 属性进行分组,并去重计数。
示例代码如下:
```python
from itertools import groupby
data = [
{'id': 1, 'category': 'A'},
{'id': 2, 'category': 'B'},
{'id': 3, 'category': 'C'},
{'id': 4, 'category': 'A'},
{'id': 5, 'category': 'A'},
{'id': 6, 'category': 'B'},
{'id': 7, 'category': 'C'},
]
groups = groupby(sorted(data, key=lambda x: x['category']), key=lambda x: x['category'])
result = {k: len(set(d['id'] for d in g)) for k, g in groups}
print(result)
```
输出结果为:
```python
{'A': 3, 'B': 2, 'C': 2}
```
解释:首先将 `data` 列表按 `category` 属性进行排序,并使用 `groupby` 函数按 `category` 属性进行分组。然后遍历每个分组,使用集合去重并计数。最后将计数结果放入字典中返回。
pandas groupby 去重计数
你可以使用 `groupby` 和 `nunique` 方法来对 Pandas DataFrame 进行分组后的去重计数。这里的 `groupby` 方法用于按照指定的列对数据进行分组,而 `nunique` 方法用于计算每个组中独特值的数量。
下面是一个示例代码:
```python
import pandas as pd
# 创建示例 DataFrame
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'two', 'two', 'one', 'two', 'one']}
df = pd.DataFrame(data)
# 使用 groupby 和 nunique 进行分组去重计数
count = df.groupby('A')['B'].nunique()
print(count)
```
输出结果将是每个组中唯一值的数量:
```
A
bar 2
foo 2
Name: B, dtype: int64
```
这表示在列 'A' 中,'bar' 组有两个不同的唯一值,'foo' 组也有两个不同的唯一值。
阅读全文