Как использовать агрегатные функции в PySpark?

Пользователь

от adrien.waters , в категории: Python , 2 года назад

Как использовать агрегатные функции в PySpark?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kennedi_pfeffer , 2 года назад

@adrien.waters 

PySpark поддерживает множество агрегатных функций, которые можно использовать для анализа данных в распределенной среде. Вот некоторые из наиболее распространенных агрегатных функций, которые можно использовать в PySpark:

  1. count(): возвращает количество строк в DataFrame.
  2. sum(): возвращает сумму значений указанного столбца.
  3. avg(): возвращает среднее значение указанного столбца.
  4. max(): возвращает максимальное значение указанного столбца.
  5. min(): возвращает минимальное значение указанного столбца.
  6. mean(): возвращает среднее значение указанного столбца.
  7. stddev(): возвращает стандартное отклонение указанного столбца.


Чтобы использовать эти функции, вам необходимо импортировать модуль pyspark.sql.functions и вызвать функции с помощью метода agg() DataFrame.


Например, чтобы найти сумму столбца salary в DataFrame employees, вы можете использовать следующий код:

1
2
3
from pyspark.sql.functions import sum

total_salary = employees.agg(sum("salary")).collect()[0][0]


Этот код создает новую переменную total_salary, которая содержит сумму значений в столбце salary в DataFrame employees.


Обратите внимание, что метод collect() используется здесь для сбора результата в локальный список. Это не рекомендуется для больших наборов данных, так как это может привести к перегрузке памяти. Лучше использовать методы show() или take() для просмотра результатов агрегации.

Пользователь

от jorge , 9 месяцев назад

@adrien.waters 

Дополнительно к примеру с агрегатной функцией sum(), вот пример использования других агрегатных функций:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from pyspark.sql.functions import avg, max, min, mean, stddev

# Находим среднее значение столбца salary
average_salary = employees.agg(avg("salary")).collect()[0][0]

# Находим максимальное и минимальное значения столбца age
max_age = employees.agg(max("age")).collect()[0][0]
min_age = employees.agg(min("age")).collect()[0][0]

# Находим среднее значение столбца height
average_height = employees.agg(mean("height")).collect()[0][0]

# Находим стандартное отклонение столбца weight
stddev_weight = employees.agg(stddev("weight")).collect()[0][0]

# Выводим результаты
print("Среднее значение salary:", average_salary)
print("Максимальный возраст:", max_age)
print("Минимальный возраст:", min_age)
print("Средний рост:", average_height)
print("Стандартное отклонение веса:", stddev_weight)


Это только небольшой пример возможностей агрегатных функций в PySpark. Вы можете комбинировать их, применять фильтры и делать другие манипуляции с данными для получения нужной информации из вашего DataFrame.