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

Как использовать sortrows в Python?

[

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

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

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

В конечном итоге, вы узнаете, как:

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

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

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

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

Прежде чем начать работу с методами сортировки pandas, вам потребуется установить библиотеку pandas, если у вас ее еще нет.

pip install pandas

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

import pandas as pd
data = {'Name': ['John', 'Alice', 'Kate', 'Mike'],
'Age': [28, 32, 25, 35],
'City': ['New York', 'Los Angeles', 'Chicago', 'Atlanta']}
df = pd.DataFrame(data)
print(df)

Вывод:

Name Age City
0 John 28 New York
1 Alice 32 Los Angeles
2 Kate 25 Chicago
3 Mike 35 Atlanta

У нас есть DataFrame, состоящий из четырех строк и трех столбцов: Имя, Возраст и Город.

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

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

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

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

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

Вывод:

Name Age City
2 Kate 25 Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

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

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

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

sorted_df = sorted_df.sort_index()
print(sorted_df)

Вывод:

Name Age City
0 John 28 New York
1 Alice 32 Los Angeles
2 Kate 25 Chicago
3 Mike 35 Atlanta

DataFrame снова отсортирован по индексу в порядке возрастания. Метод .sort_index() также не изменяет исходный DataFrame, а возвращает новый DataFrame, отсортированный по индексу.

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

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

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

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

Вывод:

Name Age City
2 Kate 25 Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

DataFrame был отсортирован по столбцу Age в порядке возрастания.

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

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

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

Вывод:

Name Age City
3 Mike 35 Atlanta
1 Alice 32 Los Angeles
0 John 28 New York
2 Kate 25 Chicago

DataFrame был отсортирован по столбцу Age в порядке убывания.

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

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

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

Вывод:

Name Age City
2 Kate 25 Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

DataFrame был отсортирован по столбцу Age с использованием алгоритма сортировки “слиянием”.

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

Теперь давайте рассмотрим, как сортировать DataFrame по нескольким столбцам.

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

sorted_df = df.sort_values(['Age', 'City'])
print(sorted_df)

Вывод:

Name Age City
2 Kate 25 Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

DataFrame был отсортирован сначала по столбцу Age, а затем по столбцу City в порядке возрастания.

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

Когда вы сортируете DataFrame по нескольким столбцам, можно изменить порядок сортировки каждого столбца, задав параметр ascending в виде списка значений True или False.

sorted_df = df.sort_values(['Age', 'City'], ascending=[True, False])
print(sorted_df)

Вывод:

Name Age City
2 Kate 25 Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

DataFrame был отсортирован сначала по столбцу Age в порядке возрастания, а затем по столбцу City в порядке убывания.

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

sorted_df = df.sort_values(['Age', 'City'], ascending=[False, False])
print(sorted_df)

Вывод:

Name Age City
3 Mike 35 Atlanta
1 Alice 32 Los Angeles
0 John 28 New York
2 Kate 25 Chicago

DataFrame был отсортирован сначала по столбцу Age в порядке убывания, а затем по столбцу City в порядке убывания.

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

Теперь рассмотрим, как сортировать DataFrame по его индексу.

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

sorted_df = df.sort_index()
print(sorted_df)

Вывод:

Name Age City
0 John 28 New York
1 Alice 32 Los Angeles
2 Kate 25 Chicago
3 Mike 35 Atlanta

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

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

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

Вывод:

Name Age City
3 Mike 35 Atlanta
2 Kate 25 Chicago
1 Alice 32 Los Angeles
0 John 28 New York

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

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

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

data = {'Name': ['Mike', 'Mike', 'John', 'John'],
'Age': [35, 30, 28, 32],
'City': ['Atlanta', 'Chicago', 'New York', 'Los Angeles']}
df = pd.DataFrame(data)
df.set_index(['Name', 'Age'], inplace=True)
sorted_df = df.sort_index(level=['Name', 'Age'], ascending=[True, False])
print(sorted_df)

Вывод:

City
Name Age
John 32 Los Angeles
28 New York
Mike 35 Atlanta
30 Chicago

DataFrame сортируется по столбцам Name и Age, где сначала сортируется столбец Name в порядке возрастания, а затем сортируется столбец Age в порядке убывания.

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

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

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

Когда вы сортируете столбцы DataFrame, вам необходимо указать ось сортировки. По умолчанию осью являются строки (axis=0), но вы можете изменить ее на столбцы (axis=1).

sorted_df = df.sort_index(axis=1)
print(sorted_df)

Вывод:

City Name
0 New York John
1 Los Angeles John
2 Chicago Mike
3 Atlanta Mike

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

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

Вы также можете использовать метки столбцов для сортировки DataFrame.

sorted_df = df.sort_values(by='City', axis=1)
print(sorted_df)

Вывод:

City Name
0 New York John
1 Los Angeles John
2 Chicago Mike
3 Atlanta Mike

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

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

Когда вы сортируете данные в pandas, может возникнуть случай, когда у вас есть отсутствующие данные (NaN). Методы сортировки pandas справляются с отсутствующими данными, помещая их в конец или в начало списка в зависимости от параметра na_position.

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

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

По умолчанию, параметр na_position равен last, что означает, что отсутствующие данные будут помещены в конец списка.

data = {'Name': ['John', 'Alice', 'Kate', 'Mike'],
'Age': [28, 32, None, 35],
'City': ['New York', 'Los Angeles', 'Chicago', 'Atlanta']}
df = pd.DataFrame(data)
sorted_df = df.sort_values('Age')
print(sorted_df)

Вывод:

Name Age City
0 John 28.0 New York
1 Alice 32.0 Los Angeles
3 Mike 35.0 Atlanta
2 Kate NaN Chicago

Отсутствующие данные возраста (Kate) помещаются в конец списка, так как находятся в последней строке.

Чтобы поместить отсутствующие данные в начало списка, установите параметр na_position равным first.

sorted_df = df.sort_values('Age', na_position='first')
print(sorted_df)

Вывод:

Name Age City
2 Kate NaN Chicago
0 John 28.0 New York
1 Alice 32.0 Los Angeles
3 Mike 35.0 Atlanta

Отсутствующие данные возраста (Kate) помещаются в начало списка перед остальными строками.

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

Метод .sort_index() также имеет параметр na_position, который можно использовать для управления позицией отсутствующих данных при сортировке по индексу.

По умолчанию, параметр na_position равен last.

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

Вывод:

Name Age City
0 John 28 New York
1 Alice 32 Los Angeles
2 Kate NaN Chicago
3 Mike 35 Atlanta

Отсутствующие данные (Kate) расположены в конце списка после остальных строк.

Для помещения отсутствующих данных в начало списка, установите параметр na_position равным first.

sorted_df = df.sort_index(ascending=True, na_position='first')
print(sorted_df)

Вывод:

Name Age City
2 Kate NaN Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

Отсутствующие данные (Kate) расположены в начале списка перед остальными строками.

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

Когда вы используете методы сортировки pandas, они возвращают новые отсортированные DataFrame, оставляя исходный DataFrame без изменений. Однако, если вы хотите изменить исходный DataFrame, вы можете использовать параметр inplace, установленный в True.

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

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

Вывод:

Name Age City
2 Kate NaN Chicago
0 John 28 New York
1 Alice 32 Los Angeles
3 Mike 35 Atlanta

Исходный DataFrame был отсортирован по возрасту на месте.

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

df.sort_index(inplace=True)
print(df)

Вывод:

Name Age City
0 John 28 New York
1 Alice 32 Los Angeles
2 Kate NaN Chicago
3 Mike 35 Atlanta

Исходный DataFrame был отсортирован по индексу на месте.

Заключение

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

Сортировка данных в DataFrame - это важный навык для выполнения анализа данных, и методы сортировки pandas предоставляют вам все необходимые инструменты для эффективной сортировки и манипулирования данными в Python.