¿Cómo agregar la suma de la columna como una nueva columna en el marco de datos de PySpark?

En este artículo, veremos cómo realizar la adición de nuevas columnas en el marco de datos de Pyspark mediante varios métodos. Significa que queremos crear una nueva columna que contendrá la suma de todos los valores presentes en la fila dada. Ahora analicemos los diversos métodos sobre cómo agregamos la suma como nuevas columnas 

Pero primero, creemos Dataframe para demostración

Python3

# import SparkSession from the pyspark
from pyspark.sql import SparkSession
 
# build and create  the SparkSession
# with name "sum as new_col"
spark = SparkSession.builder.appName("sum as new_col").getOrCreate()
 
# Creating the Spark DataFrame
data = spark.createDataFrame([('x', 5, 3, 7),
                              ('Y', 3, 3, 6),
                              ('Z', 5, 2, 6)],
                             ['A', 'B', 'C', 'D'])
 
# Print the schema of the DataFrame by
# printSchema()
data.printSchema()
 
# Showing the DataFrame
data.show()

Producción:

Ahora veremos los diferentes métodos sobre cómo agregar nuevas columnas en Spark Dataframe.

Método 1: Usar UDF

En este método, definiremos la función que tomará el nombre de la columna como argumento y devolverá la suma total de las filas. Mediante el uso del método UDF (funciones definidas por el usuario) que se utiliza para hacer una función reutilizable en chispa. Esta función nos permite crear la nueva función según nuestros requisitos, por eso también se denomina función definida usada.

Ahora definimos el tipo de datos de la función udf y creamos las funciones que devolverán los valores, que es la suma de todos los valores en la fila.

Python3

# import the functions as F from pyspark.sql
import pyspark.sql.functions as F
from  pyspark.sql.types import IntegerType
  
# define the sum_col
def sum_col(b, c, d):
    col_sum = b+c+d
    return col_sum
 
# integer datatype is defined
new_f = F.udf(sum_col, IntegerType())
 
# calling and creating the new
# col as udf_method_sum
df_col1 = data.withColumn("Udf_method_sum",
                          new_f("B", "C", "D"))
 
# Showing and printing the schema of the Dataframe
df_col1.printSchema()
df_col1.show()

Producción:

Método 2: Usar la función expr().

Usando expr(str) la función que tomará el argumento de las expresiones como una string. Hay otra función en pyspark que tomará una expresión matemática como argumento en forma de string. Por ejemplo, si desea la suma de las filas, pase los argumentos como ‘n1+n2+n3+n4…….’ donde n1,n2,n3… son los nombres de las columnas

Python3

# import expr from the functions
from pyspark.sql.functions import expr
 
# create the new column as by withcolumn
# by giving argument  as
# col_name ='expression_method_sum'
# and  expr() function which
# will take expressions  argument as string
df_col1 = df_col1.withColumn('expression_method_sum',
                             expr("B+C + D"))
 
# Showing and printing the schema of
# the Dataframe
df_col1.printSchema()
df_col1.show()

Producción: 

Método 3: Usar la operación SQL

En este método primero, tenemos que crear la vista temporal de la tabla con la ayuda de createTempView podemos crear la vista temporal. La vida de esta temperatura depende de la vida de la sparkSession

Luego, después de crear la tabla, seleccione la tabla por cláusula SQL que tomará todos los valores como una string  

Python3

# Creating the temporary view
# of the DataFrame as temp.
df_col1 = df_col1.createTempView("temp")
 
# By using sql clause creating
# new columns as sql_method
df_col1=spark.sql('select *, B+C+D as sql_method from temp')
 
# Printing the schema of the dataFrame
# and showing the DataFrame
df_col1.printScheam()
df_col1.show()

Producción: 

Método 4: Usar select()

Seleccione la tabla usando el método select() y pase los argumentos, el primero es el nombre de la columna, o «*» para seleccionar toda la tabla y el segundo argumento pasa los nombres de las columnas para la adición, y la función alias() se usa para dar el nombre de la columna recién creada.

Python3

# select everything from table df_col1 and
# create new sum  column as " select_method_sum".
df_col1 = df_col1.select('*',
                         (df_col1["B"]+df_col1["C"]+df_col1['D']).
                         alias("select_method_sum"))
 
# Showing the schema and table
df_col1.printSchema()
df_col1.show()

Producción:

Método 5: Usando withcolumn()

 WithColumn() es una función de transformación del marco de datos que se utiliza para cambiar valores, cambiar tipos de datos y crear nuevas columnas a partir de las existentes.

Esta función tendrá argumentos como nuevo nombre de columna y nombre de columna para la suma.

Python3

# by using withcolumn function
df_col1 = df_col1.withColumn('withcolum_Sum',
                             data['B']+data['C']+data['D'])
 
# Showing and printing the schema
# of the Dataframe
df_col1.printSchema()
df_col1.show()

Producción: 

Publicación traducida automáticamente

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