Сортировка DataFrame по нескольким колонкам в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для сортировки данных по нескольким столбцам в pandas используйте метод sort_values. Укажите названия столбцов и направление сортировки через списки:

Python
Скопировать код
import pandas as pd

# Предположим, что df — это ваш DataFrame
sorted_df = df.sort_values(by=['f1', 'f2'], ascending=[True, False])

В этом фрагменте кода DataFrame df сначала сортируется по столбцу f1 в порядке возрастания, а затем — по столбцу f2 в порядке убывания. Разберём более подробно вопросы сортировки данных различного типа и работы с большими массивами.

Кинга Идем в IT: пошаговый план для смены профессии

Тонкости сортировки DataFrame

Работа с большим объёмом данных

Чтобы ускорить работу с большими числовыми массивами, воспользуйтесь функцией numpy.lexsort. Учтите, что для сортировки по убыванию столбцы следует подавать в обратном порядке, и помните, что этот метод подходит только для числовых данных.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Единообразие данных

Корректность сортировки гарантирует единообразие типов данных. Перед началом сортировки убедитесь, что данные в столбцах однородны, воспользовавшись df.dtypes.

Сортировка в режиме реального времени

Чтобы данные обновлялись «на лету» во время сортировки, используйте аргумент inplace=True:

Python
Скопировать код
# Как говорила моя бабушка: "Порядок экономит время; беспорядок тратит его"
df.sort_values(by=['f1', 'f2'], ascending=[True, False], inplace=True)

Оценка производительности

Используйте %timeit для оценки производительности и сравнения различных способов сортировки.

Визуализация

Можно сравнить процесс сортировки в DataFrame с расстановкой книг на полке в порядке жанров и авторов:

Markdown
Скопировать код
До сортировки: 📚 [Фантастика|Азимов, Детектив|Кристи, Фантастика|Брэдбери, Детектив|Сэйерс]

После сортировки:

Markdown
Скопировать код
После сортировки: 🛋️
1. 🛸 [Фантастика|Азимов, Фантастика|Брэдбери]
2. 🕵️ [Детектив|Кристи, Детектив|Сэйерс]

Аналогичное действие легко выполняется с помощью pandas:

Python
Скопировать код
# Это как упорядочивание книг на полке, только без пыли.
df.sort_values(by=['жанр', 'автор'])

Сортировка с мультииндексацией

Навыки сортировки можно улучшить при помощи использования многоуровневых индексов в pandas с командами set_index и sort_values.

Сложная сортировка

Для объединения и последующей сортировки разных фрагментов по различным правилам используйте комбинацию методов concat и sort_values.

Числовая сортировка с использованием numpy

numpy.lexsort идеально подходит для обработки числовых столбцов данных. Но не забудьте, что для сортировки в обратном порядке колонки следует подавать в обратной последовательности.

Продвинутые методы сортировки

Пользовательские категории

Для нетипичных порядков сортировки определите точное расположение столбцов при помощи pd.Categorical.

Фильтрация перед сортировкой

Для больших наборов данных эффективно сочетать sort_values с query. Это позволит вам отфильтровывать строки перед сортировкой.

Сортировка по нескольким столбцам

Воспользуйтесь возможностью сортировать DataFrame с использованием нескольких столбцов при помощи метода sort_values(). Если ключи сортировки равны, применяются дополнительные условия.

Полезные материалы

  1. pandas.DataFrame.sort_values — документация pandas 2.2.0 — Официальная документация функции sort_values.
  2. MultiIndex / advanced indexing — документация pandas 2.2.0 — Инструкция по многоуровневой сортировке в pandas MultiIndex.
  3. python – Как отсортировать pandas DataFrame по двум или более столбцам? – Stack Overflow — Советы и решения от сообщества экспертов.
  4. Сортировка в pandas: Ваше руководство для сортировки данных в Python – Real Python — Глубокое изучение сортировки данных в pandas.
  5. Chris Albon — Пошаговый гид по сортировке данных в pandas от Криса Албона.
  6. Пользовательская сортировка в DataFrame pandas – Medium — Обзор нестандартных методов сортировки в pandas DataFrame.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод используется для сортировки DataFrame по нескольким столбцам в pandas?
1 / 5