Pyspark donde cláusula

Pyspark donde cláusula
En Python, Pyspark es un módulo Spark utilizado para proporcionar un tipo similar de procesamiento como Spark usando DataFrame. En Pyspark, donde () se usa para filtrar las filas en el marco de datos, devolverá el nuevo marco de datos filtrando las filas en el marco de datos existente.
  1. Método - 1: donde () con operadores relacionales
  2. Método - 2: donde () con operadores relacionales que usan la función col
  3. Método - 3: donde () con operadores relacionales en múltiples condiciones
  4. Método - 4: donde () con expresión SQL
  5. Método - 5: donde () con métodos de cadena

Creemos un Pyspark DataFrame:

Ejemplo:

Este ejemplo creará el marco de datos de Pyspark con 5 filas y 6 columnas y lo mostrará usando el método show ().

#Importa el módulo pyspaprk
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: donde () con operadores relacionales

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

Sintaxis:

Marco de datos.Donde (DataFrame.Valor del operador de column_name)

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, filtraremos el marco de datos en función de la edad, la altura, el peso y las columnas de nombre con diferentes operadores relacionales y mostraremos las filas filtradas utilizando el método Collect ().

#Importa el módulo pyspaprk
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.donde (df.edad == 23).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando la altura como 2.79
Imprimir (DF.donde (df.altura == 2.79).recolectar())
imprimir("---------------------------")
#Data DataFrame
#Be filtrar peso mayor de 30
Imprimir (DF.donde (df.Peso> 30).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando el nombre como Sravan
Imprimir (DF.donde (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: donde () con operadores relacionales que usan la función col

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

Sintaxis:

Marco de datos.donde (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, filtraremos el marco de datos en función de la edad, la altura, el peso y las columnas de nombre con diferentes operadores relacionales y mostraremos las filas filtradas utilizando el método Collect ().

#Importa el módulo pyspaprk
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.donde (col ('edad') == 23).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando la altura como 2.79
Imprimir (DF.donde (col ('altura') == 2.79).recolectar())
imprimir("---------------------------")
#Data DataFrame
#Be filtrar peso mayor de 30
Imprimir (DF.donde (col ('peso')> 30).recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando el nombre como Sravan
Imprimir (DF.donde (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: donde () con operadores relacionales en múltiples condiciones

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

Sintaxis:

Marco de datos.donde ((conditin1) operador (condición2) .. .)

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
  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 recolect ().

#Importa el módulo pyspaprk
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.donde ((df.Edad> 10) y (DF.edad <21)).collect())
imprimir("---------------------------")
#Data DataFrame
#por filtrado de edad superior a 10 o menos de 21
Imprimir (DF.donde ((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: donde () con expresión SQL

Aquí, usamos la función Where () 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.Dónde ("DataFrame.Valor del operador de column_name ”)

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, filtraremos el marco de datos en función de la edad, la altura, el peso y las columnas de nombre con diferentes operadores relacionales y mostraremos las filas filtradas utilizando el método Collect ().

#Importa el módulo pyspaprk
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.donde ("edad == 23").recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando la altura como 2.79
#Uso de la expresión SQL
Imprimir (DF.donde ("altura == 2.79 ").recolectar())
imprimir("---------------------------")
#Data DataFrame
#Be filtrar peso mayor de 30
#Uso de la expresión SQL
Imprimir (DF.donde ("peso> 30").recolectar())
imprimir("---------------------------")
#Data DataFrame
#By Filtrando el nombre como Sravan
#Uso de la expresión SQL
Imprimir (DF.donde ("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 - 5: donde () con métodos de cadena

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

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

Sintaxis:

Marco de datos.Donde (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.Donde (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.Donde (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 pyspaprk
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.donde (df.DIRECCIÓN.Inicio con ("H")).recolectar())
imprimir("-----------------")
#Data DataFrame
#by Filtrado de la dirección
#endes con 'r'
Imprimir (DF.donde (df.DIRECCIÓN.Endswith ("r"))).recolectar())
imprimir("-----------------")
#Data DataFrame
#by Filtrado de la dirección
#comntains 'tu'
Imprimir (DF.donde (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

Este artículo analiza cómo usar un filtro donde () con varios métodos en el marco de datos de Pyspark en Python. E incluimos todas las condiciones con expresiones SQL también.