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

Агрегація та Групування в Python

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

Note
Визначення

Агрегація — це процес підсумовування кількох рядків даних у одне значуще значення, наприклад, суму, середнє або кількість. Групування дозволяє застосовувати ці підсумки до певних категорій, наприклад, знаходити загальний обсяг продажів для кожного окремого регіону.

Рідко виникає потреба переглядати мільйони окремих рядків сирих даних. Зазвичай цікавить "загальна картина" — підсумки, середні значення або кількість по категоріях. У Spark цього можна досягти, поєднуючи два потужних методи: groupBy() та agg().

Базовий шаблон groupBy

Щоб підсумувати дані за певною категорією, спочатку використовується метод groupBy(). Це вказує Spark згрупувати всі рядки з однаковим значенням (наприклад, "cut" у таблиці diamonds) в одну групу. Проте саме по собі групування нічого не робить; необхідно додати агрегацію.

# Group by cut and count how many rows are in each
count_df = df.groupBy("cut").count()

display(count_df)

Виконання математичних операцій за допомогою sum(), avg() та max()

Після групування даних можна застосовувати математичні функції до числових стовпців. Щоб переглянути загальний прибуток за типом товару, використовуйте .sum().

# Total total_depth per cut category
total_depth = df.groupBy("cut").sum("x")

display(total_depth)

Зверніть увагу, що Spark автоматично перейменовує стовпець на sum(x). У наступному розділі ми дізнаємося, як зробити ці назви більш професійними.

Метод agg() для кількох метрик

Якщо потрібно обчислити декілька показників одночасно — наприклад, середній прибуток і максимальний дохід для кожного регіону — використовується метод .agg() (aggregate). Це професійний стандарт для створення складних підсумкових таблиць.

from pyspark.sql import functions as F

# Calculate multiple metrics at once
summary_df = df.groupBy("cut").agg(
    F.sum("x"),
    F.avg("y"),
    F.max("z")
)

display(summary_df)
Note
Примітка

Ми імпортуємо pyspark.sql.functions as F, щоб отримати доступ до цих потужних математичних інструментів.

Групування за декількома стовпцями

Групування не обмежується лише однією категорією. Можна передати список стовпців, щоб переглянути дані на більш детальному рівні, наприклад, загальне значення x для кожного Color Type у межах кожного Cut.

multi_group_df = df.groupBy("cut", "color").sum("x")

display(multi_group_df)

Сортування результатів

Агреговані дані часто легше читати у відсортованому вигляді. Ви можете додати метод .orderBy() наприкінці вашої агрегації, щоб бачити категорії з найкращими показниками на початку списку.

# Show highest profit categories first
sorted_df = summary_df.orderBy("sum(x)", ascending=False)

display(sorted_df)

1. Який метод потрібно викликати ПЕРЕД застосуванням sum() або avg(), якщо ви хочете отримати результати з розбивкою за категоріями?

2. Яка перевага використання методу .agg() замість лише .sum()?

question mark

Який метод потрібно викликати ПЕРЕД застосуванням sum() або avg(), якщо ви хочете отримати результати з розбивкою за категоріями?

Виберіть правильну відповідь

question mark

Яка перевага використання методу .agg() замість лише .sum()?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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