В анализе данных часто возникает необходимость упорядочивания информации. В Pandas для этой задачи предназначен метод sort_values()
, позволяющий легко и быстро сортировать данные по одному или нескольким столбцам.
Для начала создадим простой DataFrame:
import pandas as pd
data = {
'Name': ['Anna', 'Mike', 'Lucy', 'John', 'Jack'],
'Age': [25, 21, 23, 29, 20],
'Salary': [50000, 55000, 52000, 60000, 49000]
}
df = pd.DataFrame(data)
Для сортировки по столбцу Age:
sorted_df = df.sort_values(by='Age')
print(sorted_df)
# Name Age Salary
# 4 Jack 20 49000
# 1 Mike 21 55000
# 2 Lucy 23 52000
# 0 Anna 25 50000
# 3 John 29 60000
С помощью аргумента ascending
можно указать направление сортировки:
sorted_df = df.sort_values(by='Age', ascending=False)
print(sorted_df)
# Name Age Salary
# 3 John 29 60000
# 0 Anna 25 50000
# 2 Lucy 23 52000
# 1 Mike 21 55000
# 4 Jack 20 49000
Если необходимо упорядочить данные сначала по одному столбцу, а затем по другому:
sorted_df = df.sort_values(by=['Age', 'Salary'], ascending=[True, False])
print(sorted_df)
# Name Age Salary
# 4 Jack 20 49000
# 1 Mike 21 55000
# 2 Lucy 23 52000
# 0 Anna 25 50000
# 3 John 29 60000
Здесь данные сначала сортируются по возрасту (Age), а затем по зарплате (Salary) в обратном порядке внутри каждой возрастной группы.
Если нужно упорядочить строки по их индексам:
sorted_df = df.sort_index(ascending=False)
print(sorted_df)
# Name Age Salary
# 4 Jack 20 49000
# 3 John 29 60000
# 2 Lucy 23 52000
# 1 Mike 21 55000
# 0 Anna 25 50000
Пропущенные значения NaN
всегда считаются наибольшими, независимо от направления сортировки:
df['Salary'][2] = None
sorted_df = df.sort_values(by='Salary')
Тут NaN
будет последним значением в отсортированной колонке Salary.
Если вы хотите изменить исходный DataFrame, используйте параметр inplace
:
df.sort_values(by='Age', inplace=True)
Вы можете комбинировать sort_values()
с key
для сортировки с помощью пользовательской функции:
sorted_df = df.sort_values(by='Name', key=lambda x: x.str.len())
Вы можете комбинировать столбцы и направления сортировки, чтобы получить более сложную сортировку. Например, сортируйте по возрасту в порядке возрастания, но по зарплате в порядке убывания:
sorted_df = df.sort_values(by=['Age', 'Salary'], ascending=[True, False])
При работе с текстовыми данными, важно учитывать регистр символов. По умолчанию, сортировка будет учитывать регистр:
data = {'Name': ['apple', 'Banana', 'cherry', 'Apple', 'banana']}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Name')
В результате строки будут упорядочены с учетом регистра символов. Чтобы игнорировать регистр при сортировке, можно применить метод str.lower
к столбцу перед сортировкой.
Pandas также позволяет корректно сортировать столбцы с датами:
data = {
'Date': ['2023-01-01', '2021-03-05', '2022-05-10', '2021-11-11']
}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])
sorted_df = df.sort_values(by='Date')
print(sorted_df)
# Date
# 1 2021-03-05
# 3 2021-11-11
# 2 2022-05-10
# 0 2023-01-01
После преобразования столбца с датами с помощью pd.to_datetime
, вы можете легко сортировать данные по датам.
Метод sort_values()
в Pandas – это интуитивно понятный и мощный инструмент, который позволяет сортировать данные различных типов. Важно знать его основные возможности и особенности применения для эффективного анализа данных.
Содержание: