К сожалению, я не думаю, что в API-интерфейсе PySpark Dataframes есть чистая функция plot()
или hist()
, но я надеюсь, что в конечном итоге все будет в этом направлении.
В настоящее время вы можете вычислить гистограмму в Spark и построить вычисленную гистограмму в виде гистограммы. Пример:
import pandas as pd
import pyspark.sql as sparksql
# Let's use UCLA's college admission dataset
file_name = "http://www.ats.ucla.edu/stat/data/binary.csv"
# Creating a pandas dataframe from Sample Data
pandas_df = pd.read_csv(file_name)
sql_context = sparksql.SQLcontext(sc)
# Creating a Spark DataFrame from a pandas dataframe
spark_df = sql_context.createDataFrame(df)
spark_df.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.hist('gre');
Histogram when plotted in using df.hist()
# Doing the heavy lifting in Spark. We could leverage the `histogram` function from the RDD api
gre_histogram = spark_df.select('gre').rdd.flatMap(lambda x: x).histogram(11)
# Loading the Computed Histogram into a Pandas Dataframe for plotting
pd.DataFrame(zip(list(gre_histogram)[0],
list(gre_histogram)[1]),columns=['bin','frequency']).set_index('bin').plot(kind='bar');
Histogram computed by using RDD.histogram()
Я получаю сообщение об ошибке при создании фрейма данных из итератора 'zip'. Учитывая гистограмму pyspark, создание фрейма pandas немного чище и работает для меня с помощью 'pd.DataFrame (list (zip (* gre_histogram)), columns = ['bin', 'frequency'])' –
gre_histogram = spark_df. select ('gre'). rdd.flatMap (lambda x: x) .histogram (11) - выигрышная линия, комбо этот парень с ответом matplotlib ниже –