Skip to content

Wie konvertiert man eine PySpark DataFrame Spalte in eine Python-Liste?

Updated on

Wenn Sie mit PySpark-Datenframes arbeiten, müssen Sie möglicherweise eine Spalte aus dem Datenframe extrahieren und als Python-Liste für weitere Analysen verwenden. In diesem Artikel werden verschiedene Möglichkeiten vorgestellt, wie Sie eine PySpark-Datenframe-Spalte in eine Python-Liste extrahieren können. Wir beginnen mit den Grundlagen des PySpark-Datenframes und gehen dann auf verschiedene Methoden zur Extraktion von Spalten ein.

Möchten Sie Datenvisualisierungen aus einem Python-Pandas-Datenframe schnell und ohne Code erstellen?

PyGWalker ist eine Python-Bibliothek für explorative Datenanalyse mit Visualisierung. Mit PyGWalker (opens in a new tab) können Sie Ihren Workflow zur Datenanalyse und Datenvisualisierung in Jupyter Notebook vereinfachen, indem Sie Ihren Pandas-Datenframe (und Polars-Datenframe) in eine nutzerfreundliche Tableau-ähnliche Benutzeroberfläche für visuelle Exploration verwandeln.

PyGWalker für Datenvisualisierung (opens in a new tab)

Einführung in den PySpark Datenframe

Ein DataFrame ist eine verteilte Sammlung von Daten, die in benannten Spalten organisiert ist. Er ist konzeptionell äquivalent zu einer Tabelle in einer relationalen Datenbank oder einem Datenframe in R oder Python. Der PySpark DataFrame ist ein resiliente verteilte Dataset (RDD) von Zeilen mit einem Schema. PySpark SQL bietet eine Programmierschnittstelle zur Arbeit mit strukturierten Daten unter Verwendung von Spark. PySpark unterstützt die meisten gängigen Datenquellen wie CSV, JSON, Avro, Parquet usw.

Um das besser zu verstehen, erstellen wir einen einfachen PySpark-Datenframe und überprüfen sein Schema mithilfe von PySpark SQL.

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
 
# SparkSession erstellen
spark = SparkSession.builder.appName("PySpark_Beispiele").getOrCreate()
 
# Schema definieren
schema = StructType([
    StructField("id", IntegerType(), True),
    StructField("name", StringType(), True)])
 
# Datenframe erstellen
data = [(1, "John"), (2, "Mary"), (3, "Smith"), (4, "James")]
df = spark.createDataFrame(data, schema=schema)
 
# Datenframe anzeigen
df.show()

Die Ausgabe wird wie folgt aussehen:

+---+-----+
| id|name |
+---+-----+
|  1| John|
|  2| Mary|
|  3|Smith|
|  4|James|
+---+-----+

Extrahieren einer einzelnen Spalte als Liste

Es gibt verschiedene Möglichkeiten, eine Spalte aus dem PySpark-Datenframe zu extrahieren. In diesem Abschnitt werden einige davon vorgestellt.

Methode 1: Verwendung der Collect-Funktion

Die collect()-Funktion in PySpark wird verwendet, um alle Elemente des RDD (Resilient Distributed Datasets) an das Treiberprogramm als Array zurückzugeben. Wir können collect() verwenden, um eine PySpark-Datenframe-Spalte in eine Python-Liste zu konvertieren. So geht's:

# Name-Spalte mit collect() extrahieren
name_list = df.select('name').rdd.flatMap(lambda x: x).collect()
 
# Liste anzeigen
print(name_list)

Die Ausgabe wird wie folgt aussehen:

['John', 'Mary', 'Smith', 'James']

Hier haben wir die select()-Funktion verwendet, um die "name"-Spalte aus dem Datenframe auszuwählen. Dann haben wir rdd.flatMap(lambda x: x) verwendet, um die Spalte in ein RDD umzuwandeln, und dann die collect()-Funktion des RDD verwendet, um die Daten in Form einer Python-Liste zu erhalten.

Methode 2: Verwendung von List Comprehension

Eine andere Möglichkeit, eine Spalte aus einem PySpark-Datenframe als Python-Liste zu extrahieren, besteht darin, List Comprehension zu verwenden. So geht's:

# Name-Spalte mit List Comprehension extrahieren
name_list = [row.name for row in df.select('name').collect()]
 
# Liste anzeigen
print(name_list)

Die Ausgabe wird wie folgt aussehen:

['John', 'Mary', 'Smith', 'James']

Hier haben wir List Comprehension verwendet, um die "name"-Spalte aus dem Datenframe als Python-Liste zu extrahieren. Zuerst haben wir die select()-Funktion verwendet, um die Spalte auszuwählen, und dann die collect()-Funktion, um die Daten zurück zum Treiberprogramm abzurufen.

Methode 3: Verwendung der Funktion toPandas()

Wir können eine Spalte aus dem PySpark-Datenframe auch als Python-Liste mithilfe der toPandas()-Funktion extrahieren. Diese Methode wird jedoch bei großen Datenframes nicht empfohlen, da sie zu Out-Of-Memory-Fehlern führen kann. So geht's:

# Name-Spalte mit toPandas() extrahieren
name_list = df.select('name').toPandas()['name'].tolist()
 
# Liste anzeigen
print(name_list)

Die Ausgabe wird wie folgt aussehen:

['John', 'Mary', 'Smith', 'James']

Hier haben wir die select()-Funktion verwendet, um die "name"-Spalte aus dem Datenframe auszuwählen, und dann den Datenframe mithilfe der toPandas()-Funktion in einen Pandas-Datenframe umgewandelt. Schließlich haben wir die tolist()-Funktion verwendet, um die Pandas-Serie in eine Python-Liste umzuwandeln.

Schlussfolgerung

In diesem Artikel haben wir verschiedene Methoden zur Extraktion einer PySpark-Datenframe-Spalte in eine Python-Liste untersucht, z. B. die Verwendung der collect()-Funktion, List Comprehension und der toPandas()-Funktion. PySpark bietet eine effiziente Möglichkeit, große Datensätze parallel zu verarbeiten, indem die Arbeit auf mehrere Knoten in einem Cluster verteilt wird. Das Verständnis des PySpark-Datenframes und wie man Daten daraus extrahiert, ist eine wertvolle Fähigkeit für jeden Datenwissenschaftler oder Ingenieur, der mit großen Datensätzen arbeitet.

Wir hoffen, dass Ihnen dieser Artikel geholfen hat und Sie jetzt wissen, wie Sie eine PySpark-Datenframe-Spalte in eine Python-Liste extrahieren können. Wenn Sie mehr über PySpark und Pandas erfahren möchten, werfen Sie einen Blick auf unsere anderen Tutorials.


Links: