Ram*_*Ram 7 python apache-spark apache-spark-sql pyspark
我正在尝试为数据框中的所有列绘制直方图。我进口pyspark
和matplotlib
。df 是我的数据框变量。plt 是matplotlib.pyplot
可变的
我能够为单个列绘制/绘制直方图,如下所示:
bins, counts = df.select('ColumnName').rdd.flatMap(lambda x: x).histogram(20)
plt.hist(bins[:-1], bins=bins, weights=counts)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试为所有变量绘制它时,我遇到了问题。这是我到目前为止的 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)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?提前致谢。
Far*_*rid 14
作为for
循环方法的替代方法,我认为您可以尝试以下方法:
df.hist(bins=30, figsize=(15, 10))
Run Code Online (Sandbox Code Playgroud)
这将为df
DataFrame中的每个数字属性绘制直方图。在这里,bins
和figsize
参数仅用于自定义输出。
问题是你的for
循环:
for x in range(0, len(df.columns)):
Run Code Online (Sandbox Code Playgroud)
将迭代一系列整数。然后当您尝试通过以下方式访问该列时:
df.select(x)
Run Code Online (Sandbox Code Playgroud)
您将收到错误,因为x
不是有效的列标识符。
相反,将循环更改为:
for x in df.columns:
Run Code Online (Sandbox Code Playgroud)
并且您的其余代码将起作用。
归档时间: |
|
查看次数: |
16222 次 |
最近记录: |