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

Как сортировать столбцы в DataFrame?

[

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

Введение

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

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

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

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

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

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

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

  1. Используя списки Python
  2. Используя словари Python
  3. Используя файл CSV

1. Использование списков Python

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 41]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)

Вывод:

Name Age
0 Alice 28
1 Bob 35
2 Charlie 41

2. Использование словарей Python

import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [28, 35, 41]}
df = pd.DataFrame(data)
print(df)

Вывод:

Name Age
0 Alice 28
1 Bob 35
2 Charlie 41

3. Использование файла CSV

import pandas as pd
df = pd.read_csv('data.csv')
print(df)

Вывод:

Name Age
0 Alice 28
1 Bob 35
2 David 41

Теперь у нас есть DataFrame и мы можем приступить к использованию методов сортировки.

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

Один из наиболее распространенных методов сортировки в pandas - это .sort_values(). Он позволяет сортировать DataFrame по значениям одного или нескольких столбцов.

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

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_values('Age')
print(sorted_df)

Вывод:

Name Age
2 Charlie 24
0 Alice 28
1 Bob 35

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

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_values('Age', ascending=False)
print(sorted_df)

Вывод:

Name Age
1 Bob 35
0 Alice 28
2 Charlie 24

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

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_values('Age', kind='mergesort')
print(sorted_df)

Вывод:

Name Age
2 Charlie 24
0 Alice 28
1 Bob 35

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

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

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_index()
print(sorted_df)

Вывод:

Name Age
0 Alice 28
1 Bob 35
2 Charlie 24

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_index(ascending=False)
print(sorted_df)

Вывод:

Name Age
2 Charlie 24
1 Bob 35
0 Alice 28

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

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
index = pd.MultiIndex.from_tuples([('A', 1), ('B', 2), ('A', 2)])
df = pd.DataFrame(data, columns=['Name', 'Age'], index=index)
sorted_df = df.sort_index(level='A')
print(sorted_df)

Вывод:

Name Age
A 1 Alice 28
2 Charlie 24
B 2 Bob 35

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

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

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

Axis 0 означает сортировку по строкам, а axis 1 - по столбцам. По умолчанию, метод .sort_values() использует axis=0, то есть сортирует строки.

import pandas as pd
data = [['Alice', 28, 'F'], ['Bob', 35, 'M'], ['Charlie', 24, 'M']]
df = pd.DataFrame(data, columns=['Name', 'Age', 'Gender'])
sorted_df = df.sort_values('Name', axis=1)
print(sorted_df)

Вывод:

Age Name Gender
0 28 Alice F
1 35 Bob M
2 24 Charlie M

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

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

import pandas as pd
data = [['Alice', 28, 'F'], ['Bob', 35, 'M'], ['Charlie', 24, 'M']]
df = pd.DataFrame(data, columns=['Name', 'Age', 'Gender'])
sorted_df = df.sort_values(by='Name')
print(sorted_df)

Вывод:

Name Age Gender
0 Alice 28 F
1 Bob 35 M
2 Charlie 24 M

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

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

Размещение отсутствующих значений в методе .sort_values()

import pandas as pd
import numpy as np
data = [['Alice', np.nan], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_values('Age', na_position='first')
print(sorted_df)

Вывод:

Name Age
0 Alice NaN
2 Charlie 24
1 Bob 35

Размещение отсутствующих значений в методе .sort_index()

import pandas as pd
import numpy as np
data = [['Alice', np.nan], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
sorted_df = df.sort_index(na_position='last')
print(sorted_df)

Вывод:

Name Age
0 Alice NaN
1 Bob 35
2 Charlie 24

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

.sort_values() и .sort_index() могут быть использованы для изменения DataFrame.

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

inplace=True позволяет изменять DataFrame на месте, без создания копии.

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
df.sort_values('Age', inplace=True)
print(df)

Вывод:

Name Age
2 Charlie 24
0 Alice 28
1 Bob 35

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

import pandas as pd
data = [['Alice', 28], ['Bob', 35], ['Charlie', 24]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
df.sort_index(inplace=True)
print(df)

Вывод:

Name Age
0 Alice 28
1 Bob 35
2 Charlie 24

Заключение

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

Если у вас возникли вопросы или трудности, не стесняйтесь обращаться за помощью к сообществу Python-разработчиков. Удачи в вашем путешествии в анализ данных с помощью pandas!