Skip to content
Tutoriales
PySpark
¿Cómo convertir una columna de PySpark DataFrame en una lista de Python?

¿Cómo convertir una columna de PySpark DataFrame en una lista de Python?

Si estás trabajando con data frames de PySpark, es posible que necesites extraer una columna del data frame y utilizarla como una lista de python para su análisis posterior. En este artículo, exploraremos diversas formas de extraer una columna de un data frame de PySpark en una lista de python. Comenzaremos con lo básico del data frame de PySpark y luego nos sumergiremos en varios métodos para extraer columnas.

¿Quieres crear rápidamente visualizaciones de datos a partir de un dataframe de Python Pandas sin escribir código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualizaciones. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis de datos y visualización de datos en el Jupyter Notebook, convirtiendo tu dataframe de pandas (y dataframe de polars) en una interfaz de usuario similar a Tableau para la exploración visual.

PyGWalker for Data visualization (opens in a new tab)

Introducción al Data Frame de PySpark

Un DataFrame es una colección distribuida de datos organizados en columnas con nombres. Es conceptualmente equivalente a una tabla de una base de datos relacional o a un dataframe de R o Python. PySpark DataFrame es un conjunto de datos distribuido y resistente (RDD) de filas que tiene un esquema. PySpark SQL proporciona una interfaz de programación para trabajar con datos estructurados utilizando Spark. PySpark admite la mayoría de las fuentes de datos comunes como CSV, JSON, Avro, Parquet, etc.

Para entender mejor, creemos un simple data frame de PySpark y verifiquemos su esquema usando PySpark SQL.

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
 
# Crear SparkSession
spark = SparkSession.builder.appName("PySpark_Examples").getOrCreate()
 
# Definir el esquema
schema = StructType([
    StructField("id", IntegerType(), True),
    StructField("name", StringType(), True)])
 
# Crear el data frame
data = [(1,"John"),(2,"Mary"),(3,"Smith"),(4,"James")]
df = spark.createDataFrame(data, schema=schema)
 
# Mostrar el data frame
df.show()

La salida se verá así:

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

Extracción de una sola columna como una lista

Hay varias formas de extraer una columna del data frame de PySpark. Exploraremos algunas de ellas en esta sección.

Método 1: Uso de la función Collect

La función collect() en PySpark se utiliza para devolver todos los elementos del RDD (Resilient Distributed Datasets) al programa controlador como un array. Podemos usar collect() para convertir una columna de un data frame de PySpark en una lista de python. Así es como se hace:

# Extraer la columna de nombre utilizando collect()
name_list = df.select('name').rdd.flatMap(lambda x: x).collect()
 
# Imprimir la lista
print(name_list)

La salida se verá así:

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

Aquí, usamos la función select() para seleccionar la columna "name" del data frame. Luego usamos rdd.flatMap(lambda x: x) para convertir la columna en un RDD y luego usamos la función collect() del RDD para obtener los datos en forma de una lista de Python.

Método 2: Uso de la Comprensión de Listas

Otra forma de extraer una columna de un data frame de PySpark como una lista de python es utilizar la comprensión de listas. Así es como se hace:

# Extraer la columna de nombre utilizando comprensión de listas
name_list = [row.name for row in df.select('name').collect()]
 
# Imprimir la lista
print(name_list)

La salida se verá así:

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

Aquí, utilizamos la comprensión de listas para extraer la columna "name" del data frame como una lista de python. Primero usamos la función select() para extraer la columna y luego usamos la función collect() para recuperar los datos en el controlador.

Método 3: Uso de la función toPandas()

También podemos extraer una columna del data frame de PySpark como una lista de python utilizando la función toPandas(). Sin embargo, este método no se recomienda para data frames grandes, ya que puede causar errores de falta de memoria. Así es como se hace:

# Extraer la columna de nombre utilizando toPandas()
name_list = df.select('name').toPandas()['name'].tolist()
 
# Imprimir la lista
print(name_list)

La salida se verá así:

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

Aquí, usamos la función select() para seleccionar la columna "name" del data frame y luego convertimos el data frame en un dataframe de Pandas utilizando la función toPandas(). Finalmente, usamos la función tolist() para convertir la serie de Pandas en una lista de python.

Conclusión

En este artículo, exploramos diversos métodos para extraer una columna del data frame de PySpark en una lista de python, como el uso de la función collect(), la comprensión de listas y la función toPandas(). PySpark proporciona una forma eficiente de procesar conjuntos de datos grandes de forma paralela, distribuyendo el trabajo entre varios nodos en un clúster. Comprender el data frame de PySpark y cómo extraer datos de él es una habilidad valiosa para cualquier científico de datos o ingeniero que trabaje con conjuntos de datos grandes.

Esperamos que este artículo haya sido útil y que ahora sepas cómo extraer una columna de un dataframe de PySpark en una lista de python. Si deseas aprender más sobre PySpark y Pandas, consulta nuestros otros tutoriales.


Enlaces:

Cómo concatenar dos DataFrames en Pandas