列の選択
SQL の SELECT に相当する Spark のメソッドは .select() です。このメソッドは複数の引数を取り、選択したい列ごとに 1 つずつ指定します。引数には、列名を文字列で渡す方法(列ごとに 1 つの文字列)と、df.colName 構文を使って列オブジェクトを渡す方法があります。列オブジェクトを渡すと、.withColumn() 内と同様に、その列に対して加算や減算などの演算を行い、含まれるデータを変更できます。
.select() と .withColumn() の違いは、.select() は指定した列だけを返すのに対して、.withColumn() は定義した列に加えて DataFrame のすべての列を返す点です。データの前処理では、不要な列を最初に落としておくと、その後の操作で余分なデータを抱えずに済むので効率的です。この場合は .withColumn() ではなく .select() を使います。
ワークスペースには、すでに spark という SparkSession と、Spark DataFrame の flights が用意されています。
この演習はコースの一部です
PySpark入門
演習の手順
- 列名を文字列で渡して、
flightsから"tailnum"、"origin"、"dest"列を選択し、selected1として保存してください。 df.colName構文を使って"origin"、"dest"、"carrier"列を選択し、用意されている 2 つのフィルタ(filterAとfilterB)を両方適用して、SEA 発 PDX 行きのフライトだけに絞り込み、selected2として保存してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Select the first set of columns
selected1 = flights.select("____", "____", "____")
# Select the second set of columns
temp = flights.select(____.____, ____.____, ____.____)
# Define first filter
filterA = flights.origin == "SEA"
# Define second filter
filterB = flights.dest == "PDX"
# Filter the data, first by filterA then by filterB
selected2 = temp.filter(____).filter(____)