Kolumnoperationer i DataFrame

Datarensning med PySpark

Mike Metzger

Data Engineering Consultant

Repetition: DataFrame

DataFrames:

  • Består av rader och kolumner
  • Oföränderliga
  • Använd transformationsoperationer för att ändra data
# Return rows where name starts with "M" 
voter_df.filter(voter_df.name.like('M%'))

# Return name and position only voters = voter_df.select('name', 'position')
Datarensning med PySpark

Vanliga DataFrame-transformationer

  • Filter / Where
    voter_df.filter(voter_df.date > '1/1/2019') # or voter_df.where(...)
    
  • Select
    voter_df.select(voter_df.name)
    
  • withColumn
    voter_df.withColumn('year', voter_df.date.year)
    
  • drop
    voter_df.drop('unused_column')
    
Datarensning med PySpark

Filtrera data

  • Ta bort null-värden
  • Ta bort felaktiga poster
  • Dela upp data från kombinerade källor
  • Negera med ~
    voter_df.filter(voter_df['name'].isNotNull())
    voter_df.filter(voter_df.date.year > 1800)
    voter_df.where(voter_df['_c0'].contains('VOTE'))
    voter_df.where(~ voter_df._c1.isNull())
    
Datarensning med PySpark

Strängtransformationer för kolumner

  • Finns i pyspark.sql.functions
    import pyspark.sql.functions as F
    
  • Tillämpas per kolumn som en transformation
    voter_df.withColumn('upper', F.upper('name'))
    
  • Kan skapa mellanliggande kolumner
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • Kan konvertera till andra typer
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
Datarensning med PySpark

Funktioner för ArrayType()-kolumner

Olika hjälpfunktioner och transformationer för att arbeta med ArrayType()

.size(<column>) – returnerar längden på en kolumn av typen arrayType()

.getItem(<index>) – hämtar ett specifikt element vid angivet index i en listkolumn.

Datarensning med PySpark

Nu kör vi en övning!

Datarensning med PySpark

Preparing Video For Download...