Python Pandas iloc: как выбрать данные в Pandas с помощью iloc

Pandas.DataFrame.iloc — это уникальный встроенный метод, который возвращает индексирование на основе целого числа для выбора по положению. Функция Pandas Dataframe.iloc [] используется, когда метка индекса фрейма данных представляет собой нечто иное, чем числовой ряд 0, 1, 2, 3… .n, или в некотором сценарии пользователь не знает метку индекса .

Строки можно извлечь, используя воображаемую позицию индекса, которая не отображается в DataFrame.

Pandas iloc

DataFrame.iloc [] предоставляет способ выбора строк DataFrame. Iloc [] в основном основывается на целочисленной позиции (от 0 до длины-1 оси), но также может использоваться с логическим массивом.

Pandas.DataFrame.iloc вызовет IndexError , если запрошенный индексатор находится за пределами границ, за исключением индексаторов фрагментов, которые разрешают индексирование за пределами .

Синтаксис

 pandas.DataFrame  .iloc [строка, столбец] 

Параметры

Допустимые значения:

  1. Целые числа, например, 5.
  2. Список или массив целых чисел, например, [4, 3, 0].
  3. Объект среза с целыми числами, например, 1: 7.
  4. Логический массив.
  5. Вызываемая функция с аргументом (вызывающая серия или DataFrame), которая возвращает действительный вывод для индексации. Это очень полезно в цепочках методов, когда у вас нет ссылки на вызывающий объект, но вы хотите основывать свой выбор на какой-то логике или значении.

Есть два «Аргументы» для iloc:

  1. Селектор строк.
  2. Селектор столбца.

Например.

 # Одиночный выбор с использованием iloc и DataFrame # Rows: data.iloc [0] # первая строка  кадр данных (Алешиа Томкевич) - обратите внимание на тип данных серии output.data.iloc [1] # вторая строка кадра данных (Эван Зигомалас) data.iloc [-1] # последняя строка кадра данных (Ми Ричан) # Столбцы:  data.iloc [:, 0] # первый столбец фрейма данных (first_name) data.iloc [:, 1] # второй столбец фрейма данных (last_name) data.iloc [:, - 1] # последний столбец фрейма данных (  id) 

Можно выбрать несколько столбцов и строк с помощью .iloc

 # Выбор нескольких строк и столбцов с помощью iloc и DataFramedata  .iloc [0: 5] # первые пять строк dataframedata.iloc [:, 0: 2] # первые два столбца da  ta кадр со всеми строкамиdata.iloc [[0,3,6,24], [0,5,6]] # 1-я, 4-я, 7-я, 25-я строка + 1-я 6-я 7-я columns.data.iloc [0: 5, 5  : 8] # первые 5 строк и 5-й, 6-й, 7-й столбцы фрейма данных (county -> phone1). 

Пример iloc []

В этом примере мы будем использовать внешний файл CSV. Мы импортируем CSV-файл и читаем его с помощью метода pandas read_csv ().

Вы можете скачать CSV-файл отсюда.

Теперь мы будем использовать первые 10 записей файла CSV в этом примере..

Затем мы выберем строки DataFrame с помощью метода pandas.DataFrame.iloc [].

 # app.pyimport pandas as  pdimport numpy as np # чтение datadata = pd.read_csv ('100 Sales Records.csv', index_col = 0) # отображение первых 10 строкfinalSet = data.head (10) df = pd.DataFrame (finalSet) print (df) 

