Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:初めてのデータクリーニングタスク | データ操作
Databricks基礎:初心者ガイド

チャレンジ:初めてのデータクリーニングタスク

メニューを表示するにはスワイプしてください

Note
定義

データパイプラインは通常、**Load(読み込み)、Clean(クリーン)、Transform(変換)、Save(保存)**というパターンに従います。このミニプロジェクトでは、これらのステップを特定のデータセットに適用し、生データからビジネスレポートに適したクリーンで集約されたサマリーへと進めます。

セクション4のまとめとして、これまで学んだ内容を実践しましょう。これらのステップは任意のデータセットに適用できますが、ここでは有名なDiamondsデータセットを使って解決方法を示します。このデータセットには、約54,000個のダイヤモンドの価格や属性(カット、カラー、クラリティなど)が含まれています。

動画に沿って同じデータセット(Kaggleで広く入手可能なdiamonds.csv)を使い、自分でタスクを実施することもできますし、任意のデータセットを選んで同じ原則を適用し、同様の目標を設定することも可能です。

目的を読んだ後、理想的にはビデオを一時停止するか、テキストの読書を中断してください。Databricksの知識にどれだけ自信があっても、自分自身でプロジェクトに挑戦してみてください。簡単な試みでも、解答を読むだけよりはるかに有益です。時間が足りない場合は、解答を読み進めて、後日自宅で練習として試してみてください。

目的

「Premium」カットのダイヤモンドについて、色ごとにグループ化した平均価格と平均カラット数を特定し、平均価格が4,000ドルを超える高価値の結果のみを新しいテーブルに保存すること。

ステップ1:データの読み込みと確認

まず、データを読み込み、スキーマを確認して、価格とカラットが数値として認識されていることを確認すること。

# Assuming the diamonds CSV was uploaded to a Volume
df = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my_volume/diamonds.csv")

df.printSchema()

ステップ2:フィルタリングと選択

すべてのカラムは必要なく、このタスクでは「Premium」ダイヤモンドのみが対象。

# Filter for Premium cut and select relevant columns
premium_df = df.filter(df.cut == "Premium").select("color", "price", "carat")

ステップ 3: 集計とグループ化

平均値の計算。正確な計算のために pyspark.sql.functions ライブラリを使用。

from pyspark.sql import functions as F

# Group by color and calculate averages
summary_df = premium_df.groupBy("color").agg(
    F.avg("price").alias("avg_price"),
    F.avg("carat").alias("avg_carat")
)
Note
ノート

.alias() は、クエリ結果のカラム名を一時的に変更する機能。実際のテーブルは変更されず、出力時のカラム表示名のみが変わる。

SQL の AS と同様 — SELECT price AS price_in_usd

カラム名が長い場合や分かりにくい場合、または計算列に分かりやすい名前を付けたい場合に便利。

ステップ4:最終フィルターとソート

平均価格が4,000を超える高価値カテゴリのみを保持します。また、平均価格が最も高いものが上位にくるように結果をソートします。

final_df = summary_df.filter(F.col("avg_price") > 4000).orderBy("avg_price", ascending=False)

display(final_df)

F.col() 関数にはまだ出会っていないかもしれません。

F.col() は、PySparkでカラム名を指定して参照する方法です。Fpyspark.sql.functions のエイリアスで、ノートブックの冒頭で次のようにインポートします:

from pyspark.sql import functions as F

df.select(F.col("price"))

多くの場合、カラム名を文字列で指定するのと同じですが、F.col() を使うことで、そのまま演算をチェーンできる利点があります:

F.col("price") * 1.1
F.col("cut").alias("diamond_cut")

F.col("price") は「priceカラムを、操作可能なオブジェクトとして取得する」という意味合いです。

ステップ5:結果の保存

最後に、このクリーンアップ済み「High-Value Premium Diamonds」レポートをカタログにコミットし、分析チームが利用できるようにします。

final_df.write.mode("overwrite").saveAsTable("main.default.high_value_premium_diamonds")

1. ステップ3で、なぜ集約内で .alias() メソッドを使用したのですか?

2. このプロジェクトを自身のデータセットに適用したい場合、最初にどの部分のコードを変更する必要がありますか?

question mark

ステップ3で、なぜ集約内で .alias() メソッドを使用したのですか?

正しい答えを選んでください

question mark

このプロジェクトを自身のデータセットに適用したい場合、最初にどの部分のコードを変更する必要がありますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  9

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  9
some-alt