Pyspark - Filtro

Pyspark - Filtro
En Python, Pyspark es un módulo Spark utilizado para proporcionar un tipo similar de procesamiento como Spark usando DataFrame. En Pyspark, filtrar() se usa para filtrar las filas en DataFrame. Devolverá el nuevo marco de datos filtrando las filas en el marco de datos existente. Demostraremos cuatro formas de usar el filtrar() función en este artículo:
  1. Método - 1: Filtro () con operadores relacionales
  2. Método - 2: Filter () con operadores relacionales que usan la función COL
  3. Método - 3: Filtro () con operadores relacionales en múltiples condiciones
  4. Método - 4: filtro () con expresión SQL

Primero creemos un marco de datos de Pyspark que podamos usar para los ejemplos.

Ejemplo:

En este ejemplo, vamos a crear el marco de datos de Pyspark con 5 filas y 6 columnas y mostrar usando el método show ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#Importa la función col
de Pyspark.sql.Funciones Importar Col
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = [
'Rollno': '001', 'Nombre': 'Sravan', 'Age': 23,
'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'Ojaswi', 'Age': 16,
'Altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7,
'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'Rollno': '004', 'Nombre': 'Rohith', 'Age': 9,
'Altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37,
'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
df.espectáculo()

Producción:

Método - 1: Filtro () con operadores relacionales

Aquí, estamos utilizando la función Filter () para filtrar el marco de datos de Pyspark con operadores relacionales como>, < . == etc.

Sintaxis:

marco de datos.Filtrar (DataFrame.Valor del operador de column_name)

Aquí, Filter () acepta tres parámetros.

  1. marco de datos.column_name es la columna donde se aplica el filtrado.
  2. El operador es el operador relacional.
  3. El valor es el valor de cadena/numérica en comparación con los valores de la columna.

Ejemplo:

En este ejemplo, vamos a filtrar el marco de datos en función de las columnas de edad, altura, peso y nombre con diferentes operadores relacionales y mostrar las filas filtradas utilizando el método Collect ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#Importa la función col
de Pyspark.sql.Funciones Importar Col
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = [
'Rollno': '001', 'Nombre': 'Sravan', 'Age': 23,
'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'Ojaswi', 'Age': 16,
'Altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7,
'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'Rollno': '004', 'Nombre': 'Rohith', 'Age': 9,
'Altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37,
'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
#By Filtrando la edad como 23
Imprimir (DF.Filtro (DF.edad == 23).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando la altura como 2.79
Imprimir (DF.Filtro (DF.altura == 2.79).recolectar())
imprimir("---------------------------")
#Data DataFrame
#Be filtrar peso mayor de 30
Imprimir (DF.Filtro (DF.Peso> 30).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando el nombre como Sravan
Imprimir (DF.Filtro (DF.nombre == 'sravan').recolectar())

Producción:

[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]
---------------------------
[Fila (dirección = 'patna', edad = 7, altura = 2.79, nombre = "Gnanesh Chowdary", rollNo = "003", peso = 17)]]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, name = "sravan", rollNo = "001", peso = 67), fila (dirección = 'hyd', edad = 16, altura = 3.79, name = "ojaswi", rollNo = "002", peso = 34), fila (dirección = 'hyd', edad = 37, altura = 5.59, nombre = "Sridevi", rollNo = "005", peso = 54)]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]

Método - 2: Filter () con operadores relacionales que usan la función COL

Aquí, estamos utilizando la función Filter () para filtrar el marco de datos de Pyspark con operadores relacionales como>, < . == etc. through col function.

Sintaxis:

marco de datos.Filtro (col ("column_name") Valor del operador)

Aquí, donde () acepta tres parámetros.

  1. marco de datos.column_name es la columna donde se aplica el filtrado.
  2. El operador es el operador relacional.
  3. El valor es el valor de cadena/numérica en comparación con los valores de la columna.

Ejemplo:

