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