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

使用Pandas绘制指定参数饼图时遇报错,如何修复?

问题原因与修复方案

原始代码

import pandas as pd
import matplotlib

plot = input()
plot = str(plot)

df = pd.DataFrame({'Perimeter': [8, 16, 20],
                   'Area': [2, 16, 25]},
                  index=['Square 1', 'Square 2', 'Square 3'])
plot = df.plot.pie(y={plot}, figsize=(5, 5))

报错信息

C:\Users\KIAN\PycharmProjects\pythonProject\k.py:12: FutureWarning:
Passing a set as an indexer is deprecated and will raise in a future
version. Use a list instead. plot = df.plot.pie(y={plot},
figsize=(5, 5))

Traceback (most recent call last):

File "C:\Users\KIAN\PycharmProjects\pythonProject\k.py", line 12, in

plot = df.plot.pie(y={plot}, figsize=(5, 5))

File
"C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\plotting_core.py",
line 1613, in pie
return self(kind="pie", **kwargs)

File
"C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\plotting_core.py",
line 960, in call
data.index.name = y

File
"C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py",
line 1751, in name
maybe_extract_name(value, None, type(self))

File
"C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py",
line 7421, in maybe_extract_name
raise TypeError(f"{cls.name}.name must be a hashable type")

TypeError: Index.name must be a hashable type

报错原因

  1. 参数类型不合法:df.plot.pie()的y参数仅接受字符串(指定单列)或列表(指定多列),但代码中用{plot}创建了集合,这不符合参数要求,FutureWarning也明确提示集合作为索引器已被弃用。
  2. 哈希类型冲突:pandas内部会尝试将y的值设置为数据索引的名称,但集合属于不可哈希的类型,直接触发TypeError: Index.name must be a hashable type错误。

修复方案

  • 将y={plot}改为y=plot,直接传入字符串类型的列名
  • 导入matplotlib.pyplot并调用show()方法,确保图表能正常显示

修复后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

plot = input()
plot = str(plot)

df = pd.DataFrame({'Perimeter': [8, 16, 20],
                   'Area': [2, 16, 25]},
                  index=['Square 1', 'Square 2', 'Square 3'])
# 直接传入列名字符串
df.plot.pie(y=plot, figsize=(5, 5))
# 显示图表
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:05:32