如何解决Databricks中绘制直方图时的'Column' object is not callable错误?
解决Spark DataFrame调用hist()报错:'Column' object is not callable
错误原因
你操作的df3是Spark DataFrame,df3['2015 median sales price']返回的是Spark的Column对象,而hist()是Pandas Series/DataFrame专属的绘图方法,因此触发'Column' object is not callable错误。
解决方案
以下是两种适配Databricks环境的解决方法:
方法1:转换为Pandas DataFrame后绘图
将Spark DataFrame转为Pandas DataFrame,即可使用matplotlib的hist方法:
import sys import matplotlib matplotlib.use('Agg') import pandas as pd import matplotlib.pyplot as plt import numpy as np df3 = (spark.read .format("csv") .option("header", "true") .option("inferSchema", "true") .load("/databricks-datasets/samples/population-vs-price/data_geo.csv") ) # 转换为Pandas DataFrame(小数据量适用) pdf = df3.toPandas() pdf['2015 median sales price'].hist() plt.show()
如果数据集较大,建议先采样再转换,避免内存溢出:
# 采样10%数据转换(比例可按需调整) pdf = df3.sample(fraction=0.1).toPandas() pdf['2015 median sales price'].hist() plt.show()
方法2:使用Databricks内置display函数(推荐)
Databricks提供原生可视化工具,无需转换格式,直接调用display即可生成直方图:
df3 = (spark.read .format("csv") .option("header", "true") .option("inferSchema", "true") .load("/databricks-datasets/samples/population-vs-price/data_geo.csv") ) # 传入目标列的DataFrame,在界面选择直方图类型 display(df3.select("2015 median sales price"))
执行后在Databricks界面的可视化面板中,选择「直方图」类型即可完成绘制,该方法更适合大数据场景。
内容的提问来源于stack exchange,提问作者Elena Epshtein
相关产品推荐
相关产品推荐

