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

在Jupyter Notebook中使用Seaborn pointplot()遇data参数多值错误求助

问题解决:Seaborn pointplot 报 TypeError: got multiple values for argument 'data'

错误原因

调用sns.pointplot("index",0,data=miss_previous_application,hue="type")时参数传递逻辑出错:

  • 当前Seaborn版本中,pointplot的位置参数顺序为x, y, data, ...,你传入的第二个参数0被错误匹配到data参数位置,而后续又显式指定了data=miss_previous_application,导致data参数被重复赋值,触发TypeError。
  • 另外,DataFrame中数值列的列名为整数0,直接用位置传参容易引发参数匹配混乱。

解决方案

方案1:用关键字参数明确x、y列

直接修改pointplot调用方式,避免位置传参的歧义:

fig = plt.figure(figsize=(18,6))
miss_previous_application = pd.DataFrame((previous_application.isnull().sum())*100/previous_application.shape[0]).reset_index()
miss_previous_application["type"] = "previous_application"
# 显式指定x、y对应的列
ax = sns.pointplot(x="index", y=0, data=miss_previous_application, hue="type")
plt.xticks(rotation=90, fontsize=7)
plt.title("Percentage of Missing values in previous_application")
plt.ylabel("PERCENTAGE")
plt.xlabel("COLUMNS")
ax.set_facecolor("k")
fig.set_facecolor("lightgrey")

方案2:创建DataFrame时命名列(更易维护)

给DataFrame的列添加语义化名称,彻底避免整数列名的问题:

fig = plt.figure(figsize=(18,6))
# 显式指定列名,将缺失值百分比列命名为MISS_PERCENT
miss_previous_application = pd.DataFrame(
    (previous_application.isnull().sum())*100/previous_application.shape[0],
    columns=["MISS_PERCENT"]
).reset_index()
# 将原index列重命名为COLUMN,语义更清晰
miss_previous_application.rename(columns={"index": "COLUMN"}, inplace=True)
miss_previous_application["type"] = "previous_application"
# 使用命名后的列调用pointplot
ax = sns.pointplot(x="COLUMN", y="MISS_PERCENT", data=miss_previous_application, hue="type")
plt.xticks(rotation=90, fontsize=7)
plt.title("Percentage of Missing values in previous_application")
plt.ylabel("PERCENTAGE")
plt.xlabel("COLUMNS")
ax.set_facecolor("k")
fig.set_facecolor("lightgrey")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:31:01