Búsqueda de sitios web

Eliminar filas que contienen un valor específico en el marco de datos de pyspark


Cuando tratamos con conjuntos de datos complejos, necesitamos marcos que puedan procesar datos rápidamente y proporcionar resultados. Aquí es donde PySpark entra en escena. PySpark es una herramienta desarrollada por la comunidad Apache para procesar datos en tiempo real. Es una API que se utiliza para crear marcos de datos e interpretar resultados en nuestro entorno Python local.

El marco de datos puede contener una gran cantidad de información/datos y, para mantener la relevancia de los datos a interpretar, realizamos los cambios necesarios. En este artículo, manipularemos un marco de datos de PySpark y eliminaremos filas que contienen valores específicos. Esta operación de eliminación selectiva de los datos es muy sencilla y puede resultar de inmensa importancia.

Preparar un conjunto de datos para crear un marco de datos de PySpark

Antes de empezar a eliminar las filas, debemos preparar un conjunto de datos adecuado. Con la ayuda de este conjunto de datos, crearemos un marco de datos.

Ejemplo

Importamos una SparkSession de “pyspark.sql”. Esta sesión de chispa actúa como un punto de entrada a Apache Spark. Esta sesión gestiona la configuración del marco.

Creamos un objeto "SparkSession" llamado "sparlOBJ" con la ayuda del método constructor. Dar el nombre de la aplicación no es un paso obligatorio pero ayuda al programador a encontrar una sesión en particular.

Pasamos un conjunto de datos que consta de 6 secuencias numéricas. Pasamos una lista de etiquetas de columnas. Usamos la instancia "SparkSession" y el método "createDataFrame" para crear un marco de datos "PySpark".

El conjunto de datos y la lista de nombres de columnas se pasaron como argumentos para este método y finalmente imprimimos el marco de datos.

from pyspark.sql import SparkSession

sparkOBJ = SparkSession.builder.appName("SPARK_DSC").getOrCreate()

dataset = [("23", "25", "18", "19"), ("18", "25", "28", "40"),
           ("15", "18", "45", "11"), ("12", "8", "18", "28"),
           ("25", "42", "18", "29"), ("45", "50", "17", "11")]
columnsLis = ["Sequence 1", "Sequence 2", "Sequence 3", "Sequence 4"]

dataframe_SPK = sparkOBJ.createDataFrame(dataset, columnsLis)
print("the original data frame is: -")
dataframe_SPK.show()

Producción

the original data frame is: -
+----------+----------+----------+----------+
|Sequence 1|Sequence 2|Sequence 3|Sequence 4|
+----------+----------+----------+----------+
|        23|        25|        18|        19|
|        18|        25|        28|        40|
|        15|        18|        45|        11|
|        12|         8|        18|        28|
|        25|        42|        18|        29|
|        45|        50|        17|        11|
+----------+----------+----------+----------+

Ahora que hemos preparado con éxito un marco de datos, eliminemos ciertas filas que contienen un valor específico. Comenzaremos apuntando a una sola columna.

Uso de la función Filter() para eliminar filas con valores

Esta función filtra los datos según la condición pasada. La condición impulsa la lógica de la función y especifica “qué filtrar” y “qué no”. Usaremos esta función para apuntar a un valor específico debajo de una columna.

Ejemplo

En el siguiente ejemplo, hemos utilizado la función filter() para filtrar las filas que contienen el valor "18". Solo apuntará a los valores de la columna "Secuencia 1".

El nuevo marco de datos consta únicamente de aquellas filas donde "Secuencia 1" no es igual a "18". Toda la fila que contiene este valor se ha eliminado del marco de datos.

from pyspark.sql import SparkSession
sparkOBJ = SparkSession.builder.appName("SPARK_DSC").getOrCreate()
dataset = [("23", "25", "18", "19"), ("18", "25", "28", "40"),
           ("15", "18", "45", "11"), ("12", "8", "18", "28"),
           ("25", "42", "18", "29"), ("45", "50", "17", "11")]
columnsLis = ["Sequence 1", "Sequence 2", "Sequence 3", "Sequence 4"]

dataframe_SPK = sparkOBJ.createDataFrame(dataset, columnsLis)
print("the original data frame is: -")
dataframe_SPK.show()
dataframe_SPK.filter(dataframe_SPK["Sequence 1"] != "18").show()

Producción

the original data frame is: -
+----------+----------+----------+----------+
|Sequence 1|Sequence 2|Sequence 3|Sequence 4|
+----------+----------+----------+----------+
|        23|        25|        18|        19|
|        18|        25|        28|        40|
|        15|        18|        45|        11|
|        12|         8|        18|        28|
|        25|        42|        18|        29|
|        45|        50|        17|        11|
+----------+----------+----------+----------+

+----------+----------+----------+----------+
|Sequence 1|Sequence 2|Sequence 3|Sequence 4|
+----------+----------+----------+----------+
|        23|        25|        18|        19|
|        15|        18|        45|        11|
|        12|         8|        18|        28|
|        25|        42|        18|        29|
|        45|        50|        17|        11|
+----------+----------+----------+----------+

Uso de la función Where() para eliminar filas

Podemos realizar una operación similar con la ayuda de la función “where()”. Esta función también soluciona una condición particular. Generamos un nuevo marco de datos si la condición es “verdadera”. Veamos su implementación.

Ejemplo

dataframe_SPK.where(dataframe_SPK["Sequence 1"] != "18").show()

Producción

+----------+----------+----------+----------+
|Sequence 1|Sequence 2|Sequence 3|Sequence 4|
+----------+----------+----------+----------+
|        23|        25|        18|        19|
|        15|        18|        45|        11|
|        12|         8|        18|        28|
|        25|        42|        18|        29|
|        45|        50|        17|        11|
+----------+----------+----------+----------+

Aquí, la función "donde()" se comporta exactamente de la misma manera que la función "filtro()". Incluso la sintaxis también es la misma. Estos dos métodos pueden tejer fácilmente condiciones y eliminar filas en función de ellas. Estas funciones también se pueden aplicar en varias columnas y se pueden filtrar más datos.

Ejemplo

dataframe_SPK.filter((dataframe_SPK["Sequence 1"] != "18") & 
(dataframe_SPK["Sequence 2"] != "18")
                    & (dataframe_SPK["Sequence 3"] != "18") & 
(dataframe_SPK["Sequence 4"] != "18")).show()

Sin embargo, es importante analizar primero el marco de datos y luego seleccionar la información relevante.

Conclusión

Este artículo se centra en los fundamentos del marco de datos "PySpark". Discutimos los diferentes métodos para eliminar filas que contienen datos específicos. Usamos la función filter() y la función where() y establecimos condiciones para eliminar las filas. La eliminación de los datos del marco de datos es un paso crucial y debe realizarse con cuidado.