En este ejemplo, vamos a filtrar el marco de datos en función de las columnas de edad, altura, peso y nombre con diferentes operadores relacionales y mostrar las filas filtradas utilizando el método Collect ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#Importa la función col
de Pyspark.sql.Funciones Importar Col
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = [
'Rollno': '001', 'Nombre': 'Sravan', 'Age': 23,
'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'Ojaswi', 'Age': 16,
'Altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7,
'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'Rollno': '004', 'Nombre': 'Rohith', 'Age': 9,
'Altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37,
'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
#By Filtrando la edad como 23
Imprimir (DF.Filtro (col ('edad') == 23).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando la altura como 2.79
Imprimir (DF.Filtro (col ('altura') == 2.79).recolectar())
imprimir("---------------------------")
#Data DataFrame
#Be filtrar peso mayor de 30
Imprimir (DF.Filtro (col ('peso')> 30).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando el nombre como Sravan
Imprimir (DF.Filtro (col ('nombre') == 'sravan').recolectar())

Producción:

[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]
---------------------------
[Fila (dirección = 'patna', edad = 7, altura = 2.79, nombre = "Gnanesh Chowdary", rollNo = "003", peso = 17)]]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, name = "sravan", rollNo = "001", peso = 67), fila (dirección = 'hyd', edad = 16, altura = 3.79, name = "ojaswi", rollNo = "002", peso = 34), fila (dirección = 'hyd', edad = 37, altura = 5.59, nombre = "Sridevi", rollNo = "005", peso = 54)]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]

Método - 3: Filtro () con operadores relacionales en múltiples condiciones

Aquí, estamos utilizando la función Filter () para filtrar el marco de datos de Pyspark con operadores relacionales como>, < . == etc with multiple conditions.

Sintaxis:

marco de datos.Filtro ((Conditin1) Operador (condición2) .. .)

Aquí, Filter () acepta tres parámetros.

  1. marco de datos.column_name es la columna donde se aplica el filtrado.
  2. El operador es el operador relacional.
  3. El valor es el valor de cadena/numérica en comparación con los valores de la columna.
  4. La condición especifica - (DataFrame.Valor del operador de column_name).

Ejemplo:

En este ejemplo, vamos a filtrar el marcado de datos en función de la columna de edad con o (|) y (&) operador y mostrar las filas filtradas utilizando el método Collect ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#Importa la función col
de Pyspark.sql.Funciones Importar Col
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = [
'Rollno': '001', 'Nombre': 'Sravan', 'Age': 23,
'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'Ojaswi', 'Age': 16,
'Altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7,
'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'Rollno': '004', 'Nombre': 'Rohith', 'Age': 9,
'Altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37,
'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
#por filtrado de edad mayor de 10 y menos de 21
Imprimir (DF.Filtro ((DF.Edad> 10) y (DF.edad <21)).collect())
imprimir("---------------------------")
#Data DataFrame
#por filtrado de edad superior a 10 o menos de 21
Imprimir (DF.Filtro ((DF.Edad> 10) | (DF.edad <21)).collect())

Producción:

[Fila (dirección = 'hyd', edad = 16, altura = 3.79, nombre = "ojaswi", rollno = "002", peso = 34)]]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, name = "sravan", rollNo = "001", peso = 67), fila (dirección = 'hyd', edad = 16, altura = 3.79, name = "ojaswi", rollNo = "002", peso = 34), fila (dirección = 'patna', edad = 7, altura = 2.79, name = "Gnanesh Chowdary", rollNo = "003", peso = 17), fila (dirección = 'hyd', edad = 9, altura = 3.69, name = "rohith", rollNo = "004", peso = 28), fila (dirección = 'hyd', edad = 37, altura = 5.59, nombre = "Sridevi", rollNo = "005", peso = 54)]

Método - 4: filtro () con expresión SQL

Aquí, estamos utilizando la función Filter () para filtrar el Pyspark DataFrame con la expresión de SQL. La condición está encerrada por "". Sin embargo, podemos especificar el operador relacional como condición.

Sintaxis:

marco de datos.Filtrar ("DataFrame.Valor del operador de column_name ”)

Aquí, Filter () acepta tres parámetros.

  1. marco de datos.column_name es la columna donde se aplica el filtrado.
  2. El operador es el operador relacional.
  3. El valor es el valor de cadena/numérica en comparación con los valores de la columna.

Ejemplo:

En este ejemplo, vamos a filtrar el marco de datos en función de las columnas de edad, altura, peso y nombre con diferentes operadores relacionales y mostrar las filas filtradas utilizando el método Collect ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#Importa la función col
de Pyspark.sql.Funciones Importar Col
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = [
'Rollno': '001', 'Nombre': 'Sravan', 'Age': 23,
'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'Ojaswi', 'Age': 16,
'Altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7,
'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'Rollno': '004', 'Nombre': 'Rohith', 'Age': 9,
'Altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37,
'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
#By Filtrando la edad como 23
#Uso de la expresión SQL
Imprimir (DF.Filtro ("edad == 23").recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando la altura como 2.79
#Uso de la expresión SQL
Imprimir (DF.Filtro ("Altura == 2.79 ").recolectar())
imprimir("---------------------------")
#Data DataFrame
#Be filtrar peso mayor de 30
#Uso de la expresión SQL
Imprimir (DF.Filtro ("peso> 30").recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando el nombre como Sravan
#Uso de la expresión SQL
Imprimir (DF.Filtro ("name == 'sravan'").recolectar())

Producción:

[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]
---------------------------
[Fila (dirección = 'patna', edad = 7, altura = 2.79, nombre = "Gnanesh Chowdary", rollNo = "003", peso = 17)]]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, name = "sravan", rollNo = "001", peso = 67), fila (dirección = 'hyd', edad = 16, altura = 3.79, name = "ojaswi", rollNo = "002", peso = 34), fila (dirección = 'hyd', edad = 37, altura = 5.59, nombre = "Sridevi", rollNo = "005", peso = 54)]
---------------------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]

Método - 4: filtro () con métodos de cadena

Aquí, estamos utilizando la función Filter () para filtrar el marco de datos de Pyspark con los métodos de cadena. Estos se aplican en las columnas cuyo tipo de datos es cadena. Ellos son:

comienza con() - Verifique el carácter inicial en los datos dados

Sintaxis:

marco de datos.Filtrar (DataFrame.column_name.Startswith ("personaje")

Aquí column_name es la columna donde se aplica el filtrado donde el valor comienza con el carácter dado.

termina con() - Verifique el carácter final en los datos dados.

Sintaxis:

marco de datos.Filtrar (DataFrame.column_name.Endswith ("personaje")

Aquí column_name es la columna donde se aplica el filtrado donde termina el valor con el carácter dado.

contiene() - Verifique que el personaje contiene en los datos dados.

Sintaxis:

marco de datos.Filtrar (DataFrame.column_name.contiene ("carácter")

Aquí column_name es la columna donde se aplica el filtrado donde el valor contiene con el carácter dado.

Ejemplo:

En este ejemplo, vamos a filtrar en función de la columna de dirección.

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#Importa la función col
de Pyspark.sql.Funciones Importar Col
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = [
'Rollno': '001', 'Nombre': 'Sravan', 'Age': 23,
'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'Ojaswi', 'Age': 16,
'Altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7,
'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'Rollno': '004', 'Nombre': 'Rohith', 'Age': 9,
'Altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37,
'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
#by Filtrado de la dirección
#Stars con 'H'
Imprimir (DF.Filtro (DF.DIRECCIÓN.Inicio con ("H")).recolectar())
imprimir("-----------------")
#Data DataFrame
#by Filtrado de la dirección
#endes con 'r'
Imprimir (DF.Filtro (DF.DIRECCIÓN.Endswith ("r"))).recolectar())
imprimir("-----------------")
#Data DataFrame
#by Filtrado de la dirección
#comntains 'tu'
Imprimir (DF.Filtro (DF.DIRECCIÓN.contiene ("r")).recolectar())

Producción:

[Fila (dirección = 'hyd', edad = 16, altura = 3.79, name = "ojaswi", rollNo = "002", peso = 34), fila (dirección = 'hyd', edad = 9, altura = 3.69, name = "rohith", rollNo = "004", peso = 28), fila (dirección = 'hyd', edad = 37, altura = 5.59, nombre = "Sridevi", rollNo = "005", peso = 54)]
-----------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]
-----------------
[Fila (dirección = 'Guntur', edad = 23, altura = 5.79, nombre = "Sravan", rollNo = "001", peso = 67)]]

Conclusión

En este artículo, discutimos cómo usar una función Filter () con varios métodos en el marco de datos de Pyspark en Python. E incluimos todas las condiciones con expresiones SQL también.