LOC против ILOC в Pandas: разница между LOC и ILOC в Pandas

Опубликовано: 2020-08-01

Оглавление

Лок и илок в пандах

Распространенной причиной путаницы среди новых разработчиков Python является loc и iloc. Они оба кажутся очень похожими и выполняют аналогичные задачи. Так что это может озадачить любого школьника.

Если вы хотите узнать разницу между iloc и loc, вы попали по адресу, потому что в этой статье мы подробно обсудим эту тему. Вы узнаете, в чем ключевое различие между этими функциями, а затем увидите их в действии, чтобы лучше понять концепцию. Ознакомьтесь с нашими курсами по науке о данных, чтобы узнать больше о Pandas.

Давайте начнем.

Разница между loc и iloc

1. iloc в Python

Вы можете использовать iloc в Python для выбора. Он основан на целочисленном местоположении и помогает вам выбирать по положению. Итак, если вы хотите найти строку с индексом 5, iloc покажет вам пятую строку фрейма данных независимо от ее имени или метки.

Вот пример iloc в Python:

>>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},

… {'a': 100, 'b': 200, 'c': 300, 'd': 400},

… {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

>>> df = pd.DataFrame(mydict)

>>> дф

abcd

0 1 2 3 4

1 100 200 300 400

2 1000 2000 3000 4000

Мы проиндексируем строки скалярным целым числом, используя функцию iloc для приведенного выше кадра данных:

>>> введите (df.iloc [0])

<класс 'pandas.core.series.Series'>

>>> df.iloc[0]

1

Би 2

с 3

д 4

Имя: 0, dtype: int64

2. найти в пандах

Вы можете использовать loc в Pandas для доступа к нескольким строкам и столбцам с помощью меток; однако вы можете использовать его и с булевым массивом.

Если вы используете loc для поиска строки с индексом 5, вы не получите с ней пятую строку. Вместо этого вы получите только строку с именем «5».

Вот пример loc в Pandas:

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],

… index=['кобра', 'гадюка', 'сайдвиндер'],

… столбцы = ['max_speed', 'щит'])

>>> дф

max_speed щит

кобра 1 2

гадюка 4 5

сайдвиндер 7 8

Выше была таблица, из которой мы будем извлекать строку:

>>> df.loc['гадюка']

максимальная_скорость 4

щит 5

Имя: гадюка, dtype: int64

Подробный пример для loc vs iloc

Несмотря на то, что мы используем обе эти функции для выбора, было бы лучше, если бы мы рассмотрели подробный пример, чтобы понять их различия.

В нашем примере мы будем использовать набор данных клиентов телекоммуникационных компаний, который доступен на kaggle. Мы добавим его во фрейм данных:

df = pd.read_csv("Projects/churn_prediction/Telco-Customer-Churn.csv")

дф.голова ()

Я БЫ Пол старший гражданин Партнер иждивенцы пребывание в должности Телефон несколько линий Интернет Безопасность
0 7590-ВХВЭГ Женский 0 да Нет 1 Нет Нет телефона DSL Нет
1 5575-ГНВДЭ Мужчина 0 Нет Нет 34 да Нет DSL да
2 3668-QPYBK Мужчина 0 Нет Нет 2 да Нет DSL да

Этот набор данных имеет 21 столбец; мы показали лишь некоторые из них в демонстрационных целях. Как мы уже говорили, мы используем loc для выбора данных по метке. Здесь имена столбцов — это их метки столбцов, такие как пол, срок владения, OnlineSecurity; все они являются именами столбцов, а также метками.

Поскольку мы не назначили какой-либо конкретный индекс, панды по умолчанию создадут целочисленный индекс для строк. Метки строк представляют собой целые числа, которые начинаются с 0 и увеличиваются. В этом примере мы увидим, как loc и iloc ведут себя по-разному.

  • Выберите строку «1» и столбец «Партнер».

df.loc[1, 'Партнер']

Вывод: «Нет»

Он показывает значение, присутствующее в столбце «Партнер» строки «1».

  • Выберите метки строк «4» и столбцы «идентификатор клиента» и «пол».

df.loc[:4, ['customerID', 'пол']]

Пользовательский ИД

Пол

0

7590-ВХВЭГ

Женский

1

5575-ГНВДЭ

Мужчина

2

3668-QPYBK

Мужчина

3

7795-CFOCW

Мужчина

4

9237-ХКИТУ

Женский

  • Выберите метки строк «1», «2», «3» и столбец «Зависимые».

df.loc[[1,2,3], 'Зависимые']

1 Нет

2 Нет

3 Нет

Имя: Зависимые, dtype: объект

На этот раз мы отфильтруем фрейм данных и применим iloc или loc:

  • Выберите метки строк для столбцов «10» и «PhoneService» и «InternetService» клиента, у которого есть партнер (партнер должен быть «да»)

df [df.Partner == 'Да'].loc:10, ['PhoneService', 'InternetService']]

В приведенном выше случае мы применили фильтр к базе данных, но не изменили индекс, поэтому в нашем выводе были пропущены несколько меток строк, которые требовал наш фильтр. Итак, используя здесь loc[:10], мы выбрали строки с метками до «10».

Если, с другой стороны, мы используем здесь iloc и применяем фильтр, мы получим 10 строк, так как iloc выбирает по положению независимо от меток. Вот результат, который мы получим, если применим iloc[:10]:

df[df.Partner == 'Да'].iloc[:10, [6,8]]

ТелефонСервис Интернет услуги
0 Нет DSL
8 да Оптоволокно
10 да DSL
12 да Оптоволокно
15 да Оптоволокно
18 да DSL
21 да Нет
23 да DSL
24 да DSL
26 да Оптоволокно

Вы, должно быть, заметили, что нам нужно изменить наш метод для выбора столбцов.

Читайте: Учебник по Python Pandas

  • Выберите первые 5 столбцов и первые 5 строк с помощью iloc

df.iloc[:4, :4]

Пользовательский ИД Пол старшийгражданин Партнер
0 7590-ВХВЭГ Женский 0 да
1 5575-ГНВДЭ Мужчина 0 Нет
2 3668-QPYBK Мужчина 0 Нет
3 7795-CFOCW Мужчина 0 Нет

Мы можем использовать iloc для выбора позиций с конца. Для этого нам просто нужно использовать отрицательные целые числа (-1, -2 и т. д.) и начать с них.

  • Выберите последние 5 столбцов и последние 5 строк

df.iloc[-5:, -5:]

Безбумажный выставление счетов Способ оплаты Ежемесячные платежи Всего начислений Отток
7038 да Почтовый чек 84,80 1990,5 Нет
7039 да Кредитная карта 103.20 7362,9 Нет
7040 да Электронный чек 29.60 346,45 Нет
7041 да Почтовый чек 74,40 306,6 да
7042 да Банковский перевод 105,65 6844,5 Нет

Вы также можете использовать лямбда-функцию с iloc. (Лямбда-функция — это небольшая анонимная функция в Python, которая может иметь одно выражение, но любое количество аргументов.)

  • Выберите каждую третью строку до 15-й и покажите только столбцы «Интернет-сервис» и «Партнер».

df.iloc[ lambda x: (x.index x 3 == 0) & (x.index <= 150]['Партнер', 'InternetService' ]]

Партнер Интернет услуги
0 да DSL
3 Нет DSL
6 Нет Оптоволокно
9 Нет DSL
12 да Оптоволокно
15 да Оптоволокно

Мы также можем выбрать метки или позиции между ними.

  • Выберите позиции столбцов между 4 и 6 и позиции строк между 20 и 25

df.iloc[20:25, 4:6]

иждивенцы пребывание в должности
20 Нет 1
21 Нет 12
22 Нет 1
23 Нет 58
24 Нет 49

Теперь, если вы попытаетесь передать метки iloc, Pandas покажет вам следующее сообщение об ошибке:

ValueError: индексирование на основе местоположения может иметь только типы [целое число, целочисленный фрагмент (точка НАЧАЛА ВКЛЮЧЕНА, точка КОНЕЦА ИСКЛЮЧЕНА), список целых чисел, логический массив]

Вы получите аналогичную ошибку, если передадите position в loc.

Читайте также: Вопросы для интервью с пандами

Узнайте больше о Python

Студент должен задавать вопросы и находить на них ответы. Мы надеемся, что эта статья ответила на ваши вопросы о loc в Pandas (или iloc в Python). Было бы лучше, если бы вы сами опробовали эти функции на разных наборах данных, чтобы понять, как они работают.

Если вы хотите узнать больше о Python, Pandas и соответствующих темах, посетите наш блог. Наши специалисты добавляют туда несколько подробных ресурсов.

Если вам интересно узнать о науке о данных, ознакомьтесь с программой IIIT-B & upGrad Executive PG по науке о данных, которая создана для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические семинары, наставничество с отраслевыми экспертами, 1 -на-1 с отраслевыми наставниками, более 400 часов обучения и помощи в трудоустройстве в ведущих фирмах.

Как мы можем добавить строки Pandas DataFrame?

Чтобы вставить строки в DataFrame, мы можем использовать команды loc, iloc и ix.

1. loc в основном используется для меток нашего индекса. Это можно понять, когда мы вставляем в loc 4, что указывает на то, что мы ищем записи DataFrame с индексом 4.
2. iloc в основном используется для поиска местоположений в индексе. Это как если бы мы вставляли в iloc 4, что указывает на то, что мы ищем записи DataFrame, которые присутствуют в индексе 4.
3. Случай ix сложен, потому что мы передаем метку ix, если индекс основан на целочисленных значениях. ix 4 указывает, что мы ищем в DataFrame значения с индексом 4.

Что такое переиндексация в контексте Pandas в Python?

Метки строк и столбцов DataFrame изменяются, когда мы переиндексируем его. Термин «переиндексация» относится к процессу выравнивания данных по определенному набору меток вдоль одной оси. В Pandas переиндексацию можно использовать для изменения индекса строк и столбцов DataFrame. Многие структуры данных индекса, связанные со многими сериями pandas или pandas DataFrame, могут использоваться с индексами.

Какие операции с данными выполняются в Pandas?

В Pandas есть несколько важных операций с данными для DataFrame, а именно:

1. Выбор строк и столбцов. Передавая имена строк и столбцов, мы можем выбрать любую строку и столбец в DataFrame. Он становится одномерным и рассматривается как серия, когда вы выбираете его из DataFrame.
2. Фильтрация данных. Используя некоторые логические выражения в DataFrame, мы можем фильтровать данные.
3. Нулевые значения. Если элементам не заданы данные, они получают нулевое значение. В разных столбцах не может быть значений, которые обычно представлены как NaN.