Pyspark: show histogram of a data frame column

前端 未结 5 1977
情书的邮戳
情书的邮戳 2020-12-14 01:04

In pandas data frame, I am using the following code to plot histogram of a column:

my_df.hist(column = \'field_1\')

Is there something that

5条回答
  •  感情败类
    2020-12-14 01:58

    Unfortunately I don't think that there's a clean plot() or hist() function in the PySpark Dataframes API, but I'm hoping that things will eventually go in that direction.

    For the time being, you could compute the histogram in Spark, and plot the computed histogram as a bar chart. Example:

    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)
    

    This is what the data looks like:

    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');
    

    Histogram when plotted in using df_pandas.hist()

    # 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');
    

    Histogram computed by using RDD.histogram()

提交回复
热议问题