DataFrame の列操作

PySpark でデータをクレンジングする

Mike Metzger

Data Engineering Consultant

DataFrame のおさらい

DataFrame:

  • 行と列で構成
  • 不変
  • 変換操作でデータを加工
# name が "M" で始まる行を返す 
voter_df.filter(voter_df.name.like('M%'))

# name と position だけ取得 voters = voter_df.select('name', 'position')
PySpark でデータをクレンジングする

一般的な DataFrame 変換

  • Filter / Where
    voter_df.filter(voter_df.date > '1/1/2019') # または 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')
    
PySpark でデータをクレンジングする

データのフィルタリング

  • null を除去
  • 不正な値を除去
  • 結合ソースから分割
  • ~ で否定
    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())
    
PySpark でデータをクレンジングする

文字列列の変換

  • pyspark.sql.functions に含まれる
    import pyspark.sql.functions as F
    
  • 列ごとの変換で適用
    voter_df.withColumn('upper', F.upper('name'))
    
  • 中間列を作成可
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • 型変換が可能
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
PySpark でデータをクレンジングする

ArrayType() 列の関数

ArrayType() とやり取りするためのユーティリティ関数/変換

.size(<column>) - ArrayType() 列の長さを返す

.getItem(<index>) - リスト列の指定インデックスの要素を取得

PySpark でデータをクレンジングする

練習しましょう!

PySpark でデータをクレンジングする

Preparing Video For Download...