Introducción a PySpark
Ben Schmidt
Data Engineer
.na.drop() para eliminar filas con valores nulos# Eliminar filas con nulos df_cleaned = df.na.drop()# Filtrar nulos df_cleaned = df.where(col("columnName").isNotNull())
.na.fill({"column": value) para reemplazar nulos con un valor específico# Rellenar nulos en la columna edad con 0
df_filled = df.na.fill({"age": 0})
.withColumn() para añadir una nueva columna basada en cálculos o columnas existentes# Crear una nueva columna 'age_plus_5'
df = df.withColumn("age_plus_5", df["age"] + 5)
withColumnRenamed() para renombrar columnas# Renombrar la columna 'age' a 'years'
df = df.withColumnRenamed("age", "years")
drop() para eliminar columnas innecesarias# Eliminar la columna 'department'
df = df.drop("department")
.filter() para seleccionar filas basadas en condiciones específicas# Filtrar filas donde el salario es mayor a 50000
filtered_df = df.filter(df["salary"] > 50000)
.groupBy() y funciones de agregación (e.g., .sum(), .avg()) para resumir datos# Agrupar por departamento y calcular el salario promedio
grouped_df = df.groupBy("department").avg("salary")
Filtrado
+------+---+-----------------+
|salary|age| occupation |
+------+---+-----------------+
| 60000| 45|Exec-managerial |
| 70000| 35|Prof-specialty |
+------+---+-----------------+
Agrupación
`
+----------+-----------+
|department|avg(salary)|
+----------+-----------+
| HR| 80000.0|
| IT| 70000.0|
+----------+-----------+
`
# Eliminar filas con nulos df_cleaned = df.na.drop()#Eliminar nulos en una columna df_cleaned = df.where(col("columnName").isNotNull())# Rellenar nulos en la columna edad con 0 df_filled = df.na.fill({"age": 0})
Usa .withColumn() para añadir una nueva columna basada en cálculos o columnas existentes. Sintaxis: .withColumn("new_col_name", "original transformation")
# Crear una nueva columna 'age_plus_5'
df = df.withColumn("age_plus_5", df["age"] + 5)
Usa withColumnRenamed() para renombrar columnas
Sintaxis: withColumnRenamed(old column name,new column name`
# Renombrar la columna 'age' a 'years'
df = df.withColumnRenamed("age", "years")
drop() para eliminar columnas innecesarias
Sintaxis: .drop(column name)# Eliminar la columna 'department'
df = df.drop("department")
# Filtrar filas donde el salario es mayor a 50000
filtered_df = df.filter(df["salary"] > 50000)
.groupBy() y funciones de agregación (e.g., .sum(), .avg()) para resumir datos # Agrupar por departamento y calcular el salario promedio
grouped_df = df.groupBy("department").avg("salary")
Introducción a PySpark