Агрегатные функции в Pandas
Агрегатные функции «сворачивают» массив значений в одно число: сумма, среднее,
максимум, медиана и т.д. В Pandas их можно вызывать как методы (df.sum())
или передавать в agg — последний удобен, когда нужно несколько разных
агрегаций сразу.
Когда использовать
Метрики качества данных (средняя температура, разброс, минимумы).
Итоговые строки в отчётах.
Сравнение групп через GroupBy в Pandas.
Пример 1. Сумма и среднее по столбцу
import pandas as pd
df = pd.DataFrame({"v": [10, 20, 30, 40]})
print("sum:", df["v"].sum())
print("mean:", df["v"].mean())
Output:
sum: 100
mean: 25.0
Пример 2. Все агрегации сразу
import pandas as pd
df = pd.DataFrame({"v": [10, 20, 30]})
print(df["v"].describe())
Output:
count 3.0
mean 20.0
std 10.0
min 10.0
25% 15.0
50% 20.0
75% 25.0
max 30.0
Name: v, dtype: float64
Пример 3. agg со списком
import pandas as pd
df = pd.DataFrame({"temp": [22, 35, 41]})
print(df["temp"].agg(["min", "max", "mean"]))
Output:
min 22.000000
max 41.000000
mean 32.666667
Name: temp, dtype: float64
Пример 4. Разные функции для разных столбцов
import pandas as pd
df = pd.DataFrame({"temp": [22, 35, 41], "hum": [55, 60, 30]})
print(df.agg({"temp": "max", "hum": "min"}))
Output:
temp 41
hum 30
dtype: int64
Пример 5. Своя функция
import pandas as pd
df = pd.DataFrame({"v": [10, 20, 30]})
print(df["v"].agg(lambda x: x.max() - x.min()))
Output:
20
Пример 6. Подсчёт уникальных
import pandas as pd
df = pd.DataFrame({"device": ["bot1", "bot2", "bot1", "bot3"]})
print("уникальных:", df["device"].nunique())
print(df["device"].value_counts())
Output:
уникальных: 3
device
bot1 2
bot2 1
bot3 1
Name: count, dtype: int64
Пример 7. С группировкой
import pandas as pd
df = pd.DataFrame({
"device": ["bot1", "bot1", "bot2"],
"temp": [22, 26, 30],
})
print(df.groupby("device").agg({"temp": ["mean", "max"]}))
Output:
temp
mean max
device
bot1 24.0 26
bot2 30.0 30
Подводные камни
По умолчанию агрегатные функции игнорируют
NaN— ноcountтоже не считает их, аsize— считает все строки.sum()для пустогоSeriesвозвращает 0, аmean()—NaN.Для нечисловых столбцов имеет смысл только
count,min,max,mode.
См. также
Примечание
Лицензия и источники
Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.