Pyspark - Min Función

Pyspark - Min Función
Después de dividir las filas en el marco de datos de Pyspark, es posible devolver los valores mínimos y máximos en cada partición. Al usar algunas funciones agregadas en una ventana de partición, es posible devolver el mínimo/máximo.

Primero, vemos cómo dividir el marco de datos en Pyspark.

Dividir

Es posible particionar las filas en el marco de datos utilizando la función de la ventana. Está disponible en el pyspark.sql.ventana módulo. Habrá dos pasos para dividir las filas en un marco de datos de Pyspark.

Pasos:

  1. Cree un marco de datos de Pyspark que tenga algunos valores similares en al menos una columna.
  2. Partir los datos utilizando el método PartitionBy () disponible en la función inwindow.

Sintaxis:

partición = ventana.Partitionby ("columna")

Podemos ordenar los datos particionados con la columna particionada o cualquier otra columna.

Creemos DataFrame.

Ejemplo:

Aquí, creamos un marco de datos Pyspark que tiene 5 columnas: ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'] con 10 filas.

importar pyspark
de Pyspark.SQL Import Sparksession
de Pyspark.sql.Importación de funciones *
Spark_app = Sparksession.constructor.nombre de la aplicación('_').getorcreate ()
Estudiantes = [(4, 'Sravan', 23, 'Php', 'Pruebas'),
(4, 'Sravan', 23, 'Php', 'Pruebas'),
(46, 'Mounika', 22, '.Net ',' html '),
(4, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Prueba'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Prueba'),
(4, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' prueba ')
]
dataFrame_OBJ = Spark_App.creatataFrame (estudiantes, ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'])
imprimir ("---------- DataFrame ----------")
dataframe_obj.espectáculo()

Producción:

Función de ventana Pyspark min ()

El min () en la función de la ventana se usa para devolver el valor mínimo en cada partición. Puede ser posible devolver un valor mínimo después de dividir el DataFrame.

Sintaxis:

dataframe_obj.WithColumn ("mínimo", min (col ("columna")).sobre (partición))

Parámetro:

min (col ("columna"))

Aquí, la función min () toma el nombre de la columna como parámetro. Devuelve el mínimo de valores en esta columna en cada partición.

Agregamos el resultado a una columna llamada mínima usando la función withColumn ().

Ejemplo 1:

Ahora, tenemos un cuadro de datos (creado anteriormente). Vamos a dividirlo en función de la columna Technology1 y obtener el valor mínimo de la columna Sujeto_ID en cada partición.

# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el Min y el Col de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importar min, col
#Partition El marcado de datos basado en los valores en la columna Technology1
partición = ventana.Partitionby ("Technology1")
imprimir ("---------- DataFrame dividido ----------")
#Realizar el valor mínimo en la columna TIEMPLE_ID para cada partición
dataframe_obj.WithColumn ("mínimo", min (col ("temas_id")).sobre (partición)).espectáculo()

Producción:

Explicación:

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. El valor mínimo en la columna Sujeto_id es 46.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el valor mínimo es 12.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

El valor mínimo en la columna Sujeto_id es 4.

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

El valor mínimo en la columna Sujeto_id es 4.

Ejemplo 2:

Ahora, tenemos un cuadro de datos (creado anteriormente). Vamos a dividirlo en función de la columna Technology1 y obtener el valor mínimo de la columna de edad en cada partición.

# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el Min y el Col de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importar min, col
#Partition El marcado de datos basado en los valores en la columna Technology1
partición = ventana.Partitionby ("Technology1")
imprimir ("---------- DataFrame dividido ----------")
#Realizar el valor mínimo en la columna de edad para cada partición
dataframe_obj.WithColumn ("mínimo", min (col ("edad")).sobre (partición)).espectáculo()

Producción:

Explicación:

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. El valor mínimo en la columna de edad es 22.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. El valor mínimo es 22.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

El valor mínimo en la columna de edad es 21.

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

El valor mínimo en la columna de edad es 21.

Función de ventana Pyspark Max ()

El max () en la función de la ventana se usa para devolver el valor máximo en cada partición. Puede ser posible devolver un valor máximo después de particionar el marco de datos.

Sintaxis:

dataframe_obj.WithColumn ("máximo", max (col ("columna")).sobre (partición))

Parámetro:

max (col ("columna"))

Aquí, la función max () toma el nombre de la columna como parámetro. Devuelve el máximo de valores en esta columna en cada partición.

Agregamos el resultado a una columna llamada máxima usando la función withColumn ().

Ejemplo 1:

Ahora, tenemos un cuadro de datos (creado anteriormente). Vamos a dividirlo en función de la columna Technology1 y obtener el valor máximo de la columna Sujeto_ID en cada partición.

# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el Max y el COL de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importar Max, Col
#Partition El marcado de datos basado en los valores en la columna Technology1
partición = ventana.Partitionby ("Technology1")
imprimir ("---------- DataFrame dividido ----------")
#Realizar el valor máximo en la columna temas_id para cada partición
dataframe_obj.WithColumn ("máximo", max (col ("temas_id")).sobre (partición)).espectáculo()

Producción:

Explicación:

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. El valor máximo en la columna Sujeto_id es 46.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el valor máximo es 12.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

El valor máximo en la columna Sujeto_id es 46.

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

El valor máximo en la columna Sujeto_id es 4.

Ejemplo 2:

Ahora, tenemos un cuadro de datos (creado anteriormente). Vamos a dividirlo en función de la columna Technology1 y obtener el valor máximo de la columna de edad en cada partición.

# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el Max y el COL de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importar Max, Col
#Partition El marcado de datos basado en los valores en la columna Technology1
partición = ventana.Partitionby ("Technology1")
imprimir ("---------- DataFrame dividido ----------")
#Realizar el valor máximo en la columna de edad para cada partición
dataframe_obj.WithColumn ("máximo", max (col ("edad")).sobre (partición)).espectáculo()

Producción:

Explicación:

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. El valor máximo en la columna de edad es 22.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el valor máximo es 22.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

El valor máximo en la columna de edad es 23.

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

El valor máximo en la columna de edad es 23.

Conclusión

En este tutorial de partición de Pyspark, aprendimos cómo devolver los valores mínimos en cada ventana particionada utilizando la función min () y los valores máximos en cada ventana particionada usando la función max (). Agregamos el resultado al marco de datos existente como una nueva columna. Asegúrese de tener que importar el Min y el máximo del Pyspark.sql.módulo de funciones.