You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确绘制不同列含字符串和数值的分组pandas序列并解决报错

报错原因与修复方案

报错原因

你调用data.groupby(ct, to_numeric)时参数传递错误:groupby的第二个位置参数是axis,你传入了to_numeric这个可变的DataFrame对象,DataFrame无法被哈希,因此触发该报错。

实现需求的两种方案

你需要实现按col2(对应数据中的riskiaobis done列)分组,统计col1(对应数据中的datvla列)各取值的数量,以下是两种可直接运行的实现:

方案1:双列分组统计(无需独热编码,更简洁)

import matplotlib.pyplot as plt
import pandas as pd

# 读取数据
data = pd.read_csv(r"C:\Users\givi.jalaghania\.spyder-py3\07_maragebi.csv")

# 分组统计:按col2和col1分组,计算样本量,重排索引方便绘图
stat_res = data.groupby(['riskiaobis done', 'datvla']).size().unstack(fill_value=0)

# 绘制柱状图
stat_res.plot(kind='bar', figsize=(10,6))
plt.xlabel('分类特征(col2)')
plt.ylabel('样本数量')
plt.title('各分类下col1取值分布')
plt.show()

# 按需查询特定分类下col1=1、2的总样本数,例如查询maRali特征
print(stat_res.loc['maRali', [1,2]].sum())

方案2:适配独热编码思路的实现

如果你需要保留独热编码的处理逻辑,需先将独热编码结果合并到原数据集后再分组:

import matplotlib.pyplot as plt
import pandas as pd

# 读取数据
data = pd.read_csv(r"C:\Users\givi.jalaghania\.spyder-py3\07_maragebi.csv")

# 生成独热编码并合并到原数据集
dummies = pd.get_dummies(data['riskiaobis done'], prefix='col2')
data = pd.concat([data, dummies], axis=1)

# 按col1分组,统计各分类特征的样本量
stat_res = data.groupby('datvla')[dummies.columns].sum()

# 绘制柱状图
stat_res.plot(kind='bar', figsize=(10,6))
plt.xlabel('col1取值')
plt.ylabel('样本数量')
plt.title('各col1取值下分类特征分布')
plt.show()

内容的提问来源于stack exchange,提问作者jalaghania

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 17:21:03