如何将pandas value_counts结果转为指定类型并计算列占总计百分比?
解决DataFrame列值占比转原生Python Float字典的问题
可行代码实现
直接通过字典推导式手动转换类型,避开numpy浮点型:
# 先获取各值的频次统计 status_counts = df['marital_status'].value_counts() total = status_counts.sum() # 逐个将占比转换为Python原生float,再构建字典 percentage_dict = {status: float(count / total) for status, count in status_counts.items()}
为什么原有方法失效?
value_counts()返回的Series元素本身是numpy数值类型,即便用transform或astype(float)处理,最终转字典时得到的还是numpy的float64类型。而通过float()显式转换,能强制得到Python原生的浮点类型。
验证类型
可以通过以下代码确认结果类型:
# 取任意键值查看类型 print(type(percentage_dict[next(iter(percentage_dict.keys()))])) # 输出应为 <class 'float'>
内容的提问来源于stack exchange,提问作者Warren Manuel
相关产品推荐
相关产品推荐

