Spark リストを Pandas データフレームに変換する

Luqman Khan 2023年6月21日
  1. topandas() メソッドを使用して Spark リストを Pandas データフレームに変換する
  2. parallelize() 関数を使用して、Spark リストを Python Pandas データフレームに変換する
  3. まとめ
Spark リストを Pandas データフレームに変換する

この記事では、Spark 行リストを Pandas データフレームに変換します。

topandas() メソッドを使用して Spark リストを Pandas データフレームに変換する

createDataframe() の構文:

current_session.createDataFrame(data, schema=None, samplingRatio=None, verifySchema=True)

パラメーター:

  • data: このパラメーターには、SQL/MySQL 形式のデータまたはデータセットが含まれます。
  • スキーマ: これには、データフレームの列名が含まれます。
  • sampling Ratio (float): 行の比率です。
  • verify Schema (bool): スキーマのデータ型をチェックするためのブール型です。

上記のパラメーターは、spark データフレーム オブジェクトを返します。 上記の方法の例は次のとおりです。

まず、この関数を使用して行リスト データを渡し、spark データフレームを作成します。 次に、PySpark とその他の関連モジュールをインポートします。

コード:

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row

row_pandas_session = SparkSession.builder.appName("row_pandas_session").getOrCreate()
row_object_list = [
    Row(Topic="Machine Learning", Difficulty=10),
    Row(Topic="Artifical Intligence", Difficulty=5),
    Row(Topic="Deep learning", Difficulty=6),
    Row(Topic="Python Ptogramming", Difficulty=7),
]

Spark データフレームを作成するには、createDataframe() 関数を使用します。

df = row_pandas_session.createDataFrame(row_object_list)

show() 関数を使用して、作成された Spark データフレームを表示します。

df.show()

出力:

+--------------------+----------+
|               Topic|Difficulty|
+--------------------+----------+
|    Machine Learning|        10|
|Artifical Intligence|         5|
|       Deep learning|         6|
|  Python Ptogramming|         7|
+--------------------+----------+

最後に、topandas() 関数を使用して、spark データフレームを Pandas データフレームに変換します。 次に、Pandas データフレームを出力します。

pandas_df = df.toPandas()
pandas_df

出力:

                  Topic  Difficulty
0      Machine Learning          10
1  Artifical Intligence           5
2         Deep learning           6
3    Python Ptogramming           7

完全なコード:

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row

row_pandas_session = SparkSession.builder.appName("row_pandas_session").getOrCreate()
row_object_list = [
    Row(Topic="Machine Learning", Difficulty=10),
    Row(Topic="Artifical Intligence", Difficulty=5),
    Row(Topic="Deep learning", Difficulty=6),
    Row(Topic="Python Ptogramming", Difficulty=7),
]
df = row_pandas_session.createDataFrame(row_object_list)
df.show()
pandas_df = df.toPandas()
pandas_df

parallelize() 関数を使用して、Spark リストを Python Pandas データフレームに変換する

RDD を作成するには、parallelize() 関数を使用します。 並列化とは、事前定義されたコレクションの要素を、並列操作を実行できる分散データセットにコピーすることを指します。

構文:

sc.parallelize(data,numSlices)

どこ:

  • sc: Spark コンテキスト オブジェクト

パラメーター:

  • data: これは、RDD 用に作成されたデータまたはデータセットです。
  • numSlices: パーティションの数を指定します。 これはオプションのパラメーターです。

以下のコードは、前のセクションと同じです。

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row

row_pandas_session = SparkSession.builder.appName("row_pandas_session").getOrCreate()
row_object_list = [
    Row(Topic="Machine Learning", Difficulty=10),
    Row(Topic="Artifical Intligence", Difficulty=5),
    Row(Topic="Deep learning", Difficulty=6),
    Row(Topic="Python Ptogramming", Difficulty=7),
]

次に、RDD を使用してデータフレームを作成します。

rdd = row_pandas_session.sparkContext.parallelize(row_object_list)
rdd

出力:

ParallelCollectionRDD[11] at readRDDFromFile at PythonRDD.scala:274

次に、以下に示すように、データフレームを作成します。

df = row_pandas_session.createDataFrame(rdd)
df.show()

出力:

+--------------------+----------+
|               Topic|Difficulty|
+--------------------+----------+
|    Machine Learning|        10|
|Artifical Intligence|         5|
|       Deep learning|         6|
|  Python Ptogramming|         7|
+--------------------+----------+

最後に、それを Pandas データフレームに変換します。

df2 = df.toPandas()
print(df2)

出力:

                  Topic  Difficulty
0      Machine Learning          10
1  Artifical Intligence           5
2         Deep learning           6
3    Python Ptogramming           7

まとめ

この記事では、2つの方法を使用しました。 最初に createDataframe() 関数を使用し、続いて topandas() 関数を使用して Spark リストを Pandas データフレームに変換します。

使用した 2 番目の方法は parallelize() 関数です。 この方法では、まず、前と同じ関数を使用して Spark データフレームを作成し、RDD を使用して並列化して Spark データフレームを作成しました。

Spark データフレームは、topandas() 関数を使用して Pandas データフレームに変換されます。

関連記事 - Pandas Dataframe