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

如何用饼图绘制分类变量?处理DataFrame多值fruit列报错问题

解决方法

你遇到的错误是因为fruit列存储的是逗号分隔的字符串,直接调用df.plot(kind='pie', y='fruit')时,pandas无法将这类字符串数据转换为饼图所需的数值统计结果,从而触发类型比较错误。要实现每种单独水果的分布可视化,需要先对数据做拆分、展开和统计处理:

步骤1:拆分并展开水果数据

先把每个单元格里的逗号分隔字符串拆成列表,再用explode将列表中的每个元素单独占一行:

# 拆分字符串为列表
df['fruit'] = df['fruit'].str.split(', ')
# 展开列表为单独行
expanded_df = df.explode('fruit')

步骤2:统计每种水果的出现频次

用value_counts()统计每个水果的出现次数:

fruit_counts = expanded_df['fruit'].value_counts()

步骤3:绘制饼图

基于统计后的频次数据绘制饼图:

fruit_counts.plot(kind='pie', autopct='%1.1f%%', title='水果分布')

完整代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 模拟你的DataFrame
data = {'fruit': ['apple, orange', 'banana', 'grapefruit, orange', 'apple, banana, kiwi']}
df = pd.DataFrame(data)

# 处理数据
df['fruit'] = df['fruit'].str.split(', ')
expanded_df = df.explode('fruit')
fruit_counts = expanded_df['fruit'].value_counts()

# 绘制饼图
fruit_counts.plot(kind='pie', autopct='%1.1f%%', title='水果分布')
plt.ylabel('')  # 去掉默认的y轴标签
plt.show()

这样就能得到每种单独水果的占比饼图,解决之前的类型错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:24:27