Каталог каналов Каналы в закладках Мои каналы Поиск постов Рекламные посты
Инструменты
Каталог TGAds beta Мониторинг Детальная статистика Анализ аудитории Бот аналитики
Полезная информация
Инструкция Telemetr Документация к API Чат Telemetr
Полезные сервисы

Не попадитесь на накрученные каналы! Узнайте, не накручивает ли канал просмотры или подписчиков Проверить канал на накрутку
Прикрепить Телеграм-аккаунт Прикрепить Телеграм-аккаунт

Телеграм канал «Постоянный репозиторий по Python»

Постоянный репозиторий по Python
108
0
1
0
383
Подписчики
Всего
1 888
Сегодня
0
Просмотров на пост
Всего
306
ER
Общий
13.61%
Суточный
9.7%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 108 постов
Смотреть все посты
Пост от 06.03.2026 12:06
239
0
0
🔥 4
🥰 1
👏 1
Пост от 06.03.2026 12:06
237
0
0
🤝 2
1
🥰 1
Пост от 04.03.2026 15:19
305
0
0
🐍 Почему apply() в pandas почти всегда можно заменить (и ускорить код)

Многие, кто начинает работать с pandas, пишут так:
import pandas as pd

df = pd.DataFrame({
"price": [100, 200, 300],
"quantity": [1, 2, 3]
})

# Хотим посчитать выручку
df["revenue"] = df.apply(
lambda row: row["price"] * row["quantity"], # берём строку
axis=1 # применяем к каждой строке
)

print(df)
Работает. Но это медленно и не по-питоновски для pandas.

В чём проблема?

apply(axis=1):
• проходит по строкам в Python-цикле
• ломает векторизацию
• сильно проигрывает по скорости на больших данных
По сути, вы возвращаете себе обычный цикл for.

Как правильно?
В pandas почти всегда нужно думать векторно:
# Векторное решение – без apply
df["revenue"] = df["price"] * df["quantity"]

print(df)

Что здесь происходит:
• операции выполняются на уровне массивов (NumPy)
• без Python-циклов
• значительно быстрее на больших объёмах

Когда разница становится критичной?
На 1 000 строк – почти незаметно.
На 1 000 000 строк – может отличаться в десятки раз.
Именно поэтому опытные аналитики стараются:
• избегать apply(axis=1)
• использовать встроенные операции
• мыслить колонками, а не строками

Когда apply() всё же оправдан?
• если логика действительно сложная
• если нельзя выразить её векторно
• если это прототип, а не продакшен
Но в 80% случаев apply() – это просто привычка.

Главное правило
Если в pandas вы пишете apply(axis=1) – сначала подумайте: можно ли это сделать через операции над колонками?
Чаще всего – можно.
👍 3
1
🔥 1
Пост от 26.02.2026 10:26
393
0
0
🔥 4
👍 2
👏 1
Пост от 26.02.2026 10:26
368
0
0
1
🔥 1
👏 1
Пост от 25.02.2026 09:45
309
0
0
🐍 Изменяемые аргументы по умолчанию – тихий источник багов

На первый взгляд код выглядит нормально:

def add_item(item, items=[]):
items.append(item)
return items

Проверяем:
print(add_item(1)) # [1]
print(add_item(2)) # [1, 2]

Почему список не обнуляется?

В чём проблема?
Аргументы по умолчанию в Python создаются один раз, в момент определения функции, а не при каждом вызове.
То есть items=[] – это один и тот же список в памяти, который используется повторно.

Что происходит под капотом?
Когда Python видит:
def f(x=[]):
...
Он создаёт список один раз. Дальше каждый вызов функции работает с тем же объектом.

Правильный способ ✔️

def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items

Теперь:
print(add_item(1)) # [1]
print(add_item(2)) # [2]

Каждый вызов получает новый список.
Когда это особенно опасно?
• в API-функциях
• в классах
• в сервисах с большим количеством вызовов
• когда функция вызывается в разных местах проекта
Такие баги сложно заметить – они не вызывают ошибку, а просто ведут себя «странно».
🔥 3
1
👍 1
Пост от 20.02.2026 10:21
419
0
0
2
🔥 1
👏 1
😢 1
Смотреть все посты