PySpark dense_rank() Window Function

La función de ventana dense_rank() en PySpark se utiliza para asignar un rango a cada fila dentro de una partición. Es similar a las funciones de rango pero no deja espacios entre los rangos asignados. Cuando hay valores repetidos en la partición, se les asignará el mismo rango.
Uso
La sintaxis general de la función dense_rank() es la siguiente:
DENSE_RANK() OVER (PARTITION BY columna ORDER BY columna DESC/ASC) AS columna_rango_denso- PARTITION BY: se usa para dividir el conjunto de datos en particiones.
- ORDER BY: se utiliza para ordenar los datos dentro de la partición.
- AS: renombra la columna resultante.
Por lo general, se aplica en conjunto con otras funciones de ventana, como ROW_NUMBER() y RANK(), para crear diferentes agrupaciones y análisis.
Funcionamiento
Se podría utilizar dense_rank() para determinar el rango de los estudiantes según su calificación en un examen. Por ejemplo, la siguiente sentencia SQL podría ser utilizada para encontrar el rango denso de los estudiantes utilizando la función dense_rank() en PySpark:
DENSE_RANK() OVER (ORDER BY score DESC) dense_rankEsta consulta dividirá el conjunto de datos completo en particiones y luego los ordenará por calificación descendente. Finalmente, asignará un número de rango denso a cada estudiante basado en su calificación.
Ejemplos de Comandos
A continuación, se muestran algunos ejemplos de comandos PySpark dense_rank() Window Function.
Ejemplo 1
Supongamos que tenemos un conjunto de datos que representa los resultados de los exámenes de matemáticas de los estudiantes. Para encontrar el rango denso de cada estudiante dentro de cada grado, la siguiente sintaxis se podría utilizar en PySpark:
from pyspark.sql.window import Window
w = Window.partitionBy('grade').orderBy('score')
dense_rank = df.withColumn('dense_rank', dense_rank().over(w))
Donde df es el objeto DataFrame que contiene los resultados de los exámenes de matemáticas.
Ejemplo 2
Supongamos que queremos encontrar el segundo mejor estudiante en términos de calificación en cada grado. Para hacerlo, podemos utilizar las funciones de ventana dense_rank() y ROW_NUMBER() en conjunto como se muestra a continuación:
from pyspark.sql.window import Window
from pyspark.sql.functions import col
w = Window.partitionBy('grade').orderBy(col('score').desc())
result = df.select('*', dense_rank().over(w).alias('dense_rank')).filter(col('dense_rank') == 2)
Este comando creará una nueva columna llamada 'dense_rank', que asignará un rango denso a cada estudiante dentro de su grado y lo ordenará por calificación descendente. Luego, seleccionará la segunda fila de cada grupo.
Conclusión
La función de ventana dense_rank() es extremadamente útil para asignar rangos a conjuntos de datos. Permite que los usuarios analicen y comprendan los datos de una manera más eficiente. Las funciones de ventana como dense_rank(), junto con otras funciones de ventana, son fundamentales para el análisis avanzado de datos en PySpark.
Preguntas frecuentes
¿Qué es una función de ventana?
Una función de ventana en PySpark se utiliza para operar en un conjunto de datos definido por una ventana de filas de una tabla. Permite el cálculo de valores agregados y de rango basados en particiones específicas en un conjunto de datos.
¿Qué es la función de ventana dense_rank()?
La función de ventana dense_rank() se utiliza para asignar un rango a cada fila dentro de una partición. Cuando hay valores repetidos en la partición, se les asignará el mismo rango.
¿Qué otras funciones de ventana se pueden utilizar con dense_rank()?
Otras funciones de ventana que se pueden utilizar con dense_rank() incluyen ROW_NUMBER() y RANK(). Estas funciones de ventana permiten a los usuarios crear diferentes agrupamientos y análisis de sus datos.
¿Para qué se utiliza la partición en PySpark?
La partición se utiliza en PySpark para dividir un conjunto de datos en partes más pequeñas. Utilizar particiones puede mejorar significativamente el rendimiento y la eficiencia al trabajar con grandes conjuntos de datos, ya que permite que las tareas se ejecuten en paralelo en diferentes particiones.
[nekopost slugs="convertir-el-tipo-de-entero-2-de-la-columna-pyspark-dataframe-string-t,funciones-de-fecha-de-pyspark,la-matriz-de-pyspark-contiene,pyspark-como-ilike,pyspark-donde-clausula,pyspark-union-y-unionall,metodo-de-recoleccion-pyspark,iterar-las-columnas-de-las-filas-pyspark-dataframe,pyspark-pandas-dataframe-groupby"]

Deja una respuesta