import pandas as pd import numpy as np data['睡眠障碍']=data['睡眠障碍'].astype(str).astype('category') data['职业']=data['职业'].astype(str).astype('category') # 假设列 A 和列 B 分别为 category 类型 # 统计列 B 的不同类别的个数占比 def count_pct(x): return x.value_counts(normalize=True).fillna(0).to_dict() # 将列 B 按照相同的类别顺序组成列表作为每个标签的对应列表 label_dict = df.groupby('职业')['睡眠障碍'].apply(count_pct).to_dict() label_dict缺失值不是0
时间: 2023-08-10 14:02:17 浏览: 74
浅谈python 中的 type(), dtype(), astype()的区别
在上面的代码中,你将数据框中的 '睡眠障碍' 和 '职业' 两列分别转换为了 'category' dtype,然后按照 '职业' 列进行分组,统计了 '睡眠障碍' 列中不同类别的个数占比,并将分组结果转换为了字典。但是,这里的 label_dict 返回的字典中缺失值确实没有被转换为 0。
如果你想将缺失值转换为 0,可以在 count_pct 函数中使用 fillna(0) 方法来将缺失值转换为 0。修改后的代码如下:
```python
import pandas as pd
import numpy as np
data['睡眠障碍'] = data['睡眠障碍'].astype(str).astype('category')
data['职业'] = data['职业'].astype(str).astype('category')
# 假设列 A 和列 B 分别为 category 类型
# 统计列 B 的不同类别的个数占比,缺失值转换为 0
def count_pct(x):
return x.value_counts(normalize=True, dropna=False).fillna(0).to_dict()
# 将列 B 按照相同的类别顺序组成列表作为每个标签的对应列表
label_dict = df.groupby('职业')['睡眠障碍'].apply(count_pct).to_dict()
```
这里的 count_pct 函数中使用了 fillna(0) 方法将缺失值转换为 0,并使用了 dropna=False 参数保留缺失值。最后再将分组结果转换为字典。
阅读全文