En este artículo, discutiremos cómo sumar una columna mientras agrupamos otra en el marco de datos de Pyspark usando Python.
Vamos a crear el marco de datos para la demostración:
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession # creating sparksession and giving an app name spark = SparkSession.builder.appName('sparkdf').getOrCreate() # list of student data data = [["1", "sravan", "IT", 45000], ["2", "ojaswi", "CS", 85000], ["3", "rohith", "CS", 41000], ["4", "sridevi", "IT", 56000], ["5", "bobby", "ECE", 45000], ["6", "gayatri", "ECE", 49000], ["7", "gnanesh", "CS", 45000], ["8", "bhanu", "Mech", 21000] ] # specify column names columns = ['ID', 'NAME', 'DEPT', 'FEE'] # creating a dataframe from the lists of data dataframe = spark.createDataFrame(data, columns) # display dataframe.show()
Producción:
Método 1: Usar el método groupBy()
En PySpark, groupBy() se usa para recopilar datos idénticos en grupos en PySpark DataFrame y realizar funciones agregadas en los datos agrupados. Aquí la función agregada es sum().
sum(): Esto devolverá los valores totales para cada grupo.
Sintaxis : dataframe.groupBy(‘column_name_group’).sum(‘column_name’)
Ejemplo: Groupby con DEPT junto con FEE con sum()
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession # creating sparksession and giving an app name spark = SparkSession.builder.appName('sparkdf').getOrCreate() # list of student data data = [["1", "sravan", "IT", 45000], ["2", "ojaswi", "CS", 85000], ["3", "rohith", "CS", 41000], ["4", "sridevi", "IT", 56000], ["5", "bobby", "ECE", 45000], ["6", "gayatri", "ECE", 49000], ["7", "gnanesh", "CS", 45000], ["8", "bhanu", "Mech", 21000] ] # specify column names columns = ['ID', 'NAME', 'DEPT', 'FEE'] # creating a dataframe from the lists of data dataframe = spark.createDataFrame(data, columns) # Groupby with DEPT along FEE with sum() dataframe.groupBy('DEPT').sum('FEE').show()
Producción:
Método 2: Usar la función agg() con GroupBy()
Aquí tenemos que importar la función de suma del módulo sql.functions para usarla con el método agregado.
Sintaxis: dataframe.groupBy(“columna_grupo”).agg(sum(“nombre_columna”))
dónde,
- el marco de datos es el marco de datos pyspark
- group_column es la columna de agrupación
- column_name es la columna para obtener la suma
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession # import sum from pyspark.sql.functions import sum # creating sparksession and giving an app name spark = SparkSession.builder.appName('sparkdf').getOrCreate() # list of student data data = [["1", "sravan", "IT", 45000], ["2", "ojaswi", "CS", 85000], ["3", "rohith", "CS", 41000], ["4", "sridevi", "IT", 56000], ["5", "bobby", "ECE", 45000], ["6", "gayatri", "ECE", 49000], ["7", "gnanesh", "CS", 45000], ["8", "bhanu", "Mech", 21000] ] # specify column names columns = ['ID', 'NAME', 'DEPT', 'FEE'] # creating a dataframe from the lists of data dataframe = spark.createDataFrame(data, columns) # Groupby with DEPT and NAME with sum() dataframe.groupBy("DEPT").agg(sum("FEE")).show()
Producción:
Método 3: Uso de la función Ventana con suma
La función de ventana se utiliza para particionar las columnas en el marco de datos.
Sintaxis : Window.partitionBy(‘column_name_group’)
donde, column_name_group es la columna que contiene múltiples valores para la partición
Podemos particionar la columna de datos que contiene valores de grupo y luego usar la función agregada de sum() para obtener la suma de la columna de agrupación (particionamiento).
Sintaxis : dataframe.withColumn(‘New_Column_name’, functions.sum(‘column_name’).over(Window.partitionBy(‘column_name_group’)))
dónde,
- El método withColumn() se usa para obtener el nombre de la columna
- functions.sum(‘column_name’) es obtener la suma
- Window.partitionBy(‘column_name_group’) es particionar la columna con suma por grupo
Ejemplo: obtener la suma de la tarifa según el departamento
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession # import functions from pyspark.sql import functions as f # import window module from pyspark.sql import Window # creating sparksession and giving an app name spark = SparkSession.builder.appName('sparkdf').getOrCreate() # list of student data data = [["1", "sravan", "IT", 45000], ["2", "ojaswi", "CS", 85000], ["3", "rohith", "CS", 41000], ["4", "sridevi", "IT", 56000], ["5", "bobby", "ECE", 45000], ["6", "gayatri", "ECE", 49000], ["7", "gnanesh", "CS", 45000], ["8", "bhanu", "Mech", 21000] ] # specify column names columns = ['ID', 'NAME', 'DEPT', 'FEE'] # creating a dataframe from the lists of data dataframe = spark.createDataFrame(data, columns) # summing using window function dataframe.withColumn('Total Branch Sum', f.sum( 'FEE').over(Window.partitionBy('DEPT'))).show()
Producción:
Publicación traducida automáticamente
Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA