Manipolazione dati con DataFrames

Introduzione a PySpark

Ben Schmidt

Data Engineer

Gestione dei dati mancanti

  • Usa .na.drop() per rimuovere righe con valori nulli
# Rimuovi righe con null
df_cleaned = df.na.drop()

# Filtra null df_cleaned = df.where(col("columnName").isNotNull())
  • Usa .na.fill({"column": value) per sostituire i null con un valore specifico
# Sostituisci null nella colonna age con 0
df_filled = df.na.fill({"age": 0})
Introduzione a PySpark

Operazioni sulle colonne

  • Usa .withColumn() per aggiungere una nuova colonna basata su calcoli o colonne esistenti
# Crea una nuova colonna 'age_plus_5'
df = df.withColumn("age_plus_5", df["age"] + 5)
  • Usa withColumnRenamed() per rinominare colonne
# Rinomina la colonna 'age' in 'years'
df = df.withColumnRenamed("age", "years")
  • Usa drop() per rimuovere colonne inutili
# Rimuovi la colonna 'department'
df = df.drop("department")
Introduzione a PySpark

Operazioni sulle righe

  • Usa .filter() per selezionare righe in base a condizioni specifiche
# Filtra righe con salario maggiore di 50000
filtered_df = df.filter(df["salary"] > 50000)
  • Usa .groupBy() e funzioni di aggregazione (es. .sum(), .avg()) per riassumere i dati
# Raggruppa per dipartimento e calcola il salario medio
grouped_df = df.groupBy("department").avg("salary")
Introduzione a PySpark

Risultati delle operazioni sulle righe

  • Filtraggio

    +------+---+-----------------+
    |salary|age|      occupation |
    +------+---+-----------------+
    | 60000| 45|Exec-managerial  |
    | 70000| 35|Prof-specialty   |
    +------+---+-----------------+
    
  • GroupBy ` +----------+-----------+ |department|avg(salary)| +----------+-----------+ | HR| 80000.0| | IT| 70000.0| +----------+-----------+

`

Introduzione a PySpark

CheatSheet

# Rimuovi righe con null
df_cleaned = df.na.drop()

# Rimuovi null su una colonna df_cleaned = df.where(col("columnName").isNotNull())
# Sostituisci null nella colonna age con 0 df_filled = df.na.fill({"age": 0})
  • Usa .withColumn() per aggiungere una nuova colonna basata su calcoli o colonne esistenti. Sintassi: .withColumn("new_col_name", "original transformation")

    # Crea una nuova colonna 'age_plus_5'
    df = df.withColumn("age_plus_5", df["age"] + 5)
    
  • Usa withColumnRenamed() per rinominare colonne Sintassi: withColumnRenamed(old column name,new column name`

# Rinomina la colonna 'age' in 'years'
df = df.withColumnRenamed("age", "years")
  • Usa drop() per rimuovere colonne inutili Sintassi: .drop(column name)
# Rimuovi la colonna 'department'
df = df.drop("department")
# Filtra righe con salario maggiore di 50000
filtered_df = df.filter(df["salary"] > 50000)
  • Usa .groupBy() e funzioni di aggregazione (es. .sum(), .avg()) per riassumere i dati
# Raggruppa per dipartimento e calcola il salario medio
grouped_df = df.groupBy("department").avg("salary")
Introduzione a PySpark

Facciamo pratica!

Introduzione a PySpark

Preparing Video For Download...