loc pandas что делает
Функция Python loc () – Извлечение значений из набора данных
Эй, читатели! В этой статье мы подробно остановимся на функционировании функции Python loc (). Итак, давайте начнем!!
Эй, читатели! В этой статье мы подробно остановимся на функционировании функции Python loc ()|/. Итак, давайте начнем!!
Работа функции Python loc()
Python включает в себя различные модули, которые имеют встроенные функции для работы со значениями данных и управления ими.
Модуль Pandas позволяет нам обрабатывать большие наборы данных, содержащие значительное количество данных для обработки в целом.
Это происходит, когда на сцену выходит функция Python loc ()|/. Функция lock() помогает нам легко извлекать значения данных из набора данных.
Используя функцию loc (), мы можем получить доступ к значениям данных, помещенным в конкретную строку или столбец, на основе значения индекса, переданного функции.
Нам нужно указать значения индекса, для которых мы хотим, чтобы все данные были представлены в выходных данных.
Метка индекса может быть одним из следующих значений :
Таким образом, мы можем извлечь конкретную запись из набора данных на основе метки индекса с помощью функции loc ().
Давайте теперь сосредоточимся на реализации того же самого, используя приведенные ниже примеры.
Примеры функции Python loc()
Давайте сначала создадим фрейм данных с набором значений данных, используя фрейм данных в модуле Pandas, как показано ниже:
Фрейм данных :
Создав фрейм данных с определенным набором значений, давайте теперь попробуем получить набор строк или столбцов, имеющих значения данных для определенного индекса, как показано ниже:
Извлечение одной строки из фрейма данных
Итак, используя приведенную выше команду, мы извлекли все значения данных, связанные с меткой индекса “Python”.
Извлечение нескольких строк из фрейма данных
Теперь давайте попробуем извлечь строки и столбцы данных, связанные с несколькими индексами, одновременно, используя приведенную ниже команду.
Извлеките диапазон строк с помощью Python loc()
Здесь мы использовали объект slice, как и в случае с метками, для отображения строк и столбцов, связанных с метками от “Python” до “C”.
Вывод
На этом мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы.
Для получения большего количества таких сообщений, связанных с Python, оставайтесь настроенными и до тех пор счастливого обучения!!
Моя шпаргалка по pandas
Один преподаватель как-то сказал мне, что если поискать аналог программиста в мире книг, то окажется, что программисты похожи не на учебники, а на оглавления учебников: они не помнят всего, но знают, как быстро найти то, что им нужно.
Возможность быстро находить описания функций позволяет программистам продуктивно работать, не теряя состояния потока. Поэтому я и создал представленную здесь шпаргалку по pandas и включил в неё то, чем пользуюсь каждый день, создавая веб-приложения и модели машинного обучения.
1. Подготовка к работе
Если вы хотите самостоятельно опробовать то, о чём тут пойдёт речь, загрузите набор данных Anime Recommendations Database с Kaggle. Распакуйте его и поместите в ту же папку, где находится ваш Jupyter Notebook (далее — блокнот).
Теперь выполните следующие команды.
После этого у вас должна появиться возможность воспроизвести то, что я покажу в следующих разделах этого материала.
2. Импорт данных
▍Загрузка CSV-данных
Здесь я хочу рассказать о преобразовании CSV-данных непосредственно в датафреймы (в объекты Dataframe). Иногда при загрузке данных формата CSV нужно указывать их кодировку (например, это может выглядеть как encoding=’ISO-8859–1′ ). Это — первое, что стоит попробовать сделать в том случае, если оказывается, что после загрузки данных датафрейм содержит нечитаемые символы.
▍Создание датафрейма из данных, введённых вручную
Это может пригодиться тогда, когда нужно вручную ввести в программу простые данные. Например — если нужно оценить изменения, претерпеваемые данными, проходящими через конвейер обработки данных.
Данные, введённые вручную
▍Копирование датафрейма
Копирование датафреймов может пригодиться в ситуациях, когда требуется внести в данные изменения, но при этом надо и сохранить оригинал. Если датафреймы нужно копировать, то рекомендуется делать это сразу после их загрузки.
3. Экспорт данных
▍Экспорт в формат CSV
При экспорте данных они сохраняются в той же папке, где находится блокнот. Ниже показан пример сохранения первых 10 строк датафрейма, но то, что именно сохранять, зависит от конкретной задачи.
4. Просмотр и исследование данных
▍Получение n записей из начала или конца датафрейма
Сначала поговорим о выводе первых n элементов датафрейма. Я часто вывожу некоторое количество элементов из начала датафрейма где-нибудь в блокноте. Это позволяет мне удобно обращаться к этим данным в том случае, если я забуду о том, что именно находится в датафрейме. Похожую роль играет и вывод нескольких последних элементов.
Данные из начала датафрейма
Данные из конца датафрейма
▍Подсчёт количества строк в датафрейме
▍Подсчёт количества уникальных значений в столбце
Для подсчёта количества уникальных значений в столбце можно воспользоваться такой конструкцией:
▍Получение сведений о датафрейме
В сведения о датафрейме входит общая информация о нём вроде заголовка, количества значений, типов данных столбцов.
Сведения о датафрейме
▍Вывод статистических сведений о датафрейме
Знание статистических сведений о датафрейме весьма полезно в ситуациях, когда он содержит множество числовых значений. Например, знание среднего, минимального и максимального значений столбца rating даёт нам некоторое понимание того, как, в целом, выглядит датафрейм. Вот соответствующая команда:
Статистические сведения о датафрейме
▍Подсчёт количества значений
Для того чтобы подсчитать количество значений в конкретном столбце, можно воспользоваться следующей конструкцией:
Подсчёт количества элементов в столбце
5. Извлечение информации из датафреймов
▍Создание списка или объекта Series на основе значений столбца
Это может пригодиться в тех случаях, когда требуется извлекать значения столбцов в переменные x и y для обучения модели. Здесь применимы следующие команды:
Результаты работы команды anime[‘genre’].tolist()
Результаты работы команды anime[‘genre’]
▍Получение списка значений из индекса
Результаты выполнения команды
▍Получение списка значений столбцов
Вот команда, которая позволяет получить список значений столбцов:
Результаты выполнения команды
6. Добавление данных в датафрейм и удаление их из него
▍Присоединение к датафрейму нового столбца с заданным значением
Иногда мне приходится добавлять в датафреймы новые столбцы. Например — в случаях, когда у меня есть тестовый и обучающий наборы в двух разных датафреймах, и мне, прежде чем их скомбинировать, нужно пометить их так, чтобы потом их можно было бы различить. Для этого используется такая конструкция:
▍Создание нового датафрейма из подмножества столбцов
Это может пригодиться в том случае, если требуется сохранить в новом датафрейме несколько столбцов огромного датафрейма, но при этом не хочется выписывать имена столбцов, которые нужно удалить.
Результат выполнения команды
▍Удаление заданных столбцов
Этот приём может оказаться полезным в том случае, если из датафрейма нужно удалить лишь несколько столбцов. Если удалять нужно много столбцов, то эта задача может оказаться довольно-таки утомительной, поэтому тут я предпочитаю пользоваться возможностью, описанной в предыдущем разделе.
Результаты выполнения команды
▍Добавление в датафрейм строки с суммой значений из других строк
Результат выполнения команды
Команда вида df.sum(axis=1) позволяет суммировать значения в столбцах.
7. Комбинирование датафреймов
▍Конкатенация двух датафреймов
Эта методика применима в ситуациях, когда имеются два датафрейма с одинаковыми столбцами, которые нужно скомбинировать.
В данном примере мы сначала разделяем датафрейм на две части, а потом снова объединяем эти части:
Датафрейм, объединяющий df1 и df2
▍Слияние датафреймов
Результаты выполнения команды
8. Фильтрация
▍Получение строк с нужными индексными значениями
Индексными значениями датафрейма anime_modified являются названия аниме. Обратите внимание на то, как мы используем эти названия для выбора конкретных столбцов.
Результаты выполнения команды
▍Получение строк по числовым индексам
Следующая конструкция позволяет выбрать три первых строки датафрейма:
Результаты выполнения команды
▍Получение строк по заданным значениям столбцов
Для получения строк датафрейма в ситуации, когда имеется список значений столбцов, можно воспользоваться следующей командой:
Результаты выполнения команды
Если нас интересует единственное значение — можно воспользоваться такой конструкцией:
▍Получение среза датафрейма
Эта техника напоминает получение среза списка. А именно, речь идёт о получении фрагмента датафрейма, содержащего строки, соответствующие заданной конфигурации индексов.
Результаты выполнения команды
▍Фильтрация по значению
Из датафреймов можно выбирать строки, соответствующие заданному условию. Обратите внимание на то, что при использовании этого метода сохраняются существующие индексные значения.
Результаты выполнения команды
9. Сортировка
Для сортировки датафреймов по значениям столбцов можно воспользоваться функцией df.sort_values :
Результаты выполнения команды
10. Агрегирование
▍Функция df.groupby и подсчёт количества записей
Вот как подсчитать количество записей с различными значениями в столбцах:
Результаты выполнения команды
▍Функция df.groupby и агрегирование столбцов различными способами
▍Создание сводной таблицы
Для того чтобы извлечь из датафрейма некие данные, нет ничего лучше, чем сводная таблица. Обратите внимание на то, что здесь я серьёзно отфильтровал датафрейм, что ускорило создание сводной таблицы.
Результаты выполнения команды
11. Очистка данных
▍Запись в ячейки, содержащие значение NaN, какого-то другого значения
Таблица, содержащая значения NaN
Результаты замены значений NaN на 0
12. Другие полезные возможности
▍Отбор случайных образцов из набора данных
Результаты выполнения команды
▍Перебор строк датафрейма
Следующая конструкция позволяет перебирать строки датафрейма:
Результаты выполнения команды
▍Борьба с ошибкой IOPub data rate exceeded
Если вы сталкиваетесь с ошибкой IOPub data rate exceeded — попробуйте, при запуске Jupyter Notebook, воспользоваться следующей командой:
Итоги
Здесь я рассказал о некоторых полезных приёмах использования pandas в среде Jupyter Notebook. Надеюсь, моя шпаргалка вам пригодится.
pandas.DataFrame.locВ¶
Access a group of rows and columns by label(s) or a boolean array.
.loc[] is primarily label based, but may also be used with a boolean array.
Allowed inputs are:
Note that contrary to usual python slices, both the start and the stop are included
An alignable boolean Series. The index of the key will be aligned before masking.
An alignable Index. The Index of the returned selection will be the input.
A callable function with one argument (the calling Series or DataFrame) and that returns valid output for indexing (one of the above)
If any items are not found.
If an indexed key is passed and its index is unalignable to the frame index.
Access a single value for a row/column label pair.
Access group of rows and columns by integer position(s).
Returns a cross-section (row(s) or column(s)) from the Series/DataFrame.
Access group of values using labels.
Getting values
Single label. Note this returns the row as a Series.
List of labels. Note using [[]] returns a DataFrame.
Single label for row and column
Slice with labels for row and single label for column. As mentioned above, note that both the start and stop of the slice are included.
Boolean list with the same length as the row axis
Alignable boolean Series:
Index (same behavior as df.reindex )
Conditional that returns a boolean Series
Conditional that returns a boolean Series with column labels specified
Callable that returns a boolean Series
Setting values
Set value for all items matching the list of labels
Set value for an entire row
Set value for an entire column
Set value for rows matching callable condition
Getting values on a DataFrame with an index that has integer labels
Another example using integers for the index
Slice with integer labels for rows. As mentioned above, note that both the start and stop of the slice are included.
Getting values with a MultiIndex
A number of examples using a DataFrame with a MultiIndex
Single label. Note this returns a DataFrame with a single index.
Single index tuple. Note this returns a Series.
Single label for row and column. Similar to passing in a tuple, this returns a Series.
Single tuple. Note using [[]] returns a DataFrame.
Single tuple for the index with a single label for the column
Дата публикации Jul 1, 2019
Я «ковырялся», используя набор данных покемонов ( #dadjokes ) с первой недели моегоКурс Data Science Immersive на Генеральной Ассамблеев Атланте.
Вот что df.head(10) выглядит как:
Индексируемый атрибут, а не метод
Отдельные метки, фрагменты и списки
Передача одного индексатора (так как этот фрейм данныхRangeIndexed, мы передаем целое число) возвращает ряд панд с данными для строки с этим значением индекса, в данном случае Charmander:
Проходя простометка столбцаилииндексатор пустой строкидаст вам ошибку, потому что первая позиция индекса в скобках ищетрядиндекс, и это требуется:
Но передавая метку столбца после использованияНотация Pythonуказать, какие строки вы хотите (например, [:] для всех строк) даст вам данные столбца в серии панд. Обратите внимание, что, в отличие от обычного соглашения Python, .loc срезы включают обе конечные точки:
Вы также можете пройтиспискис именами индексов строк или столбцов, чтобы получить подмножество данных. (Список понятийработа тоже!)
Булевы списки
Все возможности здесь, такие как получение покемонов с более чем 175 атаками:
Или те, у кого меньше 100 очков жизни и более 650 общих характеристик:
Или с буквой «X» в названии или с типом «PsychicFairy»:
Русские Блоги
Анализ loc, iloc, ix и at / iat в Pandas DataFrame
Некоторое время назад я увидел в Think Python предложение, которое все еще свежо. Это, вероятно, означает: Иногда Python заставляет нас чувствовать себя смущенными, потому что существует слишком много способов добиться эффекта, а не слишком мало.
Действительно, есть такая проблема при выборе данных Pandas DataFrame. Изначально понять индекс списка (чтобы понять индекс списка, обратитесь к:Изображение для понимания индексации и нарезки Python) Уже очень сложно, у DataFrame еще столько методов.
Прекратите говорить ерунду и получите результат прямо сейчас.
1. loc: выбор данных по метке, то есть выбор по значению индекса и столбцов. У метода loc есть два параметра, которые управляют выбором рангов по порядку.
2. iloc: выберите данные по номеру строки, то есть выберите данные по естественному номеру строки и столбца, в котором они расположены. Метод iloc также имеет два параметра, которые контролируют выбор рангов по порядку.
Примечание. Номер строки и индекс отличаются. Номер строки данных после фильтрации изменится в соответствии с новым DataFrame, а индекс не изменится.
3. ix: Смешанный индекс, выберите данные по метке и номеру строки одновременно. У метода ix также есть два параметра, которые управляют выбором рангов по порядку.
Примечание. В двух параметрах ix каждый параметр должен быть проиндексирован с использованием только метки или номера строки для выбора данных, в противном случае будет возвращена часть результата управления.