Introductie tot PySpark DataFrames

Introductie tot PySpark

Benjamin Schmidt

Data Engineer

Over DataFrames

  • DataFrames: Tabelvorm (rijen/kolommen)
  • Ondersteunt SQL-achtige operaties
  • Vergelijkbaar met een Pandas DataFrame of een SQL TABEL
  • Gestructureerde data

Dataframes

Introductie tot PySpark

DataFrames maken van bestanden

# Maak een DataFrame van CSV
census_df = spark.read.csv('path/to/census.csv', header=True, inferSchema=True)
Introductie tot PySpark

DataFrame afdrukken

# Toon de eerste 5 rijen van de DataFrame
census_df.show()


   age  education.num marital.status         occupation income
0   90              9        Widowed                  ?  <=50K
1   82              9        Widowed    Exec-managerial  <=50K
2   66             10        Widowed                  ?  <=50K
3   54              4       Divorced  Machine-op-inspct  <=50K
4   41             10      Separated     Prof-specialty  <=50K
Introductie tot PySpark

DataFrame-schema afdrukken

# Toon het schema
census_df.printSchema()

Output: root |-- age: integer (nullable = true) |-- education.num: integer (nullable = true) |-- marital.status: string (nullable = true) |-- occupation: string (nullable = true) |-- income: string (nullable = true)
Introductie tot PySpark

Basisanalyses op PySpark DataFrames

# .count() geeft het totale aantal rijen in de DataFrame
row_count = census_df.count()
print(f'Aantal rijen: {row_count}')
# groupby() maakt sql-achtige aggregaties mogelijk
census_df.groupBy('gender').agg({'salary_usd': 'avg'}).show()

Andere aggregatiefuncties zijn:

  • sum()
  • min()
  • max()
Introductie tot PySpark

Belangrijke functies voor PySpark-analyse

  • .select(): Selecteert specifieke kolommen uit de DataFrame
  • .filter(): Filtert rijen op basis van voorwaarden
  • .groupBy(): Groepeert rijen op basis van kolommen
  • .agg(): Past aggregatiefuncties toe op gegroepeerde data
Introductie tot PySpark

Belangrijke functies Voorbeeld

# Met filter en select kunnen we onze DataFrame verfijnen
filtered_census_df = census_df.filter(df['age'] > 50).select('age', 'occupation')
filtered_census_df.show()

Output +---+------------------+ |age| occupation | +---+------------------+ | 90| ?| | 82| Exec-managerial| | 66| ?| | 54| Machine-op-inspct| +---+------------------+
Introductie tot PySpark

Laten we oefenen!

Introductie tot PySpark

Preparing Video For Download...