绘制数据框中所有列的直方图

时间:2018-04-11 16:45:30

标签: python apache-spark pyspark spark-dataframe

我正在尝试绘制数据框中所有列的直方图。 我导入了pysparkmatplotlib。 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)

我该怎么办?提前谢谢。

2 个答案:

答案 0 :(得分:7)

作为for循环方法的替代方法,我认为您可以尝试以下方法:

df.hist(bins=30, figsize=(15, 10))

这将为df DataFrame中的每个数字属性绘制直方图。这里的binsfigsize参数仅用于自定义输出。

答案 1 :(得分:2)

问题在于你的for循环:

for x in range(0, len(df.columns)):

将迭代一系列整数。然后,当您尝试通过以下方式访问该列时:

df.select(x)

您将收到错误,因为x不是有效的列标识符。

相反,请将循环更改为:

for x in df.columns:

并且其余代码都可以使用。