Convierta la lista de diccionarios de Python en PySpark DataFrame

En este artículo, discutiremos cómo convertir la lista de diccionarios de Python a Pyspark DataFrame.

Se puede hacer de estas formas:

  • Uso del esquema Inferir.
  • Uso de esquema explícito
  • Uso de la expresión SQL

Método 1: inferir el esquema del diccionario

Pasaremos el diccionario directamente al método createDataFrame().

Sintaxis: chispa.createDataFrame(datos)

Ejemplo: código de Python para crear un marco de datos pyspark a partir de una lista de diccionarios usando este método

Python3

# import the modules
from pyspark.sql import SparkSession
  
# Create Spark session app name
# is GFG and master name is local
spark = SparkSession.builder.appName("GFG").master("local") .getOrCreate()
  
# dictionary list of college data
data = [{"Name": 'sravan kumar',
         "ID": 1,
         "Percentage": 94.29},
        {"Name": 'sravani',
         "ID": 2,
         "Percentage": 84.29},
        {"Name": 'kumar',
         "ID": 3,
         "Percentage": 94.29}
        ]
  
# Create data frame from dictionary list
df = spark.createDataFrame(data)
  
# display
df.show()

Producción:

Método 2: usar un esquema explícito

Aquí vamos a crear un esquema y pasar el esquema junto con los datos al método createdataframe().

Estructura del esquema:

esquema = StructType([

   StructField(‘columna_1’, Tipo de datos(), Falso),

   StructField(‘columna_2’, Tipo de datos(), Falso)])

Donde las columnas son el nombre de las columnas del diccionario para obtener el marco de datos pyspark y el tipo de datos es el tipo de datos de la columna en particular.

Sintaxis: spark.createDataFrame(datos, esquema)

Dónde, 

  • data es la lista del diccionario
  • esquema es el esquema de la trama de datos

Programa de Python para crear un marco de datos pyspark a partir de listas de diccionarios utilizando este método.

Python3

# import the modules
from pyspark.sql import SparkSession
from pyspark.sql.types import StructField, StructType,
StringType, IntegerType, FloatType
  
  
# Create Spark session app name is
# GFG and master name is local
spark = SparkSession.builder.appName("GFG").master("local") .getOrCreate()
  
# dictionary list of college data
data = [{"Name": 'sravan kumar',
         "ID": 1,
         "Percentage": 94.29},
        {"Name": 'sravani',
         "ID": 2,
         "Percentage": 84.29},
        {"Name": 'kumar',
         "ID": 3,
         "Percentage": 94.29}
        ]
  
# specify the schema
schema = StructType([
    StructField('Name', StringType(), False),
    StructField('ID', IntegerType(), False),
    StructField('Percentage', FloatType(), True)
])
  
# Create data frame from
# dictionary list through the schema
df = spark.createDataFrame(data, schema)
  
# display
df.show()

Producción:

Método 3: usar la expresión SQL

Aquí estamos usando la función Fila para convertir la lista de diccionarios de python en un marco de datos de pyspark.

Sintaxis: spark.createDataFrame([Row(**iterator) for iterator in data])

dónde: 

  • createDataFrame() es el método para crear el marco de datos
  • Row(**iterator) para iterar la lista de diccionarios.
  • data es la lista del diccionario

Código de Python para convertir la lista de diccionarios en el marco de datos pyspark.

Python3

# import the modules
from pyspark.sql import SparkSession, Row
  
# Create Spark session app name
# is GFG and master name is local
spark = SparkSession.builder.appName("GFG").master("local") .getOrCreate()
  
# dictionary list of college data
data = [{"Name": 'sravan kumar',
         "ID": 1,
         "Percentage": 94.29},
        {"Name": 'sravani',
         "ID": 2,
         "Percentage": 84.29},
        {"Name": 'kumar',
         "ID": 3,
         "Percentage": 94.29}
        ]
  
# create dataframe using sql expression
dataframe = spark.createDataFrame([Row(**variable) 
                                   for variable in data])
  
dataframe.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por gottumukkalabobby y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *