メインコンテンツまでスキップ

はじめに: データの拡張とクレンジング

この入門記事では、Databricks ノートブックを使用して、Python、Scala、R を使用して Unity Catalog のテーブルに以前に読み込まれたニューヨーク州の赤ちゃんの名前データをクレンジングおよび強化する手順について説明します。この記事では、生データ テーブルから列名を変更し、大文字と小文字を変更し、各赤ちゃんの名前の性別をスペルアウトします。その後、データフレーム をシルバー テーブルに保存します。 次に、2021 年のデータのみが含まれるようにデータをフィルター処理し、データを州レベルでグループ化してから、データをカウントで並べ替えます。 最後に、この データフレーム をゴールド テーブルに保存し、データを棒グラフで視覚化します。 シルバー テーブルとゴールド テーブルの詳細については、「 メダリオンアーキテクチャ」を参照してください。

important

この概要記事は、「 概要: 追加データの取り込みと挿入」に基づいています。 この記事を完了するには、その記事の手順を完了する必要があります。 その概要記事の完全なノートブックについては、「 追加のデータ ノートブックの取り込み」を参照してください。

必要条件

この記事のタスクを完了するには、次の要件を満たす必要があります。

  • ワークスペースで Unity Catalog が有効になっている必要があります。 Unity Catalogの使用を開始する方法については、「Unity Catalogの設定と管理」を参照してください。
  • ボリュームに対する WRITE VOLUME 権限、親スキーマに対する USE SCHEMA 権限、および親カタログに対する USE CATALOG 権限が必要です。
  • 既存のコンピュート リソースを使用するか、新しいコンピュート リソースを作成するには、アクセス許可が必要です。 「Databricks の使用を開始する」または「Databricks 管理者に問い合わせてください」を参照してください。
ヒント

この記事の完成したノートブックについては、「 データ ノートブックのクレンジングと強化」を参照してください。

ステップ 1: 新しいノートブックを作成する

ワークスペースにノートブックを作成するには、サイドバーの「新しいアイコン 新規 」をクリックし、「 ノートブック 」をクリックします。空白のノートブックがワークスペースで開きます。

ノートブックの作成と管理の詳細については、「 ノートブックの管理」を参照してください。

ステップ 2: 変数を定義する

この手順では、この記事で作成するサンプル ノートブックで使用する変数を定義します。

  1. 次のコードをコピーして、新しい空のノートブック セルに貼り付けます。 <catalog-name><schema-name>、および <volume-name> を、Unity Catalog ボリュームのカタログ、スキーマ、およびボリューム名に置き換えます。必要に応じて、 table_name 値を任意のテーブル名に置き換えます。 赤ちゃんの名前のデータは、この記事の後半でこのテーブルに保存します。

  2. Shift+Enterを押すとセルが実行され、新しい空白のセルが作成されます。

Python
catalog = "<catalog_name>"
schema = "<schema_name>"
table_name = "baby_names"
silver_table_name = "baby_names_prepared"
gold_table_name = "top_baby_names_2021"
path_table = catalog + "." + schema
print(path_table) # Show the complete path

ステップ 3: 生データを新しい データフレーム に読み込む

この手順では、以前に Delta テーブルに保存された生データを新しい データフレーム に読み込み、このデータをクレンジングしてさらに分析するための拡張に備えます。

  1. 次のコードをコピーして、新しい空のノートブックのセルに貼り付けてください。
Python
df_raw = spark.read.table(f"{path_table}.{table_name}")
display(df_raw)
  1. Shift+Enterを押してセルを実行し、次のセルに移動します。

ステップ4:生データをクレンジングして強化し、保存する

この手順では、 Year 列の名前を変更し、 First_Name 列のデータを頭文字の大文字に変更し、 Sex 列の値を更新して性別をスペルアウトしてから、データフレーム を新しいテーブルに保存します。

  1. 次のコードをコピーして、ノートブックの空のセルに貼り付けます。
Python
from pyspark.sql.functions import col, initcap, when

# Rename "Year" column to "Year_Of_Birth"
df_rename_year = df_raw.withColumnRenamed("Year", "Year_Of_Birth")

# Change the case of "First_Name" column to initcap
df_init_caps = df_rename_year.withColumn("First_Name", initcap(col("First_Name").cast("string")))

# Update column values from "M" to "male" and "F" to "female"
df_baby_names_sex = df_init_caps.withColumn(
"Sex",
when(col("Sex") == "M", "Male")
.when(col("Sex") == "F", "Female")
)

# display
display(df_baby_names_sex)

# Save DataFrame to table
df_baby_names_sex.write.mode("overwrite").saveAsTable(f"{path_table}.{silver_table_name}")
  1. Shift+Enterを押してセルを実行し、次のセルに移動します。

ステップ 5: データをグループ化して視覚化する

このステップでは、データを 2021 年のみにフィルタリングし、性別と名前でデータをグループ化し、カウントで集計し、カウントで並べ替えます。 次に、データフレーム をテーブルに保存し、データを棒グラフで視覚化します。

  1. 次のコードをコピーして、ノートブックの空のセルに貼り付けます。
Python
from pyspark.sql.functions import expr, sum, desc
from pyspark.sql import Window

# Count of names for entire state of New York by sex
df_baby_names_2021_grouped=(df_baby_names_sex
.filter(expr("Year_Of_Birth == 2021"))
.groupBy("Sex", "First_Name")
.agg(sum("Count").alias("Total_Count"))
.sort(desc("Total_Count")))

# Display data
display(df_baby_names_2021_grouped)

# Save DataFrame to a table
df_baby_names_2021_grouped.write.mode("overwrite").saveAsTable(f"{path_table}.{gold_table_name}")
  1. Ctrl+Enterを押してセルを実行します。

    1. テーブル タブの横にある + をクリックし、 ビジュアライゼーション をクリックします。
  2. 視覚化エディターで、 視覚化の種類 をクリックし、 バー が選択されていることを確認します。

  3. [X] 列 で [First_Name] を選択します。

  4. Y 列 ]の下の 列の追加 をクリックし、 Total_Count を選択します。

  5. グループ化 で、 Sex を選択します。

    ゴールドテーブル

  6. [ 保存 ]をクリックします。

データノートブックのクレンジングと強化

次のいずれかのノートブックを使用して、この記事の手順を実行します。 <catalog-name><schema-name>、および <volume-name> を、Unity Catalog ボリュームのカタログ、スキーマ、およびボリューム名に置き換えます。必要に応じて、 table_name 値を任意のテーブル名に置き換えます。

Cleanse and enhance data using Python

Open notebook in new tab

追加のリソース