Aan de slagGa gratis aan de slag

Kolommen maken

In dit hoofdstuk leer je hoe je de methoden van Sparks DataFrame-klasse gebruikt om veelvoorkomende bewerkingen op gegevens uit te voeren.

Laten we kolomgewijze bewerkingen bekijken. In Spark kun je dit doen met de methode .withColumn(), die twee argumenten verwacht. Eerst een string met de naam van je nieuwe kolom, en daarna de nieuwe kolom zelf.

De nieuwe kolom moet een object van de klasse Column zijn. Zo’n object maken is net zo eenvoudig als een kolom uit je DataFrame halen met df.colName.

Een Spark DataFrame bijwerken werkt anders dan in pandas, omdat een Spark DataFrame immutable is. Dat betekent dat het niet kan worden aangepast, en dat kolommen dus niet ter plekke kunnen worden overschreven.

Daarom geven al deze methoden een nieuw DataFrame terug. Als je het originele DataFrame wilt overschrijven, moet je het geretourneerde DataFrame opnieuw toekennen met de methode, zoals hieronder:

df = df.withColumn("newCol", df.oldCol + 1)

De bovenstaande code maakt een DataFrame met dezelfde kolommen als df plus een nieuwe kolom, newCol, waarbij elke waarde gelijk is aan de overeenkomstige waarde uit oldCol, plus één.

Om een bestaande kolom te overschrijven, geef je gewoon de naam van die kolom door als het eerste argument!

Onthoud: er staat al een SparkSession met de naam spark voor je klaar in je werkruimte.

Deze oefening maakt deel uit van de cursus

Basis van PySpark

Cursus bekijken

Oefeninstructies

  • Gebruik de methode spark.table() met het argument "flights" om een DataFrame te maken met de waarden uit de tabel flights in de .catalog. Sla dit op als flights.
  • Toon het begin van flights met flights.show(). Controleer de output: de kolom air_time bevat de duur van de vlucht in minuten.
  • Werk flights bij met een nieuwe kolom duration_hrs, die de duur van elke vlucht in uren bevat (je moet air_time delen door het aantal minuten in een uur).

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Create the DataFrame flights
flights = spark.table(____)

# Show the head
____.____()

# Add duration_hrs
flights = flights.withColumn(____)
Code bewerken en uitvoeren