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

绘制分类变量箱线图遇TypeError: 'str' object is not callable错误求解决

解决绘制分类变量箱线图时的TypeError: 'str' object is not callable错误

这个错误的核心是你把一个字符串当成函数去调用了(比如写了类似"some_string"()的代码),和分类变量名称本身无关,按以下步骤排查:

  • 检查列引用是否多了括号:比如你可能写成了df['category_col'](),正确写法应该是df['category_col']——列名是字符串,但引用列数据时不需要加括号,加了就会试图调用这个字符串,触发错误。
  • 检查是否覆盖了绘图函数名:如果之前定义过类似boxplot = "my_plot_name"的变量,之后调用boxplot()时,实际调用的是这个字符串变量,而非plt.boxplot或sns.boxplot函数。这种情况改分类变量名没用,得重命名这个覆盖函数的变量。
  • 检查绘图参数传递:用seaborn时,如果你用data参数传入DataFrame,x/y可以直接传列名字符串(比如sns.boxplot(x='category', y='value', data=df)),这是正确的;但如果错误地给列名字符串加了括号(比如x='category'()),或者把列名字符串当成函数传入,就会报错。
  • 检查数据对象是否被误赋值为字符串:比如你本来要取列数据cat_data = df['category'],结果写成cat_data = "category",之后把这个字符串传入绘图函数,也会触发错误。

错误示例与修正

错误代码(多了括号):

import seaborn as sns
import pandas as pd
df = pd.DataFrame({'cat': ['A','B'], 'val': [1,2]})
sns.boxplot(x=df['cat'](), y=df['val'])  # 这里df['cat']是字符串列名,加括号试图调用它

修正后:

sns.boxplot(x=df['cat'], y=df['val'])
# 或者更简洁的写法
sns.boxplot(x='cat', y='val', data=df)

错误代码(覆盖了函数名):

boxplot = "my_boxplot"
boxplot(x=df['cat'], y=df['val'])  # 这里的boxplot是字符串,不是绘图函数

修正后:

import matplotlib.pyplot as plt
# 重命名变量
my_boxplot_name = "my_boxplot"
plt.boxplot(x=df['cat'], y=df['val'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:40:37