Хорошо сортировать данные при
pandas.DataFrame.sort_values(by, axis, ascending, inplace, kind, na_position, …)
DataFrame pandas. Если в DataFrame есть какие-либо пропущенные значения, мы можем поместить все записи с отсутствующими значениями в начало или конец DataFrame. В этом руководстве мы рассмотрим, как сортировать DataFrame pandas с помощью функции pandas.DataFrame.sort_values. Каждый параметр, который мы собираемся передать в эту функцию, будет подробно рассмотрен на примере.
pandas.DataFrame.sort_values
pandas.DataFrame.sort_values используется для сортировки DataFrame по значениям вдоль любой оси (строки или столбцы).
Синтаксис :
Давайте посмотрим синтаксис этой функции и передаваемых ей параметров.
pandas.DataFrame.sort_values(by, axis, ascending, inplace, kind, na_position, …)
Параметры:
Параметр byявляется обязательным и принимает имя столбца, так что записи в DataFrame pandas будут отсортированы на основе значений этого столбца. Мы также можем передать несколько столбцов через список.
2. Параметр оси, по умолчанию установленный на 0 (индекс), определяет ось. Параметр byможет принимать уровни столбцов и/или метки индексов, если axis=1. Примите уровни индекса и/или метки столбцов, если axis=0.
3. Записи в DataFrame pandas по умолчанию сортируются по возрастанию, если не указан параметр возрастания. Установите для этого параметра значение False, если вы хотите отсортировать записи в порядке убывания.
4. DataFrame сортируется на месте, если для параметра inplace установлено значение True. В противном случае по умолчанию это значение False.
5. Записи в DataFrame pandas по умолчанию сортируются на основе алгоритма быстрой сортировки. Вы также можете указать любой из этих алгоритмов — сортировку слиянием, пирамидальную сортировку, стабильный — для сортировки записей.
6. По умолчанию недостающие значения (None/NaN) в DataFrame pandas помещаются в конец DataFrame. Можно включить все записи, содержащие пропущенные значения, с помощью параметра na_position, установив для него значение «first».
Пример 1: По параметру
Создайте DataFrame pandas, связанный с «campaign_data», с пятью записями и отсортируйте записи в DataFrame на основе столбцов.
import pandas
campaign_data = [[‘Java related’,‘Webinar’,‘Completed’,25000],
[‘Java related’,‘Conference’,‘Completed’,5000],
[‘Python Bootcamp’,‘Webinar’,‘Planned’,2000],
[‘Tutorial camp’,‘Webinar’,‘In-Progress’,1000],
[‘Services’,‘Trade-Show’,‘Completed’,2000]]df_from_campaign_data = pandas.DataFrame(campaign_data,columns=[‘Campaign_Name’,‘Type’,‘Status’,‘Budget’])
# Single Column
print(df_from_campaign_data.sort_values(by=«Campaign_Name»),«\n«)# Multiple columns
print(df_from_campaign_data.sort_values(by=[«Campaign_Name»,«Type»]))
Выход
1. В первом выводе DataFrame сортируется на основе данных, присутствующих в столбце «Campaign_Name».
2. Во втором выводе DataFrame сортируется на основе данных, представленных в столбцах «Campaign_Name» и «Type».
Пример 2: Возрастающий параметр
Используйте приведенный выше DataFrame pandas и отсортируйте записи на основе столбца «Тип» в порядке возрастания и убывания.
import pandas
campaign_data = [[‘Java related’,‘Conference’,‘Completed’,25000],
[‘Sales camp’,‘Conference’,‘Completed’,5000],
[‘Python Bootcamp’,‘Webinar’,‘Planned’,2000],
[‘Tutorial camp’,‘Webinar’,‘In-Progress’,1000],
[‘Services’,‘Trade-Show’,‘Completed’,2000]]df_from_campaign_data = pandas.DataFrame(campaign_data,columns=[‘Campaign_Name’,‘Type’,‘Status’,‘Budget’])
# Ascending Order
print(df_from_campaign_data.sort_values(by=‘Type’,ascending = True),«\n«)# Descending Order
print(df_from_campaign_data.sort_values(by=‘Type’,ascending = False))
Выход
В первом выводе DataFrame сортируется в порядке возрастания на основе столбца «Тип», а во втором выводе DataFrame сортируется в порядке убывания на основе столбца «Тип».
Пример 3: заменить параметр
Используйте приведенный выше DataFrame pandas и отсортируйте записи на основе столбца «Бюджет», как с использованием параметра inplace, так и без него.
import pandas
campaign_data = [[‘Java related’,‘Conference’,‘Completed’,25000],
[‘Sales camp’,‘Conference’,‘Completed’,5000],
[‘Python Bootcamp’,‘Webinar’,‘Planned’,2000],
[‘Tutorial camp’,‘Webinar’,‘In-Progress’,1000],
[‘Services’,‘Trade-Show’,‘Completed’,2000]]df_from_campaign_data = pandas.DataFrame(campaign_data,columns=[‘Campaign_Name’,‘Type’,‘Status’,‘Budget’])
# inplace =False
df_from_campaign_data.sort_values(by=‘Budget’,inplace =False)
print(df_from_campaign_data,«\n«)# inplace =True
df_from_campaign_data.sort_values(by=‘Budget’,inplace =True)
print(df_from_campaign_data)
Выход
1. В первом выводе, когда для inplace установлено значение False, существующий DataFrame не обновляется и возвращается фактический DataFrame.
2. Во втором выводе, когда для параметра inplace установлено значение True, DataFrame сортируется на основе значений в столбце «Бюджет» в порядке возрастания.
Пример 4: Вид параметра
Сортируйте записи в DataFrame с помощью быстрой сортировки, пирамидальной сортировки, стабильной сортировки и сортировки слиянием. Передайте эти алгоритмы сортировки один за другим в параметр kind.
import pandas
campaign_data = [[‘Java related’,‘Conference’,‘Completed’,25000],
[‘Sales camp’,‘Conference’,‘Completed’,5000],
[‘Python Bootcamp’,‘Webinar’,‘Planned’,2000],
[‘Tutorial camp’,‘Webinar’,‘In-Progress’,1000],
[‘Services’,‘Trade-Show’,‘Completed’,2000]]df_from_campaign_data = pandas.DataFrame(campaign_data,columns=[‘Campaign_Name’,‘Type’,‘Status’,‘Budget’])
# quicksort
print(df_from_campaign_data.sort_values(by=‘Budget’,kind=‘quicksort’),«\n«)# mergesort
print(df_from_campaign_data.sort_values(by=‘Budget’,kind=‘mergesort’),«\n«)# heapsort
print(df_from_campaign_data.sort_values(by=‘Budget’,kind=‘heapsort’),«\n«)# stable
print(df_from_campaign_data.sort_values(by=‘Budget’,kind=‘stable’))
Выход
Пример 5: параметр na_position
1. Поместите все записи с пропущенными значениями в столбец «Бюджет» в конце (na_position = ’last’).
2. Поместите все записи с пропущенными значениями в столбец «Бюджет» в начало (na_position = ’first’).
import pandas
campaign_data = [[None,‘Conference’,None,25000],
[‘Sales camp’,‘Conference’,‘Completed’,5000],
[‘Python Bootcamp’,‘Webinar’,‘Planned’,None],
[‘Tutorial camp’,‘Webinar’,‘In-Progress’,None],
[‘Services’,‘Trade-Show’,‘Completed’,2000]]df_from_campaign_data = pandas.DataFrame(campaign_data,columns=[‘Campaign_Name’,‘Type’,‘Status’,‘Budget’])
# Place all the records at last with missing values present in the Budget column.
print(df_from_campaign_data.sort_values(by=‘Budget’,na_position =‘last’),«\n«)# Place all the records at first with missing values present in the Budget column.
print(df_from_campaign_data.sort_values(by=‘Budget’,na_position =‘first’))
Выход
В столбце «Бюджет» отсутствуют два значения. Итак, соответствующие записи размещаются последними, а во втором выводе эти две записи помещаются первыми.
Заключение
Мы обсудили, как сортировать значения, присутствующие в DataFrame pandas, с помощью pandas.DataFrame.sort_values. Он используется для сортировки DataFrame по значениям по любой оси (строкам или столбцам). Все параметры обсуждаются с фрагментами кода и выводом. Обычно во всех примерах используется один DataFrame с пятью записями и четырьмя столбцами, чтобы лучше понять концепцию.