Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
08 Сен 2024
2 мин
7949

Различие между iloc и loc в Pandas

В работе с библиотекой Pandas для языка программирования Python часто возникает необходимость выбирать или изменять определенные данные в DataFrame или Series.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

В работе с библиотекой Pandas для языка программирования Python часто возникает необходимость выбирать или изменять определенные данные в DataFrame или Series. Для этого используются два основных метода, которые иногда вызывают путаницу из-за своего сходства — это iloc и loc.

Рассмотрим пример. Допустим, есть DataFrame с данными о студентах и их оценками.

import pandas as pd

data = {
    'Name': ['John', 'Anna', 'Peter', 'Linda', 'James'],
    'Score': [85, 90, 78, 92, 88],
}

df = pd.DataFrame(data)

print(df)

Пример вывода DataFrame:

   Name  Score
0  John     85
1  Anna     90
2  Peter    78
3  Linda    92
4  James    88

Если необходимо получить данные об Anna и ее оценке, вот как можно это сделать с помощью loc и iloc.

print(df.loc[1])
print(df.iloc[1])

В обоих случаях будет получен один и тот же результат:

Name     Anna
Score      90
Name: 1, dtype: object

Здесь возникает вопрос: если результат одинаковый, то в чем разница между iloc и loc?

Основное различие между этими двумя методами заключается в том, что iloc применяется для обращения по численному индексу, тогда как loc используется для обращения по метке (label).

В приведенном выше примере индексы и метки совпадают, поэтому результаты выглядят одинаковыми. Но что если индексы изменить?

df.index = ['a', 'b', 'c', 'd', 'e']

print(df)

Теперь DataFrame выглядит следующим образом:

  Name  Score
a  John     85
b  Anna     90
c  Peter    78
d  Linda    92
e  James    88

Если попытаться получить данные об Anna, используя те же методы, результаты будут различными.

print(df.loc['b'])
print(df.iloc[1])

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

loc['b'] вернет данные об Anna, потому что ‘b’ — это метка второй строки. iloc[1] также вернет данные об Anna, потому что 1 — это численный индекс второй строки.

Однако, если попытаться использовать iloc['b'], возникнет ошибка, потому что iloc ожидает численный индекс. Аналогично, loc[1] также вызовет ошибку, поскольку loc ожидает метку.

Вот основное различие между iloc и loc. Важно помнить об этом при работе с данными в Pandas.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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