将一个数据框中按照一个类别分类后,再按照这个类别下的另一个类别分类统计个数所占百分比,再将第一个分类类别和个数所占百分比按照第二个类别的相同排布做成一个数据框
时间: 2024-02-18 17:03:38 浏览: 51
你可以使用 Pandas 库的 `groupby` 和 `pivot_table` 方法来实现。假设你有一个名为 `df` 的数据框,其中有两列 `category1` 和 `category2`,你想按照 `category1` 分类,再按照 `category2` 统计百分比,可以使用下面的代码:
```python
import pandas as pd
# 按照 category1 和 category2 分组,并统计个数
counts = df.groupby(['category1', 'category2']).size().reset_index(name='count')
# 按照 category1 分组,统计总数
total_counts = counts.groupby(['category1']).agg({'count': 'sum'}).reset_index()
# 合并两个数据框,计算百分比
merged_counts = pd.merge(counts, total_counts, on='category1')
merged_counts['percent'] = merged_counts['count'] / merged_counts['sum']
# 将结果进行透视,按照 category2 作为列,category1 作为行,percent 作为值
pivot_counts = merged_counts.pivot_table(index='category1', columns='category2', values='percent', fill_value=0)
# 将结果转换为数据框格式
result = pd.DataFrame(pivot_counts.to_records())
```
这样就可以得到一个按照 `category2` 排布的数据框,其中每行代表一个 `category1`,每列代表一个 `category2`,每个单元格中的值代表对应类别下的百分比。