Skip to content

PySparkのtolist()関数を簡単に理解する:包括的なガイド

Updated on

データサイエンティストとして、大量データの処理や分析に使われる強力なツールであるPySparkについては、おそらくよく知っているでしょう。 PySparkは、大量データ処理のための統合分析エンジンであるApache SparkのPythonライブラリです。 PySparkでは、データ処理に使用される主要なデータ構造であるデータフレームがあります。データ処理の一般的なタスクの1つは、PySparkデータフレームをPythonリストに変換することです。このガイドでは、PySparkのtolist()関数を使用してこのタスクを実行する方法を説明します。

Python Pandas DataframeからNo codeで迅速にデータ可視化を作成したい場合は?

PyGWalkerは、可視化機能を備えたPythonライブラリです。 PyGWalker (opens in a new tab)は、pandasデータフレーム(およびpolarsデータフレーム)を、データの視覚的な探索を行うためのTableauスタイルのユーザーインターフェイスに変換することで、Jupyter Notebookのデータ分析とデータ可視化のワークフローを簡素化できます。

PyGWalker for Data visualization (opens in a new tab)

PySparkのtolist()関数とは?

tolist()関数は、PySpark SQL関数であり、データフレームをPythonリストに変換するために使用されます。関数は引数を受け取らず、データフレームの各行は値のリストとして表現されたリストを返します。

PySparkのtolist()関数の使い方は?

PySparkでtolist()関数を使用するのは簡単です。基本的な構文は次のとおりです。

df.toPandas().values.tolist()

上記のコードでは、PySparkのtoPandas()関数を使用してデータフレームをPandasデータフレームに変換しています。その後、Pandas values.tolist()関数を使用してPandasデータフレームをPythonリストに変換しています。

tolist()関数を使用する方法について、例を使用して詳しく説明しましょう。

例1:PySparkデータフレームをPythonリストに変換する

次のPySparkデータフレームがあるとしましょう。

from pyspark.sql import SparkSession
 
# create SparkSession
spark = SparkSession.builder.appName('PySparkTutorial').getOrCreate()
 
# create DataFrame
data = [('Alice', 1), ('Bob', 2), ('Charlie', 3), ('David', 4)]
df = spark.createDataFrame(data, ['Name', 'Age'])
 
# display DataFrame
df.show()

出力:

+-------+---+
|   Name|Age|
```+-------+---+
|  Alice|  1|
|    Bob|  2|
|Charlie|  3|
|  David|  4|
+-------+---+

このDataFrameをPythonのリストに変換するには、以下のようにtolist()関数を使用できます。

df.toPandas().values.tolist()

出力:

[['Alice', 1], ['Bob', 2], ['Charlie', 3], ['David', 4]]

例2:インデックス付きのPySpark DataFrameをPythonリストに変換する

場合によっては、DataFrameのインデックスをPythonのリストに含めたい場合があります。これが、これを行う方法を示す例です。

from pyspark.sql.functions import row_number
from pyspark.sql.window import Window
 
# インデックス付きのDataFrameを作成
df_index = df.withColumn("index", row_number().over(Window.orderBy("Name")))
 
# インデックス付きDataFrameを表示
df_index.show()

出力:

+-------+---+-----+
|   Name|Age|index|
+-------+---+-----+
|  Alice|  1|    1|
|    Bob|  2|    2|
|Charlie|  3|    3|
|  David|  4|    4|
+-------+---+-----+

インデックスを含むPythonリストに変換するには、Pandas to_dict()関数を使用して、その結果得られた辞書をリストに変換します。

df_index.toPandas().to_dict('records')

出力:

[{'Name': 'Alice', 'Age': 1, 'index': 1},
 {'Name': 'Bob', 'Age': 2, 'index': 2},
 {'Name': 'Charlie', 'Age': 3, 'index': 3},
 {'Name': 'David', 'Age': 4, 'index': 4}]

結論

このガイドでは、PySpark tolist() 関数を使用して、PySpark データフレームを Python リストに変換する方法について学びました。また、データフレームのインデックスを使用して、この関数を使用する方法の例も示しました。私たちは、このガイドがあなたのデータ処理タスクに役立ったことを願っており、他の PySpark 関数を探索して、さらにスキルを向上させることをお勧めします。

参考文献

よくある質問

  1. DataFrameをリストに変換するにはどうすればいいですか?

    DataFrameをPythonでリストに変換するには、values.tolist()メソッドを使用します。このメソッドは、各内部リストがDataFrameの行を表すネストされたリストを返します。変換されたリストは、さらなる処理や分析に使用することができます。

  2. 特定の列をDataFrameからリストに変換する方法はありますか?

    はい、PythonでDataFrameの特定の列をリストに変換することができます。列の名前を使用してインデックス演算子[]で列にアクセスし、tolist()メソッドを適用します。これにより、選択した列の値を含むリストが返されます。

  3. DataFrameの複数の列をリストに変換することは可能ですか?

    はい、PythonでDataFrameの複数の列をリストに変換することができます。列の名前を使用してインデックス演算子[]で選択し、values.tolist()メソッドを適用します。これにより、各内部リストが選択した列の値を表すネストされたリストが返されます。