0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SparkデータフレームにおけるSelectとExpr

Posted at

Select Expr in Spark Dataframe | Analyticshutの翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

SelectとExprは、Sparkデータフレームで最も使用される関数の一つです。本ブログでは、selectとexpr関数を用いて行えるさまざまなことを学びます。

データフレームからカラムを選択する

これはデータフレームに対して最も使用される機能の一つであり、これを行うためにはexprとSelectを使用します。expr関数を使う前に、インポートする必要があります。

Python
df_csv = spark.read.format("csv") \
        .option("inferSchema", "true") \
        .option("header","true") \
        .load("data/flights.csv")
# selecting columns
from pyspark.sql.functions import expr
df_csv.select(expr("count")).show(2)

カラムデータに対するオペレーション

より面白いexprのユースケースは、カラムデータに対してさまざまなオペレーションを実行するというものです。これによって、カラムの長さを取得したり、データを抽出したり、その他SQLでできるすべてのことが可能となります。

Python
df_csv.select(expr("count"), expr("count > 10")).show(2)
+-----+------------+
|count|(count > 10)|
+-----+------------+
|   15|        true|
|    1|       false|
+-----+------------+

上のコードでは、カラムのフィールドが10より大きいか否かを表示しています。このカラム名はユーザーフレンドリーではないことが分かるかと思います。SQLと同じように、使いやすいカラム名を指定します。

Python
df_csv.select(expr("count"), expr("count > 10 as if_greater_than_10")).show(2)

Exprによるエイリアスの使用

カラムにユーザーフレンドリーな名前を指定するためにAlias関数を使用します。

Python
df_csv.select(expr("count"), expr("count > 10").alias("if_greater_than_10")).show(2)

Exprを用いた全カラムの選択

データフレームからの他のカラムと、新たに作成した表現式のカラムを選択する必要があるかもしれません。これは非常に簡単です。カンマ区切りのカラムのリストや、データフレームの全てのカラムをリストするために*を使用することができます。

Python
df_csv.select("*", expr("count > 10").alias("if_greater_than_10")).show(2)


Exprを用いてデータフレームの全ての列を選択

ExprとAliasによるカラムの名称変更

データフレームのカラムの名前を変更するためにExprを使用することができます。これは実際にはカラムの名称を変更するのではなく、新たなカラムを作成します。

Python
df_csv.select("*", expr("DEST_COUNTRY_NAME").alias("dest")).show(2)
+-----------------+-------------------+-----+-------------+
|DEST_COUNTRY_NAME|ORIGIN_COUNTRY_NAME|count|         dest|
+-----------------+-------------------+-----+-------------+
|    United States|            Romania|   15|United States|
|    United States|            Croatia|    1|United States|
+-----------------+-------------------+-----+-------------+

SelectExpr - selectとexprのショートカット

SelectとExprは、Sparkデータフレームを操作する際に広く使用されており、Sparkチームは簡単にそれらを利用できるようにしています。selectExpr関数を使うことができます。

Python
df_csv.selectExpr("count", "count > 10 as if_greater_than_10").show(2)
df_csv.selectExpr("*", "DEST_COUNTRY_NAME as dest").show(2)

これが有用であれば幸いです。次に記事でお会いしましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?