Seleccionar columnas en el marco de datos de PySpark

En este artículo, aprenderemos cómo seleccionar columnas en el marco de datos de PySpark.

Función utilizada:

En PySpark podemos seleccionar columnas usando la función select() . La función select() nos permite seleccionar una o varias columnas en diferentes formatos. 

Sintaxis: dataframe_name.select( column_names )

Nota: estamos especificando nuestra ruta al directorio de chispa usando la función findspark.init() para permitir que nuestro programa encuentre la ubicación de apache spark en nuestra máquina local. Ignore esta línea si está ejecutando el programa en la nube. Supongamos que tenemos nuestra carpeta chispa en la unidad c con el nombre de chispa, por lo que la función se vería así: findspark.init(‘c:/spark’) . No especificar la ruta a veces puede provocar el error py4j.protocol.Py4JError al ejecutar el programa localmente.

Ejemplo 1: seleccione columnas únicas o múltiples

Podemos seleccionar columnas únicas o múltiples usando la función select() especificando el nombre de la columna en particular. Aquí estamos utilizando nuestro conjunto de datos personalizado, por lo que debemos especificar nuestro esquema junto con él para crear el conjunto de datos. 

Python3

# select single and multiple columns
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, FloatType
from pyspark.sql import SparkSession
import findspark
  
  
findspark.init('c:/spark')
  
# Initialize our data
data2 = [("Pulkit", 12, "CS32", 82, "Programming"),
         ("Ritika", 20, "CS32", 94, "Writing"),
         ("Atirikt", 4, "BB21", 78, None),
         ("Reshav", 18, None, 56, None)
         ]
  
# Start spark session
spark = SparkSession.builder.appName("Student_Info").getOrCreate()
  
# Define schema
schema = StructType([
    StructField("Name", StringType(), True),
    StructField("Roll Number", IntegerType(), True),
    StructField("Class ID", StringType(), True),
    StructField("Marks", IntegerType(), True),
    StructField("Extracurricular", StringType(), True)
])
  
# read the dataframe
df = spark.createDataFrame(data=data2, schema=schema)
  
# slelct columns
df.select("Name", "Marks").show()
  
# stop the session
spark.stop()

Producción:

Nota: Hay muchas formas de especificar los nombres de las columnas para la función select(). Aquí usamos «column_name» para especificar la columna. Otras formas incluyen (Todos los ejemplos como se muestra con referencia al código anterior):

  • df.select(df.Nombre,df.Marcas)
  • df.select(df[“Nombre”],df[“Marcas”])
  • Podemos usar la función col() del módulo pyspark.sql.functions para especificar las columnas particulares

Python3

from pyspark.sql.functions import col
  
df.select(col("Name"),col("Marks")).show()

Nota: Todos los métodos anteriores producirán el mismo resultado que el anterior

Ejemplo 2: Seleccionar columnas usando la indexación

La indexación proporciona una manera fácil de acceder a las columnas dentro de un marco de datos. La indexación comienza desde 0 y tiene números n-1 totales que representan cada columna con 0 como primera y n-1 como última columna n. Podemos usar df.columns para acceder a todas las columnas y usar la indexación para pasar las columnas requeridas dentro de una función de selección. Así es como se verá el código. Estamos utilizando nuestro conjunto de datos personalizado, por lo que debemos especificar nuestro esquema junto con él para crear el conjunto de datos. 

Python3

# select spark
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, FloatType
from pyspark.sql import SparkSession
import findspark
  
  
findspark.init('c:/spark')
  
# Initialize our data
data2 = [("Pulkit", 12, "CS32", 82, "Programming"),
         ("Ritika", 20, "CS32", 94, "Writing"),
         ("Atirikt", 4, "BB21", 78, None),
         ("Reshav", 18, None, 56, None)
         ]
  
# Start spark session
spark = SparkSession.builder.appName("Student_Info").getOrCreate()
  
# Define schema
schema = StructType([
    StructField("Name", StringType(), True),
    StructField("Roll Number", IntegerType(), True),
    StructField("Class ID", StringType(), True),
    StructField("Marks", IntegerType(), True),
    StructField("Extracurricular", StringType(), True)
])
  
# read the dataframe
df = spark.createDataFrame(data=data2, schema=schema)
  
# select the columns
df.select(df.columns[:4]).show()
  
# stop session
spark.stop()

Producción:

Ejemplo 3: acceder a columnas anidadas de un marco de datos

Al crear un marco de datos, puede haber una tabla en la que tengamos columnas anidadas como, en un nombre de columna «Marcas», podemos tener subcolumnas de marcas internas o externas, o podemos tener columnas separadas para el primer medio y los apellidos en una columna debajo del nombre. Para acceder a las columnas anidadas dentro de un marco de datos usando la función select(), podemos especificar la subcolumna con la columna asociada. Aquí estamos utilizando nuestro conjunto de datos personalizado, por lo que debemos especificar nuestro esquema junto con él para crear el conjunto de datos. 

Python3

# findspark
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, FloatType
from pyspark.sql import SparkSession
import findspark
  
  
findspark.init('c:/spark')
  
# initialize the data
data = [
    (("Pulkit", "Dhingra"), 12, "CS32", 82, "Programming"),
    (("Ritika", "Pandey"), 20, "CS32", 94, "Writing"),
    (("Atirikt", "Sans"), 4, "BB21", 78, None),
    (("Reshav", None), 18, None, 56, None)
]
  
# start spark session
spark = SparkSession.builder.appName("Student_Info").getOrCreate()
  
# initialize the schema of the data
schema = StructType([
    StructField('name', StructType([
        StructField('firstname', StringType(), True),
        StructField('lastname', StringType(), True)
    ])),
    StructField("Roll Number", IntegerType(), True),
    StructField("Class ID", StringType(), True),
    StructField("Marks", IntegerType(), True),
    StructField("Extracurricular", StringType(), True)
])
# create a dataframe
df2 = spark.createDataFrame(data=data, schema=schema)
  
# display the schema
df2.printSchema()
  
# select operation
df2.select("name.firstname", "name.lastname").show(truncate=False)
  
# stop session
spark.stop()

Producción:

Aquí podemos ver que tenemos un conjunto de datos del siguiente esquema

Tenemos un nombre de columna con subcolumnas como nombre y apellido. Ahora, cuando realizamos la operación de selección, tenemos una salida como

Publicación traducida automáticamente

Artículo escrito por pulkit12dhingra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *