PySpark データをヒストグラムにプロットする方法

Pyspark Detawohisutoguramunipurottosuru Fang Fa



PySpark では、データの視覚化はヒストグラムやその他のプロット技術を使用して行われます。これは、データ サイエンス エンジニアがデータをグラフ表示して理解するのに役立ちます。彼らにとって時間は重要な制約です。これらの視覚化により、テキスト/CSV などの他のデータ形式と比較して、データをより迅速に分析できます。

このガイドでは、PySpark データをヒストグラムにプロットする方法を説明します。ここでは 2 つのシナリオがわかります。ヒストグラムは PySpark Pandas DataFrame と RDD データ上で作成されます。これら 2 つのシナリオのために、PySpark は 2 つの関数 pyspark.pandas.DataFrame.plot.hist() と pyspark.RDD.histogram を提供します。

内容のトピック:







Pyspark.pandas.DataFrame.plot.hist()

このシナリオでは、ヒストグラムは、水平 x 軸に沿って (PySpark Pandas DataFrame からの) クラス範囲を列に分割したデータのグラフのような表現として表示されます。 Y 軸は、PySpark Pandas データフレーム内の各列の出現数を表します。



構文:



pyspark_pandas_DataFrame.plot.hist(bins,...)

これは、整数であるオプションのパラメータとしてビンの総数と、いくつかのオプションのキーワード引数を受け取ります。各列にビンが指定されていない場合は、バーが作成されます。





PySpark Pandas データフレームにヒストグラムをプロットする

4 つのレコードを持つ 2 つの列を持つ PySpark Pandas DataFrame を作成します。 Lot.hist() 関数にパラメータを渡さずにヒストグラムをプロットします。

pysparkからパンダをインポート

pyspark_pandas_dataframe=pandas.DataFrame({ '建物の高さ' :[ 120.56 234.67 12.0 200.45 ]、 '建物_エリア' :[ 2 3 1 4 ]})

print(pyspark_pandas_dataframe)

# PySpark-Pandas ヒストグラム

pyspark_pandas_dataframe.plot.hist()

出力:



ここでは、列名は「Building_height」と「Building_Area」です。

ヒストグラムを見てみましょう:

前の DataFrame の行の合計数は 4 です。したがって、4 つのビンが作成されます。

Bins パラメーターを使用して PySpark Pandas データフレームにヒストグラムをプロットする

4 つのレコードを持つ 2 つの列を持つ PySpark Pandas DataFrame を作成します。 Lot.hist() 関数にパラメータを渡さずにヒストグラムをプロットします。

pysparkからパンダをインポート

pyspark_pandas_dataframe=pandas.DataFrame({ '建物の高さ' :[ 120.56 234.67 12.0 200.45 ]、 '建物_エリア' :[ 2 3 1 4 ]})

# 2 つのビンを使用した PySpark-Pandas ヒストグラム

pyspark_pandas_dataframe.plot.hist(bins= 2 )

出力:

ここでは、列名は「Building_height」と「Building_Area」です。

ヒストグラムを見てみましょう。赤は「Building_Area」列を指し、青は「Building_height」列を指します。

指定したように、2 つのビンと 2 つのバーのみが作成されました。ここでは 4 行が 2 つのバケットにビン化されます。

バケット番号を指定して PySpark RDD にヒストグラムをプロットする

RDD を使用している場合、バケットと各バケットに存在する合計値を含むタプルの形式でヒストグラムを返すことができます。

構文:

pyspark_RDD.histogram(バケット)

このシナリオでは、ヒストグラムに含まれるバケットの数 (整数) を渡します。バケット範囲と対応する値の出現を含むリストのタプルを次の形式で返します。 ([バケット範囲…]、[値の出現…])。

例 1:

10 個の値を含む「Building_height」という名前の RDD を作成し、3 つのバケットを含むヒストグラムを作成してみましょう。

pysparkをインポートする

pyspark.sql から SparkSession をインポート

pyspark.rdd から RDD をインポート

smile_app = SparkSession.builder.appName( 「リナックス」 ).getOrCreate()

# 10 個の値を含む RDD を作成する

Building_height =spark_app.sparkContext.Parallelize([ 120.56 234.67 12.0 200.45 17.8 24 56 78 90 100 ])

印刷( '実際: ' ,建物の高さ.collect())

# 3つのバケットを指定

建物の高さ.ヒストグラム( 3 )

出力:

  1. Bucket-1 の範囲は 12.0 ~ 86.223 です。この範囲では、バケット内に存在する値の合計数は 5 です。
  2. Bucket-2 の範囲は 86.223 ~ 160.446 です。この範囲では、バケット内に存在する値の合計数は 3 です。
  3. Bucket-3 の範囲は 160.446 ~ 234.67 です。この範囲では、バケット内に存在する値の合計数は 2 です。

例 2:

前に作成した RDD 上で 2 つのバケットを使用してヒストグラムを作成します。

pysparkをインポートする

pyspark.sql から SparkSession をインポート

pyspark.rdd から RDD をインポート

smile_app = SparkSession.builder.appName( 「リナックス」 ).getOrCreate()

# 10 個の値を含む RDD を作成する

Building_height =spark_app.sparkContext.Parallelize([ 120.56 234.67 12.0 200.45 17.8 24 56 78 90 100 ])

印刷( '実際: ' ,建物の高さ.collect())

# バケットを2つ指定

建物の高さ.ヒストグラム( 2 )

出力:

  1. バケット 1 の範囲は 12.0 ~ 123.335 です。この範囲では、バケット内に存在する値の合計数は 8 です。
  2. バケット 2 の範囲は 123.335 ~ 234.67 です。この範囲では、バケット内に存在する値の合計数は 2 です。

各バケットのサイズを指定して PySpark RDD にヒストグラムをプロットする

前のシナリオでは、バケットを RDD.histogram() 関数に渡しました。ここで、バケット サイズをリスト内で次々に渡し、このリストをパラメータとしてこの関数に渡します。少なくとも 2 つのバケットを昇順で指定する必要があり、値が重複しないようにしてください。

構文:

pyspark_RDD.histogram([バケット範囲…])

このシナリオでは、ヒストグラムに含まれるバケットの数 (整数) を渡します。バケット範囲と対応する値の出現を含むリストのタプルを次の形式で返します。 ([バケット範囲…]、[値の出現…])。

例 1:

10 個の値を含む「Building_height」という名前の RDD を作成し、値のバッカー範囲 [0、50、100、150、200、250] でヒストグラムを作成しましょう。

pysparkをインポートする

pyspark.sql から SparkSession をインポート

pyspark.rdd から RDD をインポート

smile_app = SparkSession.builder.appName( 「リナックス」 ).getOrCreate()

# 10 個の値を含む RDD を作成する

Building_height =spark_app.sparkContext.Parallelize([ 120.56 234.67 12.0 200.45 17.8 24 56 178 90 100 ])

印刷( '実際: ' ,建物の高さ.collect())

# バケットのサイズを指定 - [0,50,100,150,200,250]

建物の高さ.ヒストグラム([ 0 50 100 150 200 250 ])

出力:

  1. バケット 1: (0 ~ 50) : このバケット内の合計値は 3 です。
  2. バケット 1: (50 ~ 100) : このバケットの合計値は 2 です。
  3. バケット 1: (100 ~ 150) : このバケットの合計値は 2 です。
  4. バケット 1: (150 ~ 200) : このバケットの合計値は 2 です。
  5. バケット 1: (200 ~ 250) : このバケットの合計値は 2 です。

例 2:

バケットの値範囲 [0、100、200、300] を使用してヒストグラムを作成します。

pysparkをインポートする

pyspark.sql から SparkSession をインポート

pyspark.rdd から RDD をインポート

smile_app = SparkSession.builder.appName( 「リナックス」 ).getOrCreate()

# 10 個の値を含む RDD を作成する

Building_height =spark_app.sparkContext.Parallelize([ 120.56 234.67 12.0 200.45 17.8 24 56 178 90 100 ])

印刷( '実際: ' ,建物の高さ.collect())

# バケットのサイズを指定 - [0,100,200,300]

建物の高さ.ヒストグラム([ 0 100 200 300 ])

出力:

  1. バケット 1: (0 ~ 100)。このバケットの合計値は 5 です。
  2. バケット 2: (100 ~ 200)。このバケットの合計値は 3 です。
  3. バケット 3: (200 ~ 300)。このバケットの合計値は 2 です。

結論

PySpark Pandas DataFrame と RDD 上の PySpark でヒストグラムを作成する方法を説明しました。 histogram() は、RDD データのヒストグラムを取得するために使用される関数です。 PySpark Pandas DataFrame にヒストグラムを表示するには、plot.hist() を使用します。すべてのパラメーターをカバーする例を使用して、これらの関数について説明しました。