PySparkは、Apache SparkをPythonで利用できるようにしたライブラリで、大規模データの処理や解析に非常に強力です。この記事では、PySparkのデータフレーム操作の基本について解説していきます。
目次
1. データフレームの作成
まず、PySparkのデータフレームを作成する方法を紹介します。以下の例では、リストからデータフレームを作成します。
from pyspark.sql import SparkSession
# Sparkセッションの作成
spark = SparkSession.builder.appName("DataFrameExample").getOrCreate()
# データの準備
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
# スキーマの定義
columns = ["Name", "Age"]
# データフレームの作成
df = spark.createDataFrame(data, schema=columns)
# データフレームの表示
df.show()
+-----+---+
| Name|Age|
+-----+---+
|Alice| 34|
| Bob| 45|
|Cathy| 29|
+-----+---+
2. カラムの選択(select)
# 特定のカラムを選択
df.select("Name").show()
# 複数のカラムを選択
df.select("Name", "Age").show()
+-----+
| Name|
+-----+
|Alice|
| Bob|
|Cathy|
+-----+
+-----+---+
| Name|Age|
+-----+---+
|Alice| 34|
| Bob| 45|
|Cathy| 29|
+-----+---+
3. データ(レコード)の抽出(where)
データフレームから条件に合う行だけを抽出するフィルタリングの方法です。
# Ageが30以上の行をフィルタリング
df.filter(df.Age >= 30).show()
+-----+---+
| Name|Age|
+-----+---+
|Alice| 34|
| Bob| 45|
+-----+---+
4. 新しいカラムの追加(alter table add column)
既存のデータフレームに新しいカラムを追加する方法です。
from pyspark.sql.functions import col
# 年齢を2倍にした新しいカラムを追加
df = df.withColumn("DoubleAge", col("Age") * 2)
df.show()
+-----+---+---------+
| Name|Age|DoubleAge|
+-----+---+---------+
|Alice| 34| 68|
| Bob| 45| 90|
|Cathy| 29| 58|
+-----+---+---------+
Pysparkデータフレームの操作(グループ化と集計関数編)
データ分析において、データをグループ化し、特定のカラムに対して集計を行うことは非常に重要です。PySparkでは、groupByメソッドを使用してデータをグループ化し、様…
5. カラムの名前変更(alter table alter column)
# カラム名を変更
df = df.withColumnRenamed("DoubleAge", "AgeDoubled")
df.show()
+-----+---+----------+
| Name|Age|AgeDoubled|
+-----+---+----------+
|Alice| 34| 68|
| Bob| 45| 90|
|Cathy| 29| 58|
+-----+---+----------+
6. グループ化と集計(group by)
データをグループ化し、集計する方法を紹介します。まずは、新しくサンプルデータを準備します。
# サンプルデータ
data = [("Alice", "Math", 85), ("Alice", "Science", 92),
("Bob", "Math", 78), ("Bob", "Science", 83),
("Cathy", "Math", 95), ("Cathy", "Science", 89)]
columns = ["Name", "Subject", "Score"]
# データフレームの作成
df = spark.createDataFrame(data, schema=columns)
# データフレームの表示
df.show()
+-----+-------+-----+
| Name|Subject|Score|
+-----+-------+-----+
|Alice| Math| 85|
|Alice|Science| 92|
| Bob| Math| 78|
| Bob|Science| 83|
|Cathy| Math| 95|
|Cathy|Science| 89|
+-----+-------+-----+
名前ごとにスコアの平均を計算します。
# 名前ごとにグループ化し、スコアの平均を計算
df.groupBy("Name").avg("Score").show()
+-----+----------+
| Name|avg(Score)|
+-----+----------+
|Alice| 88.5|
| Bob| 80.5|
|Cathy| 92.0|
+-----+----------+
Pysparkデータフレームの操作(グループ化と集計関数編)
データ分析において、データをグループ化し、特定のカラムに対して集計を行うことは非常に重要です。PySparkでは、groupByメソッドを使用してデータをグループ化し、様…
まとめ
PySparkのデータフレーム操作の基本を紹介しました。これらの基本操作を習得することで、大規模データの処理や分析がより効率的に行えるようになります。次回はさらに高度な操作や実践的な例についても紹介していきます。
PySparkデータフレーム操作の基本(UnionとJoin編)
PySparkでは、大規模データの処理や解析を効率的に行うために、データフレームの結合操作が非常に重要です。この記事では、データフレームを結合するための2つの基本的…
プログラミング初心者がPySparkを学ぶときの落とし穴
PySparkは、Apache SparkのPython APIであり、大規模データの処理と分析に非常に便利なツールです。しかし、プログラミング初心者にとっては、PySparkを学ぶ際にいくつ…