怎么将一个数据框中的一个列的分类变量作为标签,另一个分类变量的列的不同类别统计个数所占百分比按照相同的类别顺序作为每个标签的对应列表,最后两个变量形成一个字典
时间: 2024-02-18 11:05:01 浏览: 73
数据字典生成方法
可以使用 pandas 的 groupby 和 apply 方法来实现。假设你的数据框为 df,要将列 A 的分类变量作为标签,列 B 的不同类别统计个数所占百分比按照相同的类别顺序作为每个标签的对应列表,最后形成一个字典,代码如下:
```python
import pandas as pd
# 假设列 A 和列 B 分别为 category 类型
# 统计列 B 的不同类别的个数占比
def count_pct(x):
return x.value_counts(normalize=True).to_dict()
# 将列 B 按照相同的类别顺序组成列表作为每个标签的对应列表
label_dict = df.groupby('A')['B'].apply(count_pct).to_dict()
```
这里利用了 pandas 中的 groupby 方法按照列 A 的类别进行分组,然后利用 apply 方法对每个分组的列 B 进行处理,将每个分组的列 B 统计不同类别的个数占比并转换成字典,最后再利用 to_dict 方法将分组结果转换成字典。注意,这里的 count_pct 函数返回的是一个字典,这个字典的键是列 B 的不同类别,值是对应的个数占比。如果你希望返回类别及其对应的个数,可以将 count_pct 函数中的 to_dict() 改成 value_counts().to_dict()。
另外,如果列 B 不是 'category' dtype,而是其他类型,那么在统计不同类别的个数占比时,可能需要先将其转换为 'category' dtype,例如:
```python
df['B'] = df['B'].astype('category')
```
阅读全文