Convierta PySpark DataFrame en diccionario en Python

En este artículo, veremos cómo convertir el marco de datos de PySpark al diccionario, donde las claves son nombres de columna y los valores son valores de columna.

Antes de comenzar, crearemos un marco de datos de muestra:

Python3

# Importing necessary libraries
from pyspark.sql import SparkSession
  
# Create a spark session
spark = SparkSession.builder.appName('DF_to_dict').getOrCreate()
  
# Create data in dataframe
data = [(('Ram'), '1991-04-01', 'M', 3000),
        (('Mike'), '2000-05-19', 'M', 4000),
        (('Rohini'), '1978-09-05', 'M', 4000),
        (('Maria'), '1967-12-01', 'F', 4000),
        (('Jenis'), '1980-02-17', 'F', 1200)]
  
# Column names in dataframe
columns = ["Name", "DOB", "Gender", "salary"]
  
# Create the spark dataframe
df = spark.createDataFrame(data=data,
                           schema=columns)
  
# Print the dataframe
df.show()

Producción :

Método 1: Usar df.toPandas()

Convierta el marco de datos de PySpark en marco de datos de Pandas usando df.toPandas().

Sintaxis: DataFrame.toPandas()

Tipo de devolución: devuelve el marco de datos de pandas que tiene el mismo contenido que el marco de datos de Pyspark.

Obtenga el valor de cada columna y agregue la lista de valores al diccionario con el nombre de la columna como clave.

Python3

# Declare an empty Dictionary
dict = {}
  
# Convert PySpark DataFrame to Pandas 
# DataFrame
df = df.toPandas()
  
# Traverse through each column
for column in df.columns:
  
    # Add key as column_name and
    # value as list of column values
    dict[column] = df[column].values.tolist()
  
# Print the dictionary
print(dict)

Producción :

{‘Nombre’: [‘Ram’, ‘Mike’, ‘Rohini’, ‘María’, ‘Jenis’], 

‘Fecha de nacimiento’: [‘1991-04-01’, ‘2000-05-19’, ‘1978-09-05’, ‘1967-12-01’, ‘1980-02-17’],

 ‘Género’: [‘M’, ‘M’, ‘M’, ‘F’, ‘F’], 

 ‘salario’: [3000, 4000, 4000, 4000, 1200]}

Método 2: Usar df.collect()

Convierta el marco de datos de PySpark en la lista de filas y devuelva todos los registros de un marco de datos como una lista.

Sintaxis: DataFrame.collect()

Tipo de retorno:  Devuelve todos los registros del marco de datos como una lista de filas.

Python3

import numpy as np
  
# Convert the dataframe into list
# of rows
rows = [list(row) for row in df.collect()]
  
# COnvert the list into numpy array
ar = np.array(rows)
  
# Declare an empty dictionary
dict = {}
  
# Get through each column
for i, column in enumerate(df.columns):
  
    # Add ith column as values in dict
    # with key as ith column_name
    dict[column] = list(ar[:, i])
  
# Print the dictionary
print(dict)

Producción :

{‘Nombre’: [‘Ram’, ‘Mike’, ‘Rohini’, ‘María’, ‘Jenis’], 

‘Fecha de nacimiento’: [‘1991-04-01’, ‘2000-05-19’, ‘1978-09-05’, ‘1967-12-01’, ‘1980-02-17’], 

‘Género’: [‘M’, ‘M’, ‘M’, ‘F’, ‘F’],

 ‘salario’: [‘3000’, ‘4000’, ‘4000’, ‘4000’, ‘1200’]}

Método 3: Usar pandas.DataFrame.to_dict()

El marco de datos de Pandas se puede convertir directamente en un diccionario usando el método to_dict()

Sintaxis: DataFrame.to_dict(orient=’dict’,)

Parámetros: 

  • orient: Indicando el tipo de valores del diccionario. Toma valores como {‘dict’, ‘list’, ‘series’, ‘split’, ‘records’, ‘index’}

Tipo de retorno: Devuelve el diccionario correspondiente al marco de datos.

Código:

Python3

# COnvert PySpark dataframe to pandas
# dataframe
df = df.toPandas()
  
# Convert the dataframe into 
# dictionary
dict = df.to_dict(orient = 'list')
  
# Print the dictionary
print(dict)

Producción :

{‘Nombre’: [‘Ram’, ‘Mike’, ‘Rohini’, ‘María’, ‘Jenis’], 

‘Fecha de nacimiento’: [‘1991-04-01’, ‘2000-05-19’, ‘1978-09-05’, ‘1967-12-01’, ‘1980-02-17’], 

‘Género’: [‘M’, ‘M’, ‘M’, ‘F’, ‘F’],

 ‘salario’: [3000, 4000, 4000, 4000, 1200]}

Al convertir un marco de datos que tiene 2 columnas en un diccionario, cree un marco de datos con 2 columnas que nombran ‘ Ubicación’ y ‘Precio_casa’

Python3

# Importing necessary libraries
from pyspark.sql import SparkSession
  
# Create a spark session
spark = SparkSession.builder.appName('DF_to_dict').getOrCreate()
  
# Create data in dataframe
data = [(('Hyderabad'), 120000),
        (('Delhi'), 124000),
        (('Mumbai'), 344000),
        (('Guntur'), 454000),
        (('Bandra'), 111200)]
  
# Column names in dataframe
columns = ["Location", 'House_price']
  
# Create the spark dataframe
df = spark.createDataFrame(data=data, schema=columns)
  
# Print the dataframe
print('Dataframe : ')
df.show()
  
# COnvert PySpark dataframe to 
# pandas dataframe
df = df.toPandas()
  
# Convert the dataframe into 
# dictionary
dict = df.to_dict(orient='list')
  
# Print the dictionary
print('Dictionary :')
print(dict)

Producción :

Publicación traducida automáticamente

Artículo escrito por ManikantaBandla 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 *