Как отсортировать датафрейм по столбцу
Сортировка фрейма данных в Python – Шаг за шагом
Эй, читатели! В этой статье мы подробно остановимся на сортировке фрейма данных в Python. Итак, давайте начнем!
Эй, читатели! В этой статье мы подробно остановимся на Сортировке фрейма данных в Python. Итак, давайте начнем!
Сортировка фрейма данных с помощью функции sort_values()
Модуль Python Pandas предоставляет нам различные функции для работы с большими записями данных. Имея дело с записями данных в терминах фреймов данных, мы часто сталкиваемся с ситуациями, когда нам нужно отсортировать данные и представить выходные данные.
Это когда, Питон pandas.dataframe.sort_values() функция входит в картину.
Функция sort_values () сортирует данные в порядке возрастания или убывания настроенным образом.
Давайте теперь сосредоточимся на структуре функции в следующем разделе.
Синтаксис функции sort_values() в Python
Взгляните на приведенный ниже синтаксис!
Давайте теперь сосредоточимся на реализации функции sort_values() в следующем разделе.
Пример кода для сортировки фрейма данных в Python
В приведенном ниже примере мы отсортировали вышеупомянутый фрейм данных по двум столбцам- ” EE ” и “AA”, как показано ниже.
Как видно ниже, фрейм данных сортируется по столбцам ” EE ” и ” AA ” соответственно в порядке возрастания.
Вывод
На этом мы подошли к концу этой темы. Мы поняли функционирование функции sort_values() для сортировки фреймов данных.
Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы. Для получения дополнительных сообщений, связанных с Python, следите за обновлениями и продолжайте учиться!
9 первоклассных функций Pandas Python для работы с данными
Pandas — одна из наиболее востребованных библиотек Python в повседневной работе с данными. Подобно Numpy она царствует в таких областях программирования, как наука о данных, МО, ИИ, опираясь на свои многочисленные искусно созданные методы, атрибуты и функции. Изо дня в день анализируя данные, мы сталкиваемся с разными незаурядными ситуациями, решения которых находятся сокровищнице встроенного API Pandas и реализуются посредством краткого и качественного кода.
В статье я поделюсь простыми, но очень эффективными приемами, которые превратят процесс программирования в удовольствие. Именно благодаря этим первоклассным функциям Pandas так полюбилась ученым по данным и инженерам МО.
Нижепредставленный датафрейм позволит прояснить ряд концепций, в других же примерах обойдемся без вспомогательных средств.


1. Сортировка данных по убыванию и возрастанию
В Pandas есть встроенная функция sort_values() для сортировки значений столбца или индекса в порядке возрастания или убывания. Отсортируем столбцы разными способами: один в порядке возрастания, а другой — убывания.
В следующем примере столбец “Continent” отсортирован по возрастанию, а “City Population” — по убыванию (второй уровень сортировки работает с соответствующими значениями первого уровня).


Аналогичным способом можно создать больше уровней сортировки, перечислив в одном списке имена столбцов, а в другом — соответствующий порядок. Используйте ключевые слова “ by ” и “ ascending ”, как показано ниже (имя каждого столбца в первом списке соотносится с порядком сортировки во втором).

2. shift() для смещения данных
Допустим, ситуация требует сместить все строки в датафрейме или отобразить в нем цену акций предыдущего дня. Перед нами может стоять задача вывести среднюю температуру последних трех дней. Так вот shift() идеально подходит для всех этих целей.
Данная функция в Pandas сдвигает индекс на желаемое число периодов. Она принимает скалярный параметр под названием период, который представляет число сдвигов по требуемой оси. shift() пригодится для работы с данными временных рядов. Можно воспользоваться fill_value для заполнения за пределами граничных значений.

