Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Виклик: Ваше Перше Завдання з Очищення Даних | Робота з Даними
Databricks: Основи для Початківців

Виклик: Ваше Перше Завдання з Очищення Даних

Свайпніть щоб показати меню

Note
Визначення

Типовий конвеєр обробки даних зазвичай дотримується такої послідовності: Завантаження, Очищення, Трансформація та Збереження. У цьому мініпроєкті ці кроки застосовуються до конкретного набору даних, щоб перейти від сирих даних до чистого, агрегованого підсумку, готового для бізнес-звітності.

Щоб завершити Розділ 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() просто перейменовує стовпець у результаті запиту — це як тимчасове прізвисько. Це не змінює саму таблицю, лише те, як стовпець відображається у виведених даних.

Уявіть це як AS у SQL — 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. F — це просто псевдонім для pyspark.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

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 4. Розділ 9
some-alt