Вывод

 python3 app.py Страна Тип элемента Канал продаж Приоритет заказа Дата заказа Идентификатор заказа ... Продано единиц Цена за единицу  Стоимость Общая выручка Общая стоимость Общая прибыль Регион ... Австралия и Океания Тувалу Детское питание Не в сети H 5/28/2010 669165933 ... 9925 255,28 159,42 2533654,00 1582243,50 951410,50 Центральная Америка и Карибский бассейн Гренада Зерновые онлайн C 22.08.2012 963881480 ..  2804 205,70 117,11 576782,80 328376,44 248406,36Европа Россия Канцелярские товары Офлайн L 5/2/2014 341417157 ... 1779 651,21 524,96 1158502,59 933903,84 224598,75 Африка к югу от Сахары Сан-Томе и Принсипи Фрукты Онлайн C 6/2092/2014 5141732 ...  6,92 7559  1,66 56065,84 19525,82 Африка к югу от Сахары, Руанда, Канцелярские товары Офлайн L 2/1/2013 115456712 ... 5062 651,21 524,96 3296425,02 2657347,52 639077,50 Австралия и Океания Соломоновы острова Детское питание в Интернете C 2/4/2015 547995746,08 ... 2974 255,28 159,42 759205  285087,64 Африка к югу от Сахары Ангола Домохозяйство вне сети M 4/23/2011 135425221 ... 4187 668,27 502,54 2798046,49 2104134,98 693911,51 Африка к югу от Сахары Буркина-Фасо Овощи онлайн H 7/17/2012 871543967 ... 8082 154,0612,26 90,93 12452 ...  Сахара, Африка, Республика Конго, Личное обслуживание, офлайн M 14.07.2015 770463311 ... 6070 81,73 56,67 496101,10 343986,90 152114,20 Африка к югу от Сахары Сенегал Зерновые онлайн H 4/18/2014 616607081 ... 6593 205,70 117,11 1356180,10 772106.23 584073.87 [10  строк x 13 столбцов] 

Теперь давайте выберем первую строку DataFrame с помощью iloc [0].

 # app  .pyimport pandas as pdimport numpy as np # чтение данных datadata = pd.read_csv ('100 Sales Rec  ords.csv ', index_col = 0) # отображение первых 10 строкfinalSet = data.head (10) df = pd.DataFrame (finalSet) print (df.iloc [0]) 

Output

 python3 app.pyCountry TuvaluItem Тип Детское питание Канал продаж Offline Приоритет заказа Дата заказа 28.05.2010 Код заказа 669165933Дата отгрузки 27.06.2010 Единицы проданы 9925 Единичная цена 255,28Стоимость единицы 159,42 Итого  Доход 2,53365e + 06Общая стоимость 1,58224e + 06Общая прибыль 951410 Имя: Австралия и Океания, dtype: object 

Pandas iloc: передать индекс строки и индекс столбца

Давайте передадим индекс строки и индекс столбца в метод iloc []. На выходе мы получим конкретное значение из DataFrame. См. Код ниже.

 # app. pyimport pandas as pdimport numpy as np # чтение базы данных = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'), ('La Casa De Papel', 4,  'Sergio'), ('Westworld', 3, 'Evan Rachel'), ('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Создать фрейм данных  objectdfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) df = pd.DataFrame (dfObj) print (df.iloc [4, 2]) 

Вывод

 pyt python3 app.pyMillie (pythonenv) ➜ pyt 

В приведенном выше примере он выберет значение который находится в 4-й строке и 2-м столбце.

Помните, что индекс строки и столбца DataFrame начинается с 0.

На выходе мы получим Милли , потому что 4-я строка Очень странные дела, 3, Милли, а второй столбец — Милли .

Как выбрать несколько строк с индексом в Pandas

В следующем примере кода несколько строк извлекаются сначала путем передачи списка, а затем обхода целых чисел для получения строк между этим диапазоном.

См. следующий код.

 # app.pyimport pandas as pdimport numpy as np # чтение данных datadata = pd.read_csv ('100 Sales Records.csv', index_col = 0) # отображение первых 10 строкfinalSet = data.head (10) df  = pd.DataFrame (finalSet) print (df.iloc [[2, 4, 6, 8]]) 

В приведенном выше коде мы передали список индекса в качестве аргумента в клавиши iloc [] .

Выход

 python3 app.py Страна Тип элемента продаж  Канал Приоритет заказа Дата заказа Идентификатор заказа Дата отгрузки Количество проданных единиц Цена единицы Цена до  выручка Общая стоимость Общая прибыль Регион Европа, Россия Канцелярские товары Не в сети L 5/2/2014 341417157 08.05.2014 1779 651,21 524,96 1158502,59 933903,84 224598,75 Офисные товары в Африке к югу от Сахары в Руанде Офлайн L 2/1/2013 115456712 06.02.2013 5062 651,21  524,96 3296425,02 2657347,52 639077,50 Домохозяйство к югу от Сахары Ангола Не в сети M 4/23/2011 135425221 27 апреля 2011 г. 4187 668,27 502,54 2798046,49 2104134,98 693911,51 Субсахарская Африка Республика Конго 8/14 Личная помощь в автономном режиме 725/14 /2015 6070 81,73 56,67 496101.10 343986.90 152114.20 

Pandas iloc [] с объектом Slice

Давайте передадим фрагмент Python в качестве индекса и просмотрите результат.

 # app.pyimport pandas as pdimport numpy as np # чтение данных datadata = pd.read_csv ('100 Sales Records.csv', index_col = 0) # отображение первых 10 строкfinalSet  = data.head (10) df = pd.DataFrame (finalSet) print (df.iloc [3: 7]) 

Вывод

 python3 app.py Страна Тип товара Продажа  s Канал Порядок Приоритет Дата заказа Идентификатор заказа Дата отгрузки Проданных единиц Цена единицы Стоимость единицы Общая выручка Общая стоимость Общая прибыль Регион Африка к югу от Сахары Сан-Томе и Принсипи Fruits Online C 20.06.2014 514321792 05.07.2014 8102 9,33 6,92 75591,66 56065,84 19525. 82 Страны Африки к югу от Сахары, Руанда, Канцелярские товары Офлайн L 2/1/2013 115456712 2/6/2013 5062 651,21 524,96 3296425,02 2657347,52 639077,50 Австралия и Океания Детское питание Соломоновы Острова Интернет C 2 апреля 2015 г.  474115.08 285087.64Африка к югу от Сахары Ангола Домохозяйство Offline M 4/23/2011 135425221 27.04.2011 4187 668,27 502,54 2798046,49 2104134,98 693911.51 

DataFrame.iloc [] с лямбда-функцией Python

Давайте воспользуемся цепочкой вызываемых методов. x , переданный лямбда-функции, представляет собой фрагмент DataFrame, который выбирает строки, чья индексная метка четная.

В этом примере мы не будем использовать внешние данные CSV , а создадим DataFrame из кортежей.

См. следующий код.

 # app.pyimport pandas as pdimport numpy as np # read the dataseries = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8,  'Эмилия'), ('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'), ('Stranger Things', 3, 'Millie'), ('La Casa  De Papel ', 4,' Sergio ')] # Создайте объект DataFrame .dfObj = pd.DataFrame (series, columns = [' Name ',' Seasons ',' Actor ']) df = pd.DataFrame (dfObj) print (df  .iloc [lambda x: x.index% 2 == 0]) 

Вывод

 python3 app.py Имя Сезоны  Actor0 Stranger Things 3 Millie2 La Casa De Papel 4 Sergio4 Stranger Things 3 Millie 

Вы можете видеть, что он возвращает даже проиндексированные строки. Мы передали лямбда-функцию для написания логики, которая удаляет нечетные строки, выбирает четные строки и возвращает их.

Булево/логическое индексирование с использованием .iloc

Давайте передадим список логических значений True и False методу iloc [] и посмотрим на результат.

 # app.pyimport pandas  as pdimport numpy as np # чтение наборов данных = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'), ('La Casa De Papel', 4, 'Sergio  '), (' Westworld ', 3,' Evan Rachel '), (' Stranger Things ', 3,' Millie '), (' La Casa De Papel ', 4,' Sergio ')] # Создаем объект DataFramedfObj =  pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) df = pd.DataFrame (dfObj) print (df.iloc [[True, True, True, True, False, False]]  ) 

Вывод

 python3 app.py Имя Сезоны Актер0 Очень странные дела 3 Милли1 Игра престолов 8 Эмилия2 La Casa De Papel 4  Sergio3 Westworld 3 Эван Рэйчел 

Заключение

Существует множество способов выбора и индексации строк и столбцов из фреймов данных Pandas.

  1. Выбор данных по номерам строк (.iloc) .
  2. Выбор данных по метке или условному оператору (. loc)

Мы видели только метод iloc [] и увидим loc [] скоро.

Синтаксис iloc — data.iloc [, ], который наверняка запутает пользователей R.

« iloc» в пандах используется для выбора строк и столбцов по номеру (индексу) в том порядке, в котором они появляются в DataFrame.

Вы можете представить, что каждая строка имеет номер строки от 0 до общего количества строк (data.shape [0]), а iloc [] позволяет выбирать на основе этих чисел. То же самое относится и к столбцам (от 0 до data.shape [1]).

Наконец, Python Pandas iloc для примера выбранных данных завершен.

См. также

Pandas value_counts ()

Pandas pivot_table ()

Pandas set_index ()

Оцените статью
nanomode.ru
Добавить комментарий