PySpark: crea un diccionario a partir de datos en dos columnas

En este artículo vamos a ver cómo crear un diccionario a partir de datos en dos columnas en PySpark usando Python.

Método 1: usar la comprensión del diccionario

Aquí crearemos un marco de datos con dos columnas y luego lo convertiremos en un diccionario usando la comprensión del diccionario.

Python

# importing pyspark
# make sure you have installed the pyspark library
import pyspark
  
# Importing and creating a SparkSession
# to work on DataFrames
# The session name is 'Practice_Session'
from pyspark.sql import SparkSession
spark_session = SparkSession.builder.appName(
  'Practice_Session').getOrCreate()
  
# Creating a DataFrame using createDataFrame()
# method, with hard coded data.
rows = [['John', 54],
        ['Adam', 65],
        ['Michael', 56],
        ['Kelsey', 37],
        ['Chris', 49],
        ['Jonathan', 28],
        ['Anthony', 26],
        ['Esther', 48],
        ['Rachel', 52],
        ['Joseph', 56],
        ['Richard', 49],
        ]
  
columns = ['Name', 'Age']
df_pyspark = spark_session.createDataFrame(rows, columns)
  
# printing the DataFrame
df_pyspark.show()
  
# dictionary comprehension is used here
# Name column here is the key while Age
# columns is the value
# You can also use {row['Age']:row['Name']
# for row in df_pyspark.collect()},
# to reverse the key,value pairs
  
  
# collect() gives a list of
# rows in the DataFrame
result_dict = {row['Name']: row['Age'] 
               for row in df_pyspark.collect()}
  
# Printing a few key:value pairs of
# our final resultant dictionary
print(result_dict['John'])
print(result_dict['Michael'])
print(result_dict['Adam'])

Producción : 

Método 2: convertir PySpark DataFrame y usar el método to_dict()

Aquí están los detalles del método to_dict():

to_dict() : PandasDataFrame.to_dict(orient=’dict’)

Parámetros: 

  • orientar: str {‘dict’, ‘list’, ‘series’, ‘split’, ‘registros’, ‘index’}
  • Determina el tipo de los valores del diccionario.

Retorno: Devuelve un diccionario Python correspondiente al DataFrame

Python

# importing pyspark
# make sure you have installed
# the pyspark library
import pyspark
  
# Importing and creating a SparkSession
# to work on DataFrames
# The session name is 'Practice_Session'
from pyspark.sql import SparkSession
spark_session = SparkSession.builder.appName(
  'Practice_Session').getOrCreate()
  
# Creating a DataFrame using createDataFrame()
# method, with hard coded data.
rows = [['John', 54],
        ['Adam', 65],
        ['Michael', 56],
        ['Kelsey', 37],
        ['Chris', 49],
        ['Jonathan', 28],
        ['Anthony', 26],
        ['Esther', 48],
        ['Rachel', 52],
        ['Joseph', 56],
        ['Richard', 49],
        ]
  
columns = ['Name', 'Age']
df_pyspark = spark_session.createDataFrame(rows, columns)
  
# printing the DataFrame
df_pyspark.show()
  
# COnvert PySpark dataframe to pandas
# dataframe
df_pandas = df_pyspark.toPandas()
  
# Convert the dataframe into
# dictionary
result = df_pandas.to_dict(orient='list')
  
# Print the dictionary
print(result)

Producción : 

Método 3: iterando sobre una columna del diccionario

Iterando a través de columnas y produciendo un diccionario tal que las claves son columnas y los valores son una lista de valores en columnas.

Para esto, primero debemos convertir PySpark DataFrame en Pandas DataFrame

Python

# importing pyspark
# make sure you have installed the pyspark library
import pyspark
  
# Importing and creating a SparkSession to work on 
# DataFrames The session name is 'Practice_Session'
from pyspark.sql import SparkSession
spark_session = SparkSession.builder.appName(
  'Practice_Session').getOrCreate()
  
# Creating a DataFrame using createDataFrame()
# method, with hard coded data.
rows = [['John', 54],
        ['Adam', 65],
        ['Michael', 56],
        ['Kelsey', 37],
        ['Chris', 49],
        ['Jonathan', 28],
        ['Anthony', 26],
        ['Esther', 48],
        ['Rachel', 52],
        ['Joseph', 56],
        ['Richard', 49],
        ]
  
columns = ['Name', 'Age']
df_pyspark = spark_session.createDataFrame(rows, columns)
  
# printing the DataFrame
df_pyspark.show()
  
result = {}
  
# Convert PySpark DataFrame to Pandas
# DataFrame
df_pandas = df_pyspark.toPandas()
  
# Traverse through each column
for column in df_pandas.columns:
  
    # Add key as column_name and
    # value as list of column values
    result[column] = df_pandas[column].values.tolist()
  
# Print the dictionary
print(result)

Producción : 

Publicación traducida automáticamente

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