Функция nlargest() в pandas: топ-N по значению

df.nlargest(n, columns) возвращает n строк с наибольшими значениями указанной колонки, уже отсортированных по убыванию. Парная nsmallest берёт наименьшие. Это быстрая и читаемая замена связки sort_values(...).head(n) — и работает эффективнее, потому что не сортирует всю таблицу.

Синтаксис

df.nlargest(3, 'amount') | df.nsmallest(3, 'amount')

Примеры использования

Пример 1: Топ-3 заказа по сумме

df.nlargest(3, 'amount')

Результат:

   order_id  amount
1        11     900
0        10     500
4        21     300

Пример 2: Топ-2 по каждой группе

df.groupby('user_id', group_keys=False).apply(lambda g: g.nlargest(2, 'amount'))

Результат:

(по 2 крупнейших заказа на клиента)
Порешать Python-задачи в тренажёре →

Типичная ошибка

nlargest сортирует только нужную колонку и берёт топ — быстрее, чем sort_values всей таблицы, но при равных значениях на границе результат зависит от keep ('first'/'last'/'all'). Для «топ-N внутри группы» комбинируй с groupby().apply(), но на больших данных это медленно — там лучше через rank или sort_values + groupby head. nlargest работает по одной числовой колонке.

Где спрашивают на собеседовании

nlargest спрашивают как быстрый способ «дай топ-N» без ручной сортировки. Ценят знание, что это эффективнее sort_values().head() и что для топ-N по группам нужен groupby.

FAQ: частые вопросы про nlargest

Чем nlargest лучше sort_values().head()?

nlargest не сортирует всю таблицу — он находит только N наибольших по колонке, что быстрее и читается короче. Результат тот же: N строк с максимальными значениями.

Как получить топ-N по каждой группе?

df.groupby('ключ', group_keys=False).apply(lambda g: g.nlargest(n, 'col')). На больших данных быстрее через rank или сортировку + groupby.head(n).

Как взять наименьшие значения?

df.nsmallest(n, 'col') — парная функция, возвращает n строк с минимальными значениями.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →