python:一张表按照biz、来源、预期这三列排列组合统计,按照这三列去重,统计每个组合的数量、对比如果人工列和标记列数值一致,则算识别正确,否则则算错误,生成一张新的表,按照biz、来源、预期三列排列组合,表头为biz、来源、预期、类型数量、预测正确数、预测错误数
时间: 2023-07-04 18:07:31 浏览: 86
可以使用 pandas 库来完成这个任务。假设原始数据表为 `data`,包含 `biz`、`来源`、`预期`、`人工列`、`标记列` 五列,其中 `人工列` 和 `标记列` 表示两种不同的预测结果。
首先按照 `biz`、`来源`、`预期` 三列进行排列组合统计,并计算出每个组合的数量:
```python
import pandas as pd
grouped_data = data.groupby(['biz', '来源', '预期']).size().reset_index(name='类型数量')
```
接下来按照同样的方式对 `人工列` 和 `标记列` 进行排列组合去重,并计算出预测正确和预测错误的数量:
```python
correct_data = data.drop_duplicates(subset=['biz', '来源', '预期', '人工列', '标记列'])
correct_count = correct_data.groupby(['biz', '来源', '预期']).size().reset_index(name='预测正确数')
error_data = data.drop_duplicates(subset=['biz', '来源', '预期', '人工列', '标记列'], keep=False)
error_count = error_data.groupby(['biz', '来源', '预期']).size().reset_index(name='预测错误数')
```
最后将三个表按照 `biz`、`来源`、`预期` 三列进行合并:
```python
result = pd.merge(grouped_data, correct_count, on=['biz', '来源', '预期'], how='left')
result = pd.merge(result, error_count, on=['biz', '来源', '预期'], how='left')
result.fillna(0, inplace=True)
result = result[['biz', '来源', '预期', '类型数量', '预测正确数', '预测错误数']]
```
阅读全文