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

使用hist2d绘制二维直方图遇类型错误:float与method无法比较

二维直方图绘制报错:TypeError: '>=' not supported between instances of 'float' and 'method'

问题背景

尝试使用DataFrame中mean和relevance两列数据,调用matplotlib.pyplot.hist2d绘制二维直方图,相关数据、代码及报错如下:

数据片段

relevance   ratio   mean
0   0.635266925998546   0.48717948717948717 2.8293641135319985
1   0.8024759680807747  0.5977011494252874  4.769829806901302
2   0.7938352843184088  0.6265060240963856  5.063955003405357
3   0.8270877609099303  0.41935483870967744 12.29401084132898
4   0.7695503203351798  0.44776119402985076 8.510369905054274
5   0.8513853897448349  0.28695652173913044 13.169903248451313
6   0.8544935485775926  0.12658227848101267 12.063579823506643
7   0.8395833284774789  0.19047619047619047 9.372998776898859
8   0.8796642155254841  0.16883116883116883 9.218498721423206
9   0.7414921294548873  0.0 8.658189626458995
10  0.5463891924615218  0.07575757575757576 3.3982228628036566

执行代码

import matplotlib.pyplot as plt

plt.hist2d(data.mean, data.relevance, bins=5, cmap=plt.cm.Blues)

报错信息

TypeError: '>=' not supported between instances of 'float' and 'method'

错误原因

问题出在data.mean的写法上:Pandas DataFrame内置了mean()方法用于计算均值,当你的列名恰好和这个内置方法名重名时,使用点取式(data.mean)会返回方法对象,而不是你想要的列数据。而data.relevance是正常的float类型列数据,plt.hist2d在处理时会尝试将方法对象与float值做比较,从而触发该类型错误。

解决方案

改用方括号索引的方式访问mean列,避免与内置方法混淆:

import matplotlib.pyplot as plt

plt.hist2d(data['mean'], data.relevance, bins=5, cmap=plt.cm.Blues)
# 也可以用 data.loc[:, 'mean'] 明确指定列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:05:20