Konvertieren Sie die Spark-Liste in den Pandas-Datenrahmen

Luqman Khan 21 Juni 2023
  1. Verwenden Sie die topandas()-Methoden, um die Spark-Liste in den Pandas-Datenrahmen zu konvertieren
  2. Verwenden Sie die Funktion parallelize(), um die Spark-Liste in den Datenrahmen von Python Pandas zu konvertieren
  3. Abschluss
Konvertieren Sie die Spark-Liste in den Pandas-Datenrahmen

In diesem Artikel wird die Spark-Zeilenliste in einen Pandas-Datenrahmen konvertiert.

Verwenden Sie die topandas()-Methoden, um die Spark-Liste in den Pandas-Datenrahmen zu konvertieren

Syntax von createDataframe():

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

Parameter:

  • data: Dieser Parameter enthält Daten oder Datensätze in Form von SQL/MySQL.
  • schema: Enthält den Spaltennamen für den Datenrahmen.
  • sampling Ratio (float): Dies ist das Verhältnis der Zeile.
  • Schema verifizieren (bool): Dies ist vom booleschen Typ, um die Datentypen des Schemas zu überprüfen.

Die obigen Parameter geben das Spark-Datenrahmenobjekt zurück. Ein Beispiel für die obigen Verfahren ist wie folgt.

Wir übergeben zuerst die Zeilenlistendaten mit dieser Funktion und erstellen einen Spark-Datenrahmen. Dann importieren wir PySpark und andere verwandte Module.

Code:

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),
]

Verwenden Sie zum Erstellen eines Spark-Datenrahmens die Funktion createDataframe().

df = row_pandas_session.createDataFrame(row_object_list)

Wir verwenden die Funktion show(), um den erstellten Spark-Datenrahmen anzuzeigen.

df.show()

Ausgang:

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

Schließlich verwenden wir die Funktion topandas(), um den Spark-Datenrahmen in einen Pandas-Datenrahmen zu konvertieren. Dann drucken wir den Pandas-Datenrahmen.

pandas_df = df.toPandas()
pandas_df

Ausgang:

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

Vollständiger Code:

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

Verwenden Sie die Funktion parallelize(), um die Spark-Liste in den Datenrahmen von Python Pandas zu konvertieren

Um ein RDD zu erstellen, verwenden wir die Funktion parallelize(). Parallelisieren bezieht sich auf das Kopieren der Elemente einer vordefinierten Sammlung in einen verteilten Datensatz, auf dem wir parallele Operationen ausführen können.

Syntax:

sc.parallelize(data,numSlices)

Wo:

  • sc: Spark-Kontextobjekt

Parameter:

  • Daten: Dies sind die Daten oder Datensätze, die für RDD erstellt wurden
  • numSlices: Gibt die Anzahl der Partitionen an. Dies ist ein optionaler Parameter.

Der folgende Code ist derselbe wie im vorherigen Abschnitt.

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),
]

Jetzt erstellen wir einen Datenrahmen mit RDD.

rdd = row_pandas_session.sparkContext.parallelize(row_object_list)
rdd

Ausgang:

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

Jetzt erstellen wir den Datenrahmen, wie unten gezeigt.

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

Ausgang:

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

Konvertieren Sie es schließlich in einen Pandas-Datenrahmen.

df2 = df.toPandas()
print(df2)

Ausgang:

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

Abschluss

In diesem Artikel haben wir zwei Methoden verwendet. Wir verwenden zuerst die Funktion createDataframe(), gefolgt von der Funktion topandas(), um die Spark-Liste in einen Pandas-Datenrahmen zu konvertieren.

Die zweite Methode, die wir verwendet haben, ist die Funktion parallelize(). Bei dieser Methode haben wir zuerst den Spark-Datenrahmen mit derselben Funktion wie in der vorherigen Methode erstellt und dann RDD verwendet, um den Spark-Datenrahmen zu parallelisieren und zu erstellen.

Der Spark-Datenrahmen wird dann mit der Funktion topandas() in einen Pandas-Datenrahmen konvertiert.

Verwandter Artikel - Pandas Dataframe