Пропустить до содержимого

Как сортировать DataFrame? Подробное объяснение и простые способы

[

pandas Сортировка: Ваше руководство по сортировке данных в Python

Введение

Одним из способов анализа данных с использованием Python является использование библиотеки pandas. Библиотека pandas способна обрабатывать большие объемы данных и обеспечивает высокую производительность при манипуляции с данными.

В этом руководстве вы узнаете, как использовать методы .sort_values() и .sort_index() в библиотеке pandas, которые позволят вам эффективно сортировать данные в DataFrame.

По окончании этого руководства вы научитесь:

  • Сортировать pandas DataFrame по значениям одного или нескольких столбцов
  • Изменять порядок сортировки с помощью параметра ascending
  • Сортировать DataFrame по его индексу с помощью метода .sort_index()
  • Обрабатывать пропущенные данные при сортировке значений
  • Применять сортировку DataFrame на месте с помощью параметра inplace

Для выполнения этого руководства вам понадобятся базовое понимание DataFrames в pandas и некоторая знакомство с чтением данных из файлов.

Начало работы с методами сортировки в pandas

Как было сказано ранее, pandas позволяет эффективно сортировать данные в DataFrame с использованием методов .sort_values() и .sort_index(). Давайте начнем их изучение.

Подготовка набора данных

Перед тем, как начать сортировку данных в pandas, необходимо подготовить набор данных в виде DataFrame. В этом примере будем использовать следующий набор данных:

import pandas as pd
data = {
'Name': ['John', 'Alice', 'Bob'],
'Age': [25, 30, 20],
'City': ['London', 'New York', 'Paris']
}
df = pd.DataFrame(data)

Знакомство с методом .sort_values()

Метод .sort_values() позволяет сортировать DataFrame по значениям одного или нескольких столбцов. Давайте рассмотрим пример с сортировкой по столбцу “Age” в возрастающем порядке:

df_sorted = df.sort_values(by='Age')

Знакомство с методом .sort_index()

Метод .sort_index() позволяет сортировать DataFrame по его индексу. Давайте рассмотрим пример с сортировкой DataFrame по индексу в возрастающем порядке:

df_sorted = df.sort_index()

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

Теперь, когда мы знаем, как использовать методы .sort_values() и .sort_index(), давайте рассмотрим, как сортировать DataFrame по одному столбцу.

Сортировка по столбцу в возрастающем порядке

Для сортировки DataFrame по одному столбцу в возрастающем порядке, используйте следующий код:

df_sorted = df.sort_values(by='ColumnName')

Изменение порядка сортировки

По умолчанию, методы .sort_values() и .sort_index() сортируют данные в возрастающем порядке. Однако, вы можете изменить порядок сортировки на убывающий, используя параметр ascending=False, например:

df_sorted = df.sort_values(by='ColumnName', ascending=False)

Выбор алгоритма сортировки

По умолчанию, pandas использует быструю сортировку (quicksort) для сортировки данных. Однако, вы можете выбрать другой алгоритм сортировки, используя параметр kind, например:

df_sorted = df.sort_values(by='ColumnName', kind='mergesort')

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

Зачастую возникает необходимость сортировать DataFrame по нескольким столбцам. Давайте рассмотрим, как это можно сделать.

Сортировка по нескольким столбцам в возрастающем порядке

Для сортировки DataFrame по нескольким столбцам в возрастающем порядке, просто передайте список столбцов в параметр by, например:

df_sorted = df.sort_values(by=['Column1', 'Column2'])

Изменение порядка сортировки столбцов

Можно также изменить порядок сортировки для каждого столбца отдельно. Например, для сортировки столбца “Column1” в возрастающем порядке и столбца “Column2” в убывающем порядке:

df_sorted = df.sort_values(by=['Column1', 'Column2'], ascending=[True, False])

Сортировка по нескольким столбцам в убывающем порядке

Для сортировки по нескольким столбцам в убывающем порядке, установите параметр ascending в False для каждого столбца, например:

df_sorted = df.sort_values(by=['Column1', 'Column2'], ascending=False)

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

Можно также задать разные порядки сортировки для каждого столбца. Например, для сортировки столбца “Column1” в возрастающем порядке и столбца “Column2” в убывающем порядке:

df_sorted = df.sort_values(by=['Column1', 'Column2'], ascending=[True, False])

Сортировка DataFrame по его индексу

Pandas также позволяет сортировать DataFrame по его индексу. Рассмотрим, как это можно сделать.

Сортировка по индексу в возрастающем порядке

Для сортировки DataFrame по индексу в возрастающем порядке используйте следующий код:

df_sorted = df.sort_index()

Сортировка по индексу в убывающем порядке

Для сортировки DataFrame по индексу в убывающем порядке, установите параметр ascending в False, например:

df_sorted = df.sort_index(ascending=False)

Исследование продвинутых концепций сортировки индекса

Pandas предлагает некоторые продвинутые возможности для сортировки индекса DataFrame. Например, вы можете использовать параметр sort_remaining для сортировки оставшихся значений индекса:

df_sorted = df.sort_index(sort_remaining=True)

Сортировка столбцов DataFrame

Pandas также предоставляет возможность сортировать столбцы DataFrame. Давайте рассмотрим, как это можно сделать.

Работа с осью DataFrame

При сортировке столбцов DataFrame, нужно указать ось по которой будет производиться сортировка. По умолчанию, ось равняется 0, что означает сортировку столбцов. Для сортировки столбцов указывать ось явно не требуется:

df_sorted = df.sort_index()

Использование меток столбцов для сортировки

Если в DataFrame используются метки столбцов, можно использовать эти метки для сортировки. Для этого необходимо указать ось равную 1 и передать список меток столбцов в параметр by, например:

df_sorted = df.sort_index(axis=1, by=['Column1', 'Column2'])

Работа с пропущенными данными при сортировке в pandas

Выявление и обработка пропущенных данных является важным аспектом при анализе данных. Рассмотрим, как справиться с пропущенными данными при сортировке в pandas.

Понимание параметра na_position в методе .sort_values()

Метод .sort_values() в pandas имеет параметр na_position, который позволяет указывать положение пропущенных значений в отсортированном DataFrame. Если вы хотите, чтобы пропущенные значения были отображены в начале отсортированного DataFrame, установите значение параметра na_position равным "first", например:

df_sorted = df.sort_values(by='Column1', na_position='first')

В этом случае, пропущенные значения будут отображаться в начале отсортированного DataFrame.

Понимание параметра na_position в методе .sort_index()

Метод .sort_index() также имеет параметр na_position, который позволяет указывать положение пропущенных значений в отсортированном DataFrame. Если вы хотите, чтобы пропущенные значения были отображены в конце отсортированного DataFrame, установите значение параметра na_position равным "last", например:

df_sorted = df.sort_index(na_position='last')

В этом случае, пропущенные значения будут отображаться в конце отсортированного DataFrame.

Использование методов сортировки для изменения DataFrame

Методы сортировки в pandas также могут изменять исходный DataFrame. Рассмотрим, как это можно сделать.

Использование метода .sort_values() внутри DataFrame

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

df.sort_values(by=['Column1', 'Column2'], inplace=True)

Использование метода .sort_index() внутри DataFrame

Метод .sort_index() также может изменять исходный DataFrame. Для применения сортировки на месте, установите параметр inplace в True:

df.sort_index(inplace=True)

Заключение

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

Теперь, когда вы знаете основы сортировки в pandas, вы можете применять эти методы для эффективного анализа данных в Python.

Click here to get a Python Cheat Sheet