Pandas DataFrame предлагают мощные инструменты для манипулирования данными, а сортировка является фундаментальной операцией. В этой статье рассматривается, как эффективно сортировать DataFrame по одному столбцу, сфокусировавшись на важном методе sort_values()
и его ключевых аргументах: ascending
и na_position
.
Содержание
- Управление порядком сортировки с помощью
ascending
- Обработка пропущенных значений с помощью
na_position
- Сортировка по нескольким столбцам
- Сортировка на месте
Управление порядком сортировки с помощью ascending
Метод sort_values()
обеспечивает простой контроль над направлением сортировки. Аргумент ascending
, который по умолчанию равен True
(по возрастанию), определяет, следует ли сортировать по возрастанию или по убыванию.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'Score': [85, 92, 78, 88]}
df = pd.DataFrame(data)
# Сортировка по возрастанию по столбцу 'Age'
df_ascending = df.sort_values(by='Age')
print("По возрастанию:n", df_ascending)
# Сортировка по убыванию по столбцу 'Age'
df_descending = df.sort_values(by='Age', ascending=False)
print("nПо убыванию:n", df_descending)
Обработка пропущенных значений с помощью na_position
При работе с наборами данных, содержащими пропущенные значения (NaN), аргумент na_position
управляет размещением этих значений в отсортированном столбце. Он принимает два значения:
'first'
(по умолчанию): Размещает значения NaN в начале отсортированного столбца.'last'
: Размещает значения NaN в конце отсортированного столбца.
import pandas as pd
import numpy as np
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [25, 30, np.nan, 28, 22],
'Score': [85, 92, 78, 88, 95]}
df = pd.DataFrame(data)
# Значения NaN сначала
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaN сначала:n", df_na_first)
# Значения NaN в конце
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaN в конце:n", df_na_last)
Сортировка по нескольким столбцам
Вы можете легко расширить это для сортировки по нескольким столбцам, передав список в аргумент by
. Pandas будет сортировать по первому столбцу в списке, затем по второму и так далее.
# Сортировка по Age (по возрастанию), затем по Score (по убыванию)
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("nСортировка по нескольким столбцам:n", df_multi)
Сортировка на месте
По умолчанию sort_values()
возвращает *новый* отсортированный DataFrame. Чтобы изменить DataFrame напрямую, установите аргумент inplace
в True
. Обратите внимание, что это изменяет исходный DataFrame, поэтому будьте осторожны.
df.sort_values(by='Age', inplace=True)
print("nСортировка на месте:n", df)
Понимая и используя эти аргументы, вы можете эффективно и точно сортировать ваши Pandas DataFrame, оптимизируя свой рабочий процесс анализа данных.