Convertir Spark List a Pandas Dataframe

Luqman Khan 21 junio 2023
  1. Use los métodos topandas() para convertir Spark List a Pandas Dataframe
  2. Use la función parallelize() para convertir Spark List a Python Pandas Dataframe
  3. Conclusión
Convertir Spark List a Pandas Dataframe

Este artículo convertirá la lista de filas de Spark en un marco de datos de Pandas.

Use los métodos topandas() para convertir Spark List a Pandas Dataframe

Sintaxis de createDataframe():

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

Parámetros:

  • datos: este parámetro contiene datos o conjunto de datos en forma de SQL/MySQL.
  • esquema: contiene el nombre de la columna del marco de datos.
  • Ratio de muestreo (float): Es el ratio de la fila.
  • verify Schema (bool): Es de tipo booleano para comprobar los tipos de datos del esquema.

Los parámetros anteriores devuelven el objeto de marco de datos de chispa. Un ejemplo de los métodos anteriores es el siguiente.

Primero pasamos los datos de la lista de filas usando esta función y creamos un marco de datos de chispa. Luego importamos PySpark y otros módulos relacionados.

Código:

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

Para crear un marco de datos de chispa, use la función createDataframe().

df = row_pandas_session.createDataFrame(row_object_list)

Usamos la función mostrar () para mostrar el marco de datos de chispa creado.

df.show()

Producción :

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

Finalmente, usamos la función topandas() para convertir el marco de datos de Spark en un marco de datos de Pandas. Luego, imprimimos el dataframe de Pandas.

pandas_df = df.toPandas()
pandas_df

Producción :

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

Código completo:

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

Use la función parallelize() para convertir Spark List a Python Pandas Dataframe

Para crear un RDD, usamos la función parallelize(). Paralelizar se refiere a copiar los elementos de una colección predefinida en un conjunto de datos distribuido en el que podemos realizar operaciones paralelas.

Sintaxis:

sc.parallelize(data,numSlices)

Dónde:

  • sc: objeto de contexto de chispa

Parámetros:

  • datos: Son los datos o conjunto de datos realizados para RDD
  • numSlices: Especifica el número de particiones. Este es un parámetro opcional.

El siguiente código es el mismo que en la sección anterior.

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

Ahora, creamos un marco de datos usando RDD.

rdd = row_pandas_session.sparkContext.parallelize(row_object_list)
rdd

Producción :

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

Ahora, creamos el marco de datos, como se muestra a continuación.

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

Producción :

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

Finalmente, conviértalo en un dataframe de Pandas.

df2 = df.toPandas()
print(df2)

Producción :

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

Conclusión

En este artículo, utilizamos dos métodos. Primero usamos la función createDataframe(), seguida de la función topandas() para convertir la lista de Spark en un marco de datos de Pandas.

El segundo método que usamos es la función parallelize(). En este método, primero, creamos el marco de datos de Spark usando la misma función que el anterior y luego usamos RDD para paralelizar y crear el marco de datos de Spark.

Luego, el marco de datos de Spark se convierte en un marco de datos de Pandas mediante la función topandas().

Artículo relacionado - Pandas Dataframe