🐼 Как правильно сортировать данные в Pandas

Из этой заметки вы узнаете, как сортировать датафреймы Pandas по нескольким столбцам с помощью метода sort_values, а также по индексам методом sort_index.

Датафрейм – это двумерная структура данных, очень похожая на таблицу, которая состоит из рядов и столбцов. В Pandas мы можем сортировать фрейм данных по одному столбцу, либо по нескольким столбцам.

Мы будем работать с набором данных Kaggle, а именно со статистикой трендовых видеороликов YouTube. Скачаем и откроем файлUSvideos.csv:

df = pd.read_csv('USvideos.csv')
df.columns

Датафрейм включает следующие столбцы:

Метод sort_values применяется для сортировки датафрейма и выглядит следующим образом:

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)

Далее мы подробно разберем, за что отвечает каждый из вышеперечисленных параметров.

Сортировка по одному столбцу

Чтобы отсортировать датафрейм по одному столбцу, укажем имя столбца с помощью параметра by. В качестве примера возьмем столбец likes, который выводит количество набранных лайков.

df.sort_values(by='likes', ascending=False)

Здесь:

by – определяет список столбцов для сортировки.

ascending – задает порядок сортировки.

sort_values по умолчанию сортирует по возрастанию.

Чтобы задать порядок «по убыванию», следует указать ascending=False.

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

Чтобы отсортировать датафрейм по нескольким столбцам, методу sort_values нужно через запятую указать имена столбцов, которые мы собираемся использовать.

Давайте отсортируем датафрейм по показателям likes и dislikes, то есть найдем видео с наибольшим числом лайков и дизлайков.

В параметре ascending порядок сортировки для столбцов также указывается через запятую, что позволяет задавать разный порядок сортировки для разных столбцов в датафрейме.

df.sort_values(['likes','dislikes'], ascending=[False, False])

Подробнее про параметры

Параметр kind позволяет выбрать алгоритм сортировки: quicksort (Быстрая сортировка), mergesort (Сортировка слиянием) или heapsort (Пирамидальная сортировка). По умолчанию используется алгоритм quicksort.

df.sort_values('likes', ascending=False, kind="mergesort")

Inplace-сортировка (на месте) по умолчанию отключена. Для включения inplace-сортировки используем параметр inplace:

df.sort_values('likes', ascending=False, kind="mergesort", inplace=True)

С помощью параметра key мы можем применить любую функцию к данным еще до операции сортировки. Вместо функции также может быть lambda-функция.

df.sort_values(by='title', key=lambda x: x.str.lower())

Метод sort_index сортирует датафрейм по индексам строк. Давайте еще раз взглянем на наш датафрейм:

sdf = df.sort_values(by='likes', ascending=False)

Когда мы сортируем датафрейм, используя метод sort_values, Pandas учитывает столбец, ответственный за сортировку. Чтобы отсортировать датафрейм sdf по индексу строк, воспользуемся методом sort_index:

sdf.sort_index()

Чтобы отсортировать датафрейм по меткам столбцов, присвоим параметру axis значение 1:

sdf.sort_index(axis=1)
***

В этой заметке мы:

  • научились сортировать датафрейм по одному и нескольким значениям;
  • узнали, как работают методы sort_values() и sort_index().

Материалы по теме

Источники

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
11 декабря 2018

ООП на Python: концепции, принципы и примеры реализации

Программирование на Python допускает различные методологии, но в его основе...
admin
14 июля 2017

Пишем свою нейросеть: пошаговое руководство

Отличный гайд про нейросеть от теории к практике. Вы узнаете из каких элеме...
admin
13 февраля 2017

Программирование на Python: от новичка до профессионала

Пошаговая инструкция для всех, кто хочет изучить программирование на Python...