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

Как легко отсортировать фрейм данных по столбцу?

[

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

Изучение методов сортировки pandas - отличный способ начать использовать или практиковаться в основах анализа данных с помощью Python. В основном анализ данных выполняется с использованием электронных таблиц, SQL или pandas. Одним из преимуществ использования pandas является его способность обрабатывать большие объемы данных и предоставлять высокопроизводительные возможности манипулирования данными.

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

По завершении этого руководства вы узнаете, как:

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

Бесплатный бонус: Нажмите здесь, чтобы получить шпаргалку по Python, и изучите основы Python 3, такие как работа с типами данных, словари, списки и функции Python.

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

Как быстрое напоминание, DataFrame - это двумерная структура данных, представляющая собой таблицу с индексами строк и столбцов. Он имеет множество встроенных методов, которые облегчают манипуляцию данными в таблице.

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

Подготовка датасета

import pandas as pd
data = {
"Name": ["John", "Alice", "Bob", "David", "Eve"],
"Age": [25, 32, 18, 40, 29],
"Salary": [50000, 80000, 35000, 60000, 70000]
}
df = pd.DataFrame(data)
print(df)

Результат выполнения кода:

NameAgeSalary
John2550000
Alice3280000
Bob1835000
David4060000
Eve2970000

Это простой датасет, состоящий из столбцов “Name”, “Age” и “Salary”. Теперь у нас есть данные, с которыми мы можем работать.

Ознакомление с .sort_values()

.sort_values() - функция pandas, позволяющая сортировать значения в DataFrame по одному или нескольким столбцам. По умолчанию сортировка происходит в порядке возрастания.

sorted_df = df.sort_values("Age")
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
1Alice3280000
3David4060000

Мы использовали sort_values() для сортировки данных по столбцу “Age”. Как видно из результата, данные теперь отсортированы по возрастанию значения столбца “Age”.

Ознакомление с .sort_index()

.sort_index() - функция pandas, позволяющая сортировать DataFrame по его индексу. Она может использоваться как для сортировки в порядке возрастания, так и для сортировки в порядке убывания.

sorted_df = df.sort_index(ascending=False)
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
4Eve2970000
3David4060000
2Bob1835000
1Alice3280000
0John2550000

Мы использовали sort_index() для сортировки данных в порядке убывания. Каждая строка перемещается в соответствии с ее индексом.

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

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

Выше мы уже рассмотрели пример с сортировкой данных по столбцу “Age”. Давайте рассмотрим более подробно этот пример.

sorted_df = df.sort_values("Age")
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
1Alice3280000
3David4060000

Мы использовали sort_values() для сортировки данных по столбцу “Age”. По умолчанию данные сортируются в порядке возрастания.

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

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

sorted_df = df.sort_values("Age", ascending=False)
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
3David4060000
1Alice3280000
4Eve2970000
0John2550000
2Bob1835000

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

.sort_values() использует алгоритм быстрой сортировки (quicksort) по умолчанию. Однако, если ваш DataFrame содержит большое количество данных и вам требуется оптимизировать производительность, вы можете выбрать другой алгоритм сортировки, такой как сортировка слиянием (mergesort) или сортировка кучей (heapsort).

sorted_df = df.sort_values("Age", kind="mergesort")
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
1Alice3280000
3David4060000

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

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

Чтобы отсортировать DataFrame по нескольким столбцам, вы можете передать список столбцов в .sort_values(). Порядок столбцов в списке определяет порядок сортировки. В следующем примере мы сначала сортируем данные по столбцу “Age”, а затем по столбцу “Salary”.

sorted_df = df.sort_values(["Age", "Salary"])
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
3David4060000
1Alice3280000

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

.sort_values() также позволяет изменять порядок сортировки столбцов, используя параметр ascending.

sorted_df = df.sort_values(["Age", "Salary"], ascending=[False, True])
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
3David4060000
1Alice3280000
4Eve2970000
0John2550000
2Bob1835000

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

Вы также можете сортировать DataFrame по нескольким столбцам в порядке убывания, установив ascending на False.

sorted_df = df.sort_values(["Age", "Salary"], ascending=[False, False])
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
1Alice3280000
3David4060000

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

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

sorted_df = df.sort_values(["Age", "Salary"], ascending=[True, False])
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
3David4060000
1Alice3280000

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

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

.sort_index() позволяет сортировать DataFrame по его индексу. Используется алгоритм быстрой сортировки (quicksort) по умолчанию.

sorted_df = df.sort_index()
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
0John2550000
1Alice3280000
2Bob1835000
3David4060000
4Eve2970000

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

sorted_df = df.sort_index(ascending=False)
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
4Eve2970000
3David4060000
2Bob1835000
1Alice3280000
0John2550000

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

.sort_index() также предлагает возможность работать с продвинутыми концепциями индексации:

  • level - для многомерного индекса можно указать уровень, по которому осуществляется сортировка.
  • sort_remaining - если в DataFrame есть иерархический индекс, этот параметр определяет, должны ли оставшиеся уровни индекса быть отсортированы.
  • kind - можно выбрать алгоритм сортировки: quicksort, mergesort или heapsort.

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

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

Сортировка DataFrame по столбцам происходит с помощью параметра axis. По умолчанию сортировка происходит по строкам (axis=0). Чтобы выполнить сортировку по столбцам, установите axis=1.

sorted_df = df.sort_values(["Age"], axis=1)
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
John2550000
Alice3280000
Bob1835000
David4060000
Eve2970000

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

Вы также можете использовать метки столбцов для сортировки. Передайте метки столбцов в качестве списка в.sort_values(), а затем установите параметр axis=1.

sorted_df = df.sort_values(["Salary", "Age"], axis=1)
print(sorted_df)

Результат выполнения кода:

SalaryAgeName
5000025John
8000032Alice
3500018Bob
6000040David
7000029Eve

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

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

.sort_values() также позволяет работать с отсутствующими данными при сортировке. Параметр na_position определяет, в каком порядке будут отображаться отсутствующие данные. По умолчанию na_position='last', что означает, что отсутствующие данные будут отображаться в конце отсортированного DataFrame.

sorted_df = df.sort_values(["Age", "Salary"], na_position="first")
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
1Alice3280000
3David4060000

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

.sort_index() также позволяет работать с отсутствующими данными при сортировке. Параметр na_position определяет, в каком порядке будут отображаться отсутствующие данные. По умолчанию na_position='last', что означает, что отсутствующие данные будут отображаться в конце отсортированного DataFrame.

sorted_df = df.sort_index(ascending=False, na_position="first")
print(sorted_df)

Результат выполнения кода:

NameAgeSalary
4Eve2970000
3David4060000
2Bob1835000
1Alice3280000
0John2550000

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

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

.sort_values() также позволяет изменять DataFrame на месте с помощью параметра inplace. По умолчанию inplace=False, что означает, что изменения не вносятся в исходный DataFrame, а новый DataFrame возвращается в качестве результата. Для внесения изменений на месте установите inplace=True.

df.sort_values("Age", inplace=True)
print(df)

Результат выполнения кода:

NameAgeSalary
2Bob1835000
0John2550000
4Eve2970000
1Alice3280000
3David4060000

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

.sort_index() также позволяет изменять DataFrame на месте с помощью параметра inplace. По умолчанию inplace=False, что означает, что изменения не вносятся в исходный DataFrame, а новый DataFrame возвращается в качестве результата. Для внесения изменений на месте установите inplace=True.

df.sort_index(ascending=False, inplace=True)
print(df)

Результат выполнения кода:

NameAgeSalary
4Eve2970000
3David4060000
2Bob1835000
1Alice3280000
0John2550000

Заключение

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

Теперь вы можете с легкостью сортировать данные в DataFrame с помощью pandas и использовать эти методы для выполнения анализа данных и других задач, связанных с обработкой больших объемов данных.

Если вы хотите углубить свои знания в сортировке данных с помощью pandas, рекомендуем пройти видео-курс Sorting Data in Python With pandas.

Надеемся, что этот руководство поможет вам стать более уверенным в использовании методов сортировки pandas при работе с данными в Python!