我正在尝试绘制数据框中所有列的直方图。
我导入了pyspark
和matplotlib
。
df是我的数据框变量。
plt是matplotlib.pyplot
变量
我能够绘制/绘制单个列的直方图,如下所示:
bins, counts = df_maverick.select('ColumnName').rdd.flatMap(lambda x: x).histogram(20)
plt.hist(bins[:-1], bins=bins, weights=counts)
但是当我尝试为所有变量绘制它时,我遇到了问题。这是我到目前为止的for循环:
for x in range(0, len(df.columns)):
bins, counts = df.select(x).rdd.flatMap(lambda x: x).histogram(20)
plt.hist(bins[:-1], bins=bins, weights=counts)
我该怎么办?提前谢谢。
答案 0 :(得分:7)
作为for
循环方法的替代方法,我认为您可以尝试以下方法:
df.hist(bins=30, figsize=(15, 10))
这将为df
DataFrame中的每个数字属性绘制直方图。这里的bins
和figsize
参数仅用于自定义输出。
答案 1 :(得分:2)
问题在于你的for
循环:
for x in range(0, len(df.columns)):
将迭代一系列整数。然后,当您尝试通过以下方式访问该列时:
df.select(x)
您将收到错误,因为x
不是有效的列标识符。
相反,请将循环更改为:
for x in df.columns:
并且其余代码都可以使用。