Función PySpark tolist() hecha fácil: una guía completa
Published on
Como científico de datos, probablemente estés familiarizado con PySpark, una poderosa herramienta para procesar y analizar grandes datos. PySpark es una biblioteca de Python para Apache Spark, un motor de análisis unificado para procesamiento de grandes datos. En PySpark, los DataFrames son una estructura de datos clave utilizada para el procesamiento de datos. Una tarea común en el procesamiento de datos es la conversión de DataFrames de PySpark en listas de Python. En esta guía, explicaremos cómo utilizar la función PySpark tolist() para lograr esta tarea.
¿Quieres crear rápidamente visualizaciones de datos a partir del DataFrame de Python con Pandas sin código?
PyGWalker es una biblioteca de Python para Análisis de datos exploratorios con Visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos de cuaderno Jupyter, convirtiendo tu DataFrame de pandas (y polars dataframe) en una interfaz de usuario estilo Tableau para la exploración visual.
¿Qué es la función PySpark tolist()?
La función tolist() es una función de SQL de PySpark que se utiliza para convertir un DataFrame en una lista de Python. La función no toma ningún argumento y devuelve una lista de filas en el DataFrame. Cada fila en el DataFrame se representa como una lista de valores.
¿Cómo utilizar la función PySpark tolist()?
El uso de la función tolist() en PySpark es sencillo. Aquí está la sintaxis básica:
df.toPandas().values.tolist()
En el código anterior, estamos utilizando la función PySpark toPandas() para convertir el DataFrame en un DataFrame de Pandas. Luego, estamos utilizando la función values.tolist() de Pandas para convertir el DataFrame de Pandas en una lista de Python.
Echemos un vistazo más de cerca a cómo utilizar la función PySpark tolist() con ejemplos.
Ejemplo 1: Conversión de un DataFrame de PySpark en una lista de Python
Supongamos que tenemos el siguiente DataFrame de PySpark:
from pyspark.sql import SparkSession
# crea la sesión de Spark
spark = SparkSession.builder.appName('PySparkTutorial').getOrCreate()
# crea el DataFrame
data = [('Alice', 1), ('Bob', 2), ('Charlie', 3), ('David', 4)]
df = spark.createDataFrame(data, ['Nombre', 'Edad'])
# muestra el DataFrame
df.show()
Resultado:
+-------+---+
| Nombre|Edad|
+-------+---+
| Alice| 1|
| Bob| 2|
|Charlie| 3|
| David| 4|
+-------+---+
Para convertir este DataFrame de PySpark en una lista de Python, podemos utilizar la función tolist() de la siguiente manera:
df.toPandas().values.tolist()
El resultado será:
[['Alice', 1], ['Bob', 2], ['Charlie', 3], ['David', 4]]
Ejemplo 2: Conversión de un DataFrame de PySpark filtrado en una lista de Python
Supongamos que tenemos el siguiente DataFrame de PySpark:
from pyspark.sql import SparkSession
# crea la sesión de Spark
spark = SparkSession.builder.appName('PySparkTutorial').getOrCreate()
# crea el DataFrame
data = [('Alice', 30), ('Bob', 25), ('Charlie', 35), ('David', 40)]
df = spark.createDataFrame(data, ['Nombre', 'Edad'])
# filtra los datos por edad
df_filtrado = df.filter(df.Edad > 30)
# muestra el DataFrame filtrado
df_filtrado.show()
Resultado:
+------+----+
|Nombre|Edad|
+------+----+
|David | 40|
|Charlie| 35|
+------+----+
Para convertir este DataFrame de PySpark filtrado en una lista de Python, podemos utilizar la función tolist() de la siguiente manera:
df_filtrado.toPandas().values.tolist()
El resultado será:
[['David', 40], ['Charlie', 35]]
En resumen, la función PySpark tolist() es una herramienta valiosa en el procesamiento de datos de grandes conjuntos de datos. Con su capacidad para convertir DataFrames de PySpark en listas de Python, es una función esencial para cualquier científico de datos que trabaje con PySpark y se enfrenta a la tarea de procesamiento de grandes conjuntos de datos. +-------+---+ | Alice| 1| | Bob| 2| |Charlie| 3| | David| 4| +-------+---+
Para convertir este DataFrame en una lista de Python, podemos usar la función tolist() de la siguiente manera:
```python
df.toPandas().values.tolist()
Resultado:
[['Alice', 1], ['Bob', 2], ['Charlie', 3], ['David', 4]]
Ejemplo 2: Convertir un DataFrame de PySpark con índice en una lista de Python
En algunos casos, es posible que desee incluir el índice del DataFrame en la lista de Python. Aquí hay un ejemplo que le mostrará cómo hacerlo:
from pyspark.sql.functions import row_number
from pyspark.sql.window import Window
# crear DataFrame con índice
df_index = df.withColumn("index", row_number().over(Window.orderBy("Name")))
# mostrar el DataFrame con índice
df_index.show()
Resultado:
+-------+---+-----+
| Name|Age|index|
+-------+---+-----+
| Alice| 1| 1|
| Bob| 2| 2|
|Charlie| 3| 3|
| David| 4| 4|
+-------+---+-----+
Para convertir este DataFrame en una lista de Python que incluya el índice, podemos usar la función to_dict() de Pandas y luego convertir el diccionario resultante en una lista:
df_index.toPandas().to_dict('records')
Resultado:
[{'Name': 'Alice', 'Age': 1, 'index': 1},
{'Name': 'Bob', 'Age': 2, 'index': 2},
{'Name': 'Charlie', 'Age': 3, 'index': 3},
{'Name': 'David', 'Age': 4, 'index': 4}]
. No traduzca los códigos que comienzan con import. Si hay un frontmatter, traduzca el contenido del frontmatter, no los parámetros. Si hay un componente jsonld, asegúrese de traducir el contenido de json-ld también.
Conclusión
En esta guía, hemos aprendido cómo utilizar la función PySpark tolist() para convertir DataFrames de PySpark en listas de Python. También hemos mostrado ejemplos de cómo utilizar esta función con y sin índices de DataFrame. Esperamos que esta guía haya sido útil en sus tareas de procesamiento de datos, y le animamos a explorar otras funciones de PySpark para mejorar aún más sus habilidades.
Referencias
- Función Pyspark ToList() (opens in a new tab)
- Pyspark: Cómo convertir un Dataframe en una lista (opens in a new tab)
- Conversión de DataFrames PySpark a DataFrames Pandas (opens in a new tab)
Preguntas frecuentes
-
¿Cómo convierto un DataFrame a una lista en Python?
Para convertir un DataFrame a una lista en Python, puedes utilizar el método
values.tolist()
. Este método devuelve una lista anidada donde cada lista interna representa una fila en el DataFrame. La lista resultante se puede utilizar para realizar más procesamiento o análisis. -
¿Puedo convertir una columna específica de un DataFrame a una lista?
Sí, puedes convertir una columna específica de un DataFrame a una lista en Python. Utiliza el operador de indexación
[]
para acceder a la columna por su nombre y luego aplica el métodotolist()
. Esto devolverá una lista que contiene los valores de la columna seleccionada. -
¿Es posible convertir múltiples columnas de un DataFrame a una lista?
Sí, es posible convertir múltiples columnas de un DataFrame a una lista en Python. Utiliza el operador de indexación
[]
para seleccionar las columnas deseadas por su nombre y luego aplica el métodovalues.tolist()
. Esto devolverá una lista anidada donde cada lista interna representa los valores de las columnas seleccionadas.