如何在pyspark环境中使用matplotlib和pandas绘图?

如何在pyspark环境中使用matplotlib和pandas绘图?,pandas,apache-spark,matplotlib,pyspark,pyspark-sql,Pandas,Apache Spark,Matplotlib,Pyspark,Pyspark Sql,我有一个非常大的pyspark数据帧,我取了一个样本并将其转换为pandas数据帧 sample = heavy_pivot.sample(False, fraction = 0.2, seed = None) sample_pd = sample.toPandas() 数据帧如下所示: sample_pd[['client_id', 'beer_freq']].head(10) client_id beer_freq 0 1000839 0.000000 1 10021

我有一个非常大的pyspark数据帧,我取了一个样本并将其转换为pandas数据帧

sample = heavy_pivot.sample(False, fraction = 0.2, seed = None)
sample_pd = sample.toPandas()
数据帧如下所示:

sample_pd[['client_id', 'beer_freq']].head(10)


  client_id  beer_freq
0   1000839   0.000000
1   1002185   0.000000
2   1003366   1.000000
3   1005218   1.000000
4   1005483   1.000000
5    100964   0.434783
6    101272   0.166667
7   1017462   0.000000
8   1020561   0.000000
9   1023646   0.000000
 >>>array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f60f6fd0750>]], dtype=object)
我想绘制列
“beer\u freq”

情节没有出现。。。 它给出如下结果:

sample_pd[['client_id', 'beer_freq']].head(10)


  client_id  beer_freq
0   1000839   0.000000
1   1002185   0.000000
2   1003366   1.000000
3   1005218   1.000000
4   1005483   1.000000
5    100964   0.434783
6    101272   0.166667
7   1017462   0.000000
8   1020561   0.000000
9   1023646   0.000000
 >>>array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f60f6fd0750>]], dtype=object)
>>数组([[]],dtype=object)
似乎我无法在pyspark环境中使用matplotlib和pandas dataframe编写通用python代码来绘制图形

如果我调用
plt.show()
什么也不发生…

请尝试以下操作:

import matplotlib.pyplot as plt
%matplotlib inline

%DataRicks中不支持matplotlib内联。
可以使用display()显示matplotlib图形。例如,请参见它不可访问。如Gaurav所述,使用
display()
如下:

col_df = heavy_pivot.select('beer_freq')
display(col_df)
这样,您不需要将其更改为pandas dataframe,最终的绘图看起来是一样的。显示后,使用输出下的绘图按钮选择直方图

来源:

从开始,您可以使用
%matplotlib inline

%matplotlib内联
作为pd进口熊猫
iris=pd.read\U csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
虹膜历史('萼片宽度',容器=100)

你调用了
plt.show()
?@DavidG是的,如果我添加
plt.show()
什么都不会发生。这太奇怪了。截至,支持
%matplotlib inline
,因此您不再需要调用
display()