PYTHONL Telegram 5162
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Pandas трюк: ускоряем группировки с map вместо merge_groupby

Когда нужно добавить агрегированные значения (например, среднее по группе) обратно в исходный DataFrame, большинство разработчиков делают groupby().transform() или merge().
Но есть менее известный способ — использовать map() после groupby().mean(), который в некоторых случаях работает в 2–3 раза быстрее и требует меньше памяти.

Фокус в том, что groupby().mean() создаёт компактный Series, где индекс — это категория, а значения — результат агрегации.
А map() просто подставляет их обратно в исходный DataFrame без тяжёлого join.


import pandas as pd
import numpy as np

# пример данных
N = 5_000_000
df = pd.DataFrame({
"group": np.random.choice(["A", "B", "C", "D"], N),
"value": np.random.randn(N)
})

# классический подход
df["mean_value_merge"] = df["group"].map(df.groupby("group")["value"].mean())

# сравнение с transform
df["mean_value_transform"] = df.groupby("group")["value"].transform("mean")

# идентичность результата
print(df["mean_value_merge"].equals(df["mean_value_transform"]))


Это особенно полезно на миллионах строк, когда transform начинает “проседать”.
Метод даёт тот же результат, но заметно экономнее по CPU и RAM.

@pythonl
14🔥11👍4



tgoop.com/pythonl/5162
Create:
Last Update:

🔥 Pandas трюк: ускоряем группировки с map вместо merge_groupby

Когда нужно добавить агрегированные значения (например, среднее по группе) обратно в исходный DataFrame, большинство разработчиков делают groupby().transform() или merge().
Но есть менее известный способ — использовать map() после groupby().mean(), который в некоторых случаях работает в 2–3 раза быстрее и требует меньше памяти.

Фокус в том, что groupby().mean() создаёт компактный Series, где индекс — это категория, а значения — результат агрегации.
А map() просто подставляет их обратно в исходный DataFrame без тяжёлого join.


import pandas as pd
import numpy as np

# пример данных
N = 5_000_000
df = pd.DataFrame({
"group": np.random.choice(["A", "B", "C", "D"], N),
"value": np.random.randn(N)
})

# классический подход
df["mean_value_merge"] = df["group"].map(df.groupby("group")["value"].mean())

# сравнение с transform
df["mean_value_transform"] = df.groupby("group")["value"].transform("mean")

# идентичность результата
print(df["mean_value_merge"].equals(df["mean_value_transform"]))


Это особенно полезно на миллионах строк, когда transform начинает “проседать”.
Метод даёт тот же результат, но заметно экономнее по CPU и RAM.

@pythonl

BY Python/ django


Share with your friend now:
tgoop.com/pythonl/5162

View MORE
Open in Telegram


Telegram News

Date: |

Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.” Telegram is a leading cloud-based instant messages platform. It became popular in recent years for its privacy, speed, voice and video quality, and other unmatched features over its main competitor Whatsapp. How to Create a Private or Public Channel on Telegram? Image: Telegram.
from us


Telegram Python/ django
FROM American