このガイドでは、PySpark データをヒストグラムにプロットする方法を説明します。ここでは 2 つのシナリオがわかります。ヒストグラムは PySpark Pandas DataFrame と RDD データ上で作成されます。これら 2 つのシナリオのために、PySpark は 2 つの関数 pyspark.pandas.DataFrame.plot.hist() と pyspark.RDD.histogram を提供します。
内容のトピック:
- PySpark Pandas データフレームにヒストグラムをプロットする
- Bins パラメーターを使用して PySpark Pandas データフレームにヒストグラムをプロットする
- バケット番号を指定して PySpark RDD にヒストグラムをプロットする
- 各バケットのサイズを指定して PySpark RDD にヒストグラムをプロットする
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 )
出力:
- Bucket-1 の範囲は 12.0 ~ 86.223 です。この範囲では、バケット内に存在する値の合計数は 5 です。
- Bucket-2 の範囲は 86.223 ~ 160.446 です。この範囲では、バケット内に存在する値の合計数は 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 の範囲は 12.0 ~ 123.335 です。この範囲では、バケット内に存在する値の合計数は 8 です。
- バケット 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: (0 ~ 50) : このバケット内の合計値は 3 です。
- バケット 1: (50 ~ 100) : このバケットの合計値は 2 です。
- バケット 1: (100 ~ 150) : このバケットの合計値は 2 です。
- バケット 1: (150 ~ 200) : このバケットの合計値は 2 です。
- バケット 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: (0 ~ 100)。このバケットの合計値は 5 です。
- バケット 2: (100 ~ 200)。このバケットの合計値は 3 です。
- バケット 3: (200 ~ 300)。このバケットの合計値は 2 です。
結論
PySpark Pandas DataFrame と RDD 上の PySpark でヒストグラムを作成する方法を説明しました。 histogram() は、RDD データのヒストグラムを取得するために使用される関数です。 PySpark Pandas DataFrame にヒストグラムを表示するには、plot.hist() を使用します。すべてのパラメーターをカバーする例を使用して、これらの関数について説明しました。