При необходимости вывести цену акций предыдущего дня в новом столбце применяем shift() следующим образом:
Мы можем легко вычислить среднюю цену акций за три последних дня и создать новый столбец, как показано ниже:
Датафрейм приобретает такой вид:
Можно пойти дальше и получить значение из следующего временного интервала или ряда:
В этом случае датафрейм будет выглядеть так:
Более подробная информация о данной функции доступна в документации Pandas.
3. Добавление нового столбца в заданном месте датафрейма
С помощью Pandas мы довольно часто создаем новые столбцы для датафрейма. По умолчанию каждый такой столбец добавляется к нему с конца. Создадим новый столбец со значениями плотности населения для представленных в датафрейме городов (“City Population” / “City Area”). Новое поле по умолчанию будет выглядеть так:


4. value_counts() для нахождения уникальных значений
Функция Pandas value_counts() возвращает объект, содержащий число уникальных значений. Полученный объект можно отсортировать по убыванию или возрастанию, включая или исключая NA посредством управления параметрами. Данная функция применяется с индексом или сериями Pandas.

Ниже представлен пример серии:
Можно воспользоваться опцией bin вместо подсчета уникальных значений и разделить индекс в указанном количестве полуоткрытых интервалов.
Более подробная информация о данной функции представлена в документации Pandas.
5. Выбор столбца на основе типа данных
Сначала с помощью встроенного атрибута dtypes выясним, какие типы данных присутствуют в датафрейме.


Также можно воспользоваться exclude для выбора всех типов данных, кроме исключенных. Например, в этом примере уберем все типы данных object :

Исключение или включение нескольких типов данных происходит посредством списка. Помимо этого, допускаются комбинации этих операций.
6. mask() для условия if-else

Обратимся к датафрейму, в котором нужно изменить знак всех элементов, кратных двум без остатка.

Более подробная информация о данном методе предоставлена в документации Pandas.
7. Фильтрация столбцов на основе частичного совпадения

Далее рассмотрим примеры, в которых мы получаем требуемые результаты:

8. nlargest() для определения наибольших значений
Зачастую требуется найти три наибольших или пять наименьших значений в сериях или датафрейме (например, трех лучших студентов с их суммарным баллом или трех худших кандидатов с общим числом голосов, полученных на выборах).
Далее следует пример, отображающий 3 наибольших значения высоты в датафрейме из 10 имеющихся результатов измерения:

При наличии повторяющихся значений опции first , last , all помогают выбрать нужные (по умолчанию first ). Оставим все три полученных варианта и попробуем найти 2 наибольших значения высоты, как показано в примерах:

Оставляем последнее значение с конца:
Оставляем первое полученное значение:
С более подробной информацией о данной функции можно ознакомиться в документации Pandas.
9. nsmallest()
nsmallest() работает аналогичным образом, но только в отношении наименьших значений. В следующих примерах найдем 2 наименьших значения веса:
Документация Pandas содержит более подробную информацию о данной функции.
Заключение
Рассмотренные функции Pandas отличаются не только эффективностью, но также содержательностью, простой и краткостью. С течением лет API Pandas подвергся серьезной доработке и теперь предоставляет множество встроенных функций, требующих немало строк кода, или лямбда-функций для выполнения требуемых операций с данными. Надеюсь, материал был вам полезен.
Основы Pandas №3 // Важные методы форматирования данных
Примечание: это руководство, поэтому рекомендуется самостоятельно писать код, повторяя инструкции!
Merge в pandas («объединение» Data Frames)
В реальных проектах данные обычно не хранятся в одной таблице. Вместо нее используется много маленьких. И на то есть несколько причин. С помощью нескольких таблиц данными легче управлять, проще избегать «многословия», можно экономить место на диске, а запросы к таблицам обрабатываются быстрее.
Теперь нужно объединить два эти Data Frames в один. Чтобы получилось нечто подобное:
В этой таблице можно проанализировать, например, сколько животных в зоопарке едят мясо или овощи.
Как делается merge?
Теперь пришло время метода merge:
(А где же все львы? К этому вернемся чуть позже).
Это было просто, не так ли? Но стоит разобрать, что сейчас произошло:
Это то же самое, что и:
Разница будет лишь в порядке колонок в финальной таблице.
Способы объединения: inner, outer, left, right
Базовый метод merge довольно прост. Но иногда к нему нужно добавить несколько параметров.
Один из самых важных вопросов — как именно нужно объединять эти таблицы. В SQL есть 4 типа JOIN.
В случае с merge в pandas в теории это работает аналогичным образом.
При выборе INNER JOIN (вид по умолчанию в SQL и pandas) объединяются только те значения, которые можно найти в обеих таблицах. В случае же с OUTER JOIN объединяются все значения, даже если некоторые из них есть только в одной таблице.
В этот раз львы и жирафы вернулись. Но поскольку вторая таблица не предоставила конкретных данных, то вместо значения ставится пропуск ( NaN ).
Теперь в таблице есть вся необходимая информация, и ничего лишнего. how = ‘left’ заберет все значения из левой таблицы ( zoo ), но из правой ( zoo_eats ) использует только те значения, которые есть в левой.
Еще раз взглянем на типы объединения:
Примечание: «Какой метод merge является самым безопасным?» — самый распространенный вопрос. Но на него нет однозначного ответа. Нужно решать в зависимости от конкретной задачи.
Merge в pandas. По какой колонке?
Например, последний merge мог бы выглядеть следующим образом:
Примечание: в примере pandas автоматически нашел ключевые колонки, но часто бывает так, что этого не происходит. Поэтому о left_on и right_on не стоит забывать.
Merge в pandas — довольно сложный метод, но остальные будут намного проще.
Сортировка в pandas
Сортировка необходима. Базовый метод сортировки в pandas совсем не сложный. Функция называется sort_values() и работает она следующим образом:
Единственный используемый параметр — название колонки, water_need в этом случае. Довольно часто приходится сортировать на основе нескольких колонок. В таком случае для них нужно использовать ключевое слово by :
sort_values сортирует в порядке возрастания, но это можно поменять на убывание:
reset_index()
Заметили ли вы, какой беспорядок теперь в нумерации после последней сортировки?
Это не просто выглядит некрасиво… неправильная индексация может испортить визуализации или повлиять на то, как работают модели машинного обучения.
Можно заметить, что новый DataFrame также хранит старые индексы. Если они не нужны, их можно удалить с помощью параметра drop=True в функции:
Fillna
Примечание: fillna — это слова fill( заполнить) и na(не доступно).
Запустим еще раз метод left-merge:
Проверьте себя
Примечание: в этом наборе хранятся данные из блога о путешествиях. Загрузить его можно здесь. Или пройти весь процесс загрузки, открытия и установки из первой части руководства pandas.
Набор article_read показывает всех пользователей, которые читают блог, а blog_buy — тех, купил что-то в этом блоге за период с 2018-01-01 по 2018-01-07.
Решение задания №1
Средний доход — 1,0852
Для вычисления использовался следующий код:
Примечание: шаги использовались, чтобы внести ясность. Описанные функции можно записать и в одну строку.`
Решение задания №2
Найдите топ-3 страны на скриншоте.
Итого
Сортировка фреймов данных в пандах
Дата публикации Oct 16, 2019
Многие начинающие исследователи данных пытаются отсортировать свои фреймы данных, написав сложные функции. Это не самый эффективный или простой способ сделать это. Не изобретайте колесо и не используйте функцию sort_values (), предоставляемую пакетом pandas. Давайте посмотрим на реальный пример и на то, как использовать функцию sort_values () в вашем коде.
Загрузить набор данных
Мы будем использовать словарь Python для создания поддельных данных клиента и загрузим эти данные во фрейм данных Pandas. Мы сделаем это простым, поэтому у нас будет только четыре столбца: имя, страна, возраст и последняя активная дата. Набор данных достаточно прост, но мы дадим нам хороший обзор того, как мы можем отсортировать фрейм данных несколькими различными способами.
Чуть выше у нас есть наш клиентский фрейм данных. У него всего три клиента, но этого будет достаточно, чтобы продемонстрировать все возможности сортировки.
Сортировать по алфавиту
Начнем с сортировки фрейма данных по именам в алфавитном порядке. Мы будем использовать функцию panads sort_values () и укажем, по какому имени столбца мы хотим отсортировать, используя параметр с именем «by»:
Мы видим, что фрейм данных теперь сортируется по столбцу имени в алфавитном порядке.
Мы можем изменить порядок, используя ascending = False в качестве параметра функции:
Сортировать по номеру
Давайте попробуем сделать то же самое, но теперь рассортируем по возрасту. Код выглядит точно так же, за исключением того, что мы меняем имя столбца, которое будем использовать для сортировки:
Сортировать по дате
Опять та же строка кода будет работать для дат! Единственное, что нам нужно, это убедиться, что наша дата распознается как тип даты, а не как строка. Для этого мы будем использовать метод astype (), а затем применим функцию сортировки:
Сортировать по нескольким столбцам
Функция сортировки значений может работать с несколькими столбцами. Сначала он отсортирует фрейм данных по первому элементу в списке столбцов. Если есть значения, которые нельзя отсортировать по первому столбцу, он перейдет к следующему столбцу в списке. Давайте рассмотрим пример, когда мы сначала сортируем по стране, а затем сортируем по имени:
Итак, здесь мы видим, что наши записи отсортированы по странам. Все записи в Великобритании находятся над записями в США, а затем они сортируются в соответствии с колонкой имен.
Использование параметра на месте
И последнее, но не менее важное, если вы хотите, чтобы ваш текущий фрейм данных сохранил результат сортировки, который вы помните, чтобы использовать параметр inplace, и установите для него значение True:
Вывод
Вы можете эффективно сортировать ваши фреймы данных, используя отдельные строки кода. Волшебство делается с помощью функции sort_values из пакета pandas. Если вы узнаете, как использовать параметры, описанные в этом обзоре, вы сможете отсортировать любой фрейм данных в соответствии с вашими потребностями. Я надеюсь, что вы найдете это полезным и счастливой сортировки!
Pandas Sort — руководство по сортировке данных в Python
Содержание
К концу этого урока вы будете знать, как:
Чтобы понять урок, потребуется базовое знание DataFrames pandas и некоторое представление о чтении данных из файлов.
Начало работы с методами сортировки Pandas ↑
Напоминаем, что DataFrame — это структура данных с помеченными осями для строк и столбцов. Вы можете отсортировать DataFrame по значению строки или столбца, а также по индексу строки или столбца.
И строки, и столбцы имеют индексы, которые представляют собой числовые представления о том, где находятся данные в вашем DataFrame. Вы можете получать данные из определенных строк или столбцов, используя расположение индекса DataFrame. По умолчанию номера индексов начинаются с нуля. Вы также можете вручную назначить собственный индекс.
Подготовка набора данных ↑
В этом уроке будем работать с данными об экономии топлива, собранными Агентством по охране окружающей среды США (EPA) на транспортных средствах, выпущенных в период с 1984 по 2021 год. Набор данных EPA по экономии топлива великолепен, потому что он содержит много различных типов информации, которую вы можете отсортировать, включая текстовую и числовою информацию. Набор данных содержит всего восемьдесят три колонки.
Чтобы продолжить, вам понадобится установленная библиотека Python pandas. Код в этом руководстве был выполнен с использованием pandas 1.2.0 и Python 3.9.1.
Примечание. Полный набор данных по экономии топлива составляет около 18 МБ. Чтение всего набора данных в память может занять минуту или две. Ограничение количества строк и столбцов повысит производительность, но все равно потребуется несколько секунд, прежде чем данные будут загружены.
Для анализа будем просматривать данные о MPG (миля на галлон) для транспортных средств по маркам, моделям, годам и другим характеристикам транспортных средств. Можно указать, какие столбцы следует читать в DataFrame. Для этого урока вам понадобится только часть доступных столбцов. Вот команды для чтения соответствующих столбцов набора данных по экономии топлива в DataFrame и для отображения первых пяти строк:
Индекс строки DataFrame обведен синим на рисунке выше. Индекс не считается столбцом, и обычно у вас есть только один индекс строки. Индекс строки можно рассматривать как номера строк, которые начинаются с нуля.
Сортировка фрейма данных по одному столбцу ↑
Сортировка по столбцу в порядке возрастания ↑
Изменение порядка сортировки ↑
Выбор алгоритма сортировки ↑
Примечание. В pandas kind игнорируется при сортировке более чем по одному столбцу или метке.
Когда вы сортируете несколько записей с одним и тем же ключом, стабильный алгоритм сортировки сохранит исходный порядок этих записей после сортировки. По этой причине использование стабильного алгоритма сортировки необходимо, если вы планируете выполнять несколько сортировок.
Сортировка фрейма данных по нескольким столбцам ↑
При анализе данных часто бывает необходимо отсортировать данные на основе значений нескольких столбцов. Представьте, что есть набор данных с именами и фамилиями людей. Было бы разумно отсортировать по фамилии, а затем по имени, чтобы люди с одинаковой фамилией располагались в алфавитном порядке в соответствии с их именами.
Сортировка по нескольким столбцам в порядке возрастания ↑
Теперь DataFrame отсортирован в порядке возрастания по марке. Если есть две или более одинаковых марок, то они сортируются по моделям. Порядок, в котором имена столбцов указаны в списке, соответствует тому, как будет сортироваться DataFrame.
Изменение порядка сортировки столбцов ↑
Поскольку при сортировке используется несколько столбцов, можно указать порядок сортировки столбцов. Если необходимо изменить логический порядок сортировки из предыдущего примера, то можно изменить порядок имен столбцов в списке, который передаётся параметру by :
Сортировка по нескольким столбцам в порядке убывания ↑
До этого момента мы сортировали несколько столбцов только в порядке возрастания. В следующем примере выполним сортировку в порядке убывания по столбцам марки и модели. Для сортировки в порядке убывания установите значение ascending в False :
Значения в столбце make указаны в обратном алфавитном порядке, а значения в столбце model — в порядке убывания для всех автомобилей той же марки. Для текстовых данных сортировка чувствительна к регистру, то есть текст с заглавной буквы будет отображаться первым в порядке возрастания и последним в порядке убывания.
Сортировка по нескольким столбцам с разными порядками сортировки ↑
Сортировка фрейма данных по его индексу ↑
Сортировка по индексу в порядке возрастания ↑
Сортировка по индексу в порядке убывания ↑
Изучение расширенных концепций сортировки индекса ↑
В анализе данных есть много случаев, когда необходимо сортировать по иерархическому индексу. Вы уже видели, как использовать марку и модель в мультииндексе. Для этого набора данных можно также использовать столбец id в качестве индекса.
Сортировка столбцов фрейма данных ↑
Работа с осью DataFrame ↑
Использование меток столбцов для сортировки ↑
Столбцы вашего DataFrame сортируются слева направо в возрастающем алфавитном порядке. Если вы хотите отсортировать столбцы в порядке убывания, вы можете использовать ascending = False :
Работа с отсутствующими данными при сортировке в Pandas ↑
Вот как выглядит DataFrame при сортировке по столбцу с отсутствующими данными:
Теперь любые недостающие данные из столбцов, которые использовались для сортировки, будут отображаться в верхней части DataFrame. Это особенно полезно при начале анализа своих данные, когда нет уверенности в том, есть ли пропущенные значения.
Использование методов сортировки для изменения фрейма данных ↑
Заключение ↑
Эти методы — значимая часть навыков анализа данных. Они помогут вам построить прочный фундамент, на котором можно выполнять более сложные операции с pandas. Если вы хотите увидеть несколько примеров более продвинутого использования методов сортировки pandas, документация pandas — отличный ресурс.






















