En este artículo, discutiremos cómo cambiar el nombre de las columnas para los agregados de marcos de datos de PySpark usando Pyspark.
Trama de datos en uso:
En PySpark, groupBy() se usa para recopilar datos idénticos en grupos en PySpark DataFrame y realizar funciones agregadas en los datos agrupados. Están disponibles en el módulo de funciones:
Método 1: Usar alias()
Podemos usar este método para cambiar el nombre de la columna que se agrega.
Sintaxis :
dataframe.groupBy(‘column_name_group’).agg(aggregate_function(‘column_name’).alias(“new_column_name”))
dónde,
- dataframe es el dataframe de entrada
- column_name_group es la columna agrupada
- added_function es la función de las funciones anteriores
- column_name es la columna donde se realiza la agregación
- new_column_name es el nuevo nombre de column_name
Ejemplo 1: agregando la columna DEPT con sum() y avg() cambiando el nombre de la columna FEE a Total Fee
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession #import functions from pyspark.sql import functions # 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) # aggregating DEPT column with sum() and avg() # by changing FEE column name to Total Fee dataframe.groupBy('DEPT').agg(functions.sum('FEE').alias( "Total Fee"), functions.avg('FEE').alias("Average Fee")).show()
Producción:
Ejemplo 2: agregando la columna DEPT con min(), count(), mean() y max() cambiando el nombre de la columna FEE a Total Fee
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession #import functions from pyspark.sql import functions # 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) # aggregating DEPT column with min(),count(),mean() # and max() by changing FEE column name to Total Fee dataframe.groupBy('DEPT').agg(functions.min('FEE').alias("Minimum Fee"), functions.max('FEE').alias("Maximum Fee"), functions.count('FEE').alias("No of Fee"), functions.mean('FEE').alias("Average Fee")).show()
Producción:
Método 2: Usando withColumnRenamed()
Esto toma un nombre de columna agregado resultante y cambia el nombre de esta columna. Después de la agregación, devolverá los nombres de las columnas como operación_agregada(columna_antigua)
entonces usando esto podemos reemplazar esto con nuestra nueva columna
Sintaxis :
dataframe.groupBy(“grupo_nombre_columna”).agg({“nombre_columna”:”operación_agregado”}).withColumnRenamed(“operación_agregado(nombre_columna)”, “nuevo_nombre_columna”)
Ejemplo: agregando la columna DEPT con sum() FEE y renombrando a Total Fee
Python3
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession #import functions from pyspark.sql import functions # 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) # aggregating DEPT column with sum() FEE and rename to Total Fee dataframe.groupBy("DEPT").agg({"FEE": "sum"}).withColumnRenamed( "sum(FEE)", "Total Fee").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