import pandas as pd
import pyspark.sql as sparksql
# Let's use UCLA's college admission dataset
file_name = "https://stats.idre.ucla.edu/stat/data/binary.csv"
# Creating a pandas dataframe from Sample Data
df_pd = pd.read_csv(file_name)
sql_context = sparksql.SQLcontext(sc)
# Creating a Spark DataFrame from a pandas dataframe
df_spark = sql_context.createDataFrame(df_pd)
df_spark.show(5)
字符串 这是数据的样子:
Out[]: +-----+---+----+----+
|admit|gre| gpa|rank|
+-----+---+----+----+
| 0|380|3.61| 3|
| 1|660|3.67| 3|
| 1|800| 4.0| 1|
| 1|640|3.19| 4|
| 0|520|2.93| 4|
+-----+---+----+----+
only showing top 5 rows
# This is what we want
df_pandas.hist('gre');
# Doing the heavy lifting in Spark. We could leverage the `histogram` function from the RDD api
gre_histogram = df_spark.select('gre').rdd.flatMap(lambda x: x).histogram(11)
# Loading the Computed Histogram into a Pandas Dataframe for plotting
pd.DataFrame(
list(zip(*gre_histogram)),
columns=['bin', 'frequency']
).set_index(
'bin'
).plot(kind='bar');
7条答案
按热度按时间bqjvbblv1#
不幸的是,我不认为PySpark Dataframes API中有一个干净的
plot()
或hist()
函数,但我希望事情最终会朝着这个方向发展。目前,您可以在Spark中计算直方图,并将计算出的直方图绘制为条形图。示例如下:
字符串
这是数据的样子:
型
Histogram when plotted in using df_pandas.hist()
型
Histogram computed by using RDD.histogram()的
bnl4lu3b2#
现在,您可以使用pyspark_dist_explore包来利用Spark DataFrames的matplotlib hist函数:
字符串
此库使用rdd直方图函数来计算bin值。
sg3maiej3#
另一种解决方案,不需要额外的进口,这也应该是有效的;首先,使用窗口分区:
字符串
然后你需要它来使用 count 由窗口分区的聚合:
第一个月
聚合运算符发生在集群的每个分区上,并且不需要到主机的额外往返。
edqdpe6u4#
RDDs的
histogram
方法返回bin范围和bin计数。这里有一个函数,它接受这个直方图数据并将其绘制成直方图。字符串
(This代码假定bin具有相等的长度。)
jslywgbw5#
这段代码简单地产生一个新的列,将数据划分为相等大小的仓,然后按该列对数据进行分组。这可以被绘制为条形图以查看直方图。
字符串
yptwkmov6#
这很简单,效果很好。
字符串
piztneat7#
这是我的方法:
字符串
有没有人知道一个更优雅的方法来上限和下限的变量?