Data Analysis

Полное руководство по сортировке DataFrame в Pandas

Spread the love

Pandas DataFrame предлагают мощные инструменты для манипулирования данными, а сортировка является фундаментальной операцией. В этой статье рассматривается, как эффективно сортировать DataFrame по одному столбцу, сфокусировавшись на важном методе sort_values() и его ключевых аргументах: 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, оптимизируя свой рабочий процесс анализа данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *