TGViewer
Симулейтив Симулейтив @simulative_official · 7.46K subscribers
Post #3030 1.31K
6 трюков в Pandas, которые сэкономят время

Привет! На связи Мария Жарова, ментор курса «ML-инженер» 👋🏻

Когда только начинаешь работать с данными в Pandas, кажется, что всё сводится к .groupby(), for-циклам и фильтрации. Но в Pandas всё решают детали. Ниже — 6 приёмов, которые делают код чище, быстрее и заметно приятнее в поддержке. Некоторые выглядят мелочами, но на длинной дистанции экономят часы.

1️⃣ map() vs apply() — не одно и то же

Если работаете с одним столбцом, всегда выбирайте map():

df["gender_code"] = df["gender"].map({"male": 0, "female": 1})
df["name_len"] = df["name"].map(len)


Почему это лучше, чем apply()? Потому что map() оптимизирован именно под Series: без создания строк DataFrame и без лишних обёрток.

apply() же оправдан, когда нужно работать с несколькими колонками сразу:

df["full_name"] = df.apply(
lambda row: f"{row['first']} {row['last']}",
axis=1
)


2️⃣ query() — фильтрация, как в SQL

Если любите SQL, этот синтаксис зайдёт сразу:

df.query("age > 25 and city == 'Moscow'")


Под капотом это то же самое, что:

df[(df["age"] > 25) & (df["city"] == "Moscow")]


По скорости почти одинаково, но читается легче и особенно спасает при большом числе условий.

3️⃣ isin() — фильтрация по списку значений

Когда нужно выбрать строки по списку категорий:

df[df["category"].isin(["books", "electronics"])]


А если нужно исключить значения:

df[~df["user_id"].isin(blacklist)]


Чище и понятнее, чем цепочки из |, & и ==.

4️⃣ assign() — аккуратные пайплайны без лишних строк

Классическая ситуация «до»:

df["total"] = df["price"] * df["quantity"]
df = df[df["total"] > 1000]


И та же логика, но «после»:

df = (
df
.assign(total=lambda x: x["price"] * x["quantity"])
.query("total > 1000")
)


Ничего не потерялось, код читается как единый поток трансформаций.

5️⃣ pipe() — когда пайплайн становится длинным

Если у вас появляются кастомные функции, но хочется сохранить цепочку:

def clean_text(df):
df["text"] = df["text"].str.lower()
return df

def add_features(df, some_param):
df["length"] = df["text"].str.len() * some_param
return df

df = (
df
.pipe(clean_text)
.pipe(add_features, some_param=10)
)


pipe() просто передаёт DataFrame первым аргументом — идеально для многошаговых преобразований.

6️⃣ nlargest() и nsmallest() — топ без сортировки

Вместо:

df.sort_values("revenue", ascending=False).head(5)


Проще и быстрее:

df.nlargest(5, "revenue")


А если нужен «низ» распределения:

df.nsmallest(3, "error_rate")


Меньше кода, яснее намерение + метод работает быстрее, т. к. не сортирует весь столбец.

Каждый из этих методов по отдельности выглядит как «альтернативный синтаксис». Но вместе они превращают Pandas-код из скрипта для себя в читабельный, поддерживаемый и быстрый пайплайн ⚡️


Ставьте ❤️, если было полезно — и сохраняйте, чтобы не потерять!

📊 Simulative
  • ❤ 34
  • 🔥 7
  • 👍 4
More from @simulative_official
  1. Oct 2, 2026🐍 Библиотека Pandas для анализа данных Pandas — это мощный инструмент для анализа данных,…
  2. Oct 1, 2026Post #3592
  3. Sep 30, 2026💻💻💻💻💻 Откуда на самом деле берутся данные? На учебных задачах всё просто: тебе дают г…
  4. Sep 30, 2026⭐️ Топ метрик, которые должен уметь считать каждый аналитик Рекламные метрики — это не про…
  5. Sep 29, 2026⭐️ Уже сегодня: как ML-инженер учит компьютер находить смысл в тексте Сегодня покажем проф…
  6. Sep 28, 2026#проанализировали_и_поняли
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →