Панды - лучший друг Data Scientist, а индекс - невидимая душа, стоящая за пандами.

Мы тратим много времени на такие методы, как loc, iloc, filtering, stack / unstack, concat, merge, pivot и многие другие, обрабатывая и анализируя наши данные, особенно когда мы работаем над новой проблемой. И эти методы используют индексы, даже большинство ошибок, с которыми мы сталкиваемся, являются ошибками индексов. Индекс стал более важным в данных временных рядов. Визуализация также требует хорошего контроля над индексом панд.

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

У алгоритмов машинного / глубокого обучения есть предел производительности при точности прогнозов, как и у их предков, статистических моделей, так как же добиться значительно большей точности? Подавайте лучшие данные для обучения. Обработка данных и разработка функций - ключ к успеху

Pandas имеет три структуры данных: фрейм данных, серию и панель. В основном мы используем фреймы данных и ряды, и оба они используют индексы, что делает их очень удобными для анализа.

Пора сделать шаг назад и взглянуть на указатель панд. Это дает нам возможность стать лучшим специалистом по обработке данных.

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

Бизнес Проблема: классификация (человек зарабатывает более 50 тыс. или меньше) Прогнозирующая переменная: метка; Предикторы: страна, возраст, образование, род занятий, семейное положение и т. д.

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

adult  = pd.read_csv("https://archive.ics.uci.edu/ml/machine-    learning-databases/adult/adult.data", names = ['age','workclass','fnlwgt', 'education',    'education_num','marital_status','occupation','relationship','race','sex','capital_gain','capital_loss', 'hours_per_week', 'native_country','label'], index_col = False)
print("Shape of data{}".format(adult.shape))
adult.head()

Набор данных содержит 32561 строку и 15 функций, крайняя левая серия 0,1 2,3… является индексной. Давайте посмотрим на дополнительную информацию.

Adult имеет диапазон значений 32561, целочисленный ряд от 0 до 32560.

Методы отбора

  1. df.loc для меток / имен
  2. df.iloc для номеров позиций

например Предположим, Рам, Сону и Тони стоят на позициях 1, 2 и 3 соответственно. Если вы хотите позвонить Раму, у вас есть два варианта: вы можете позвонить ему по имени или по номеру должности. Итак, если вы назовете Рама по имени «Рам», вы будете использовать df.loc, а если мы будем называть его по номеру позиции «1», мы будем использовать df.iloc.

Прежде чем мы поймем подробнее loc и iloc, давайте возьмем образец наших данных для дальнейшего анализа. Мы берем выборку из 10000 наблюдений, используя метод pandas df.sample.

Отлично, теперь у нас есть имя набора данных df, а крайний левый ряд - 3,4,6,8, 11… Странно!

Это потому, что строки будут нести свой исходный (старый адрес) индекс или имена индексов из набора данных для взрослых.

Поначалу нам немного поможет наименование нашего индекса, это индексы из набора данных для взрослых.
посмотрите на индексы строк и столбцов.

И строки, и столбцы имеют индексы, имя индекса - index_adult.

Давайте обсудим пару примеров методов loc & iloc.

В первом примере файла .loc возникла ошибка.

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

попробуйте заменить 2 на 3 или 4, это сработает, потому что есть имена "3", "4" как названия позиций

В втором примере мы пытаемся сделать то же самое с .iloc, методом на основе номера позиции.

«Age» - это первый столбец, поэтому мы будем использовать его позицию, равную 0.

до последней строки df будет позиция 0,1,2,3, поэтому 2 будет третьей строкой

Для дальнейшего анализа оставим только несколько интересных переменных.

Иногда бывает сложно работать со случайными числами в индексе, тогда сброс этого индекса сделает его столбцом и воссоздает другой индекс по умолчанию.

reset_index () будет воссоздавать столбец индекса каждый раз, когда мы запускаем его для одних и тех же данных.
Параметр drop = True не будет создавать его как столбец в dataframe, посмотрите на разницу между следующими двумя наборами данных

`inplace = Tru e` избавит нас от повторного присвоения его данным
мы не используем` drop = True `, теперь df должен иметь свой последний индекс как столбец в нем

df имеет другой столбец index_adult из-за сброса

Фильтрация

Фильтр по Индии

После сброса нашего индекса и применения фильтра для Индии мы можем видеть, что индекс удерживается из df, точно так же, как выборка, теперь индекс строки (4, 312, 637, 902 ..) взят из df, а index_adult - это индексы этих ряды у взрослых

Давайте посмотрим на наблюдения с доходом более 50 тысяч у мужчин и женщин.

Даже у этого фрейма данных есть индекс, который трудно распознать, глядя на фрейм данных, и к отдельным элементам можно получить доступ, например

Отфильтровать набор данных ind для людей с доходом более 50 тыс.

индексы не повреждены со своими строками, как и адрес

Очень впечатляет, эти люди действительно хорошо зарабатывают. Давайте попробуем узнать их рабочее время, поскольку у нас нет «hours_per_week» в этих данных, мы получим его от взрослого с помощью индексов.

Индексы упростили получение дополнительной информации. Вышеупомянутую формулу можно понять как фильтрацию для взрослых [‘hours_per_week’] по адресу index_adult для ind_50.

среднее количество рабочих часов в неделю для людей, которые зарабатывают более 50 тыс.

Просто с помощью index_adult мы смогли легко вывести информацию о другом столбце

Индекс делает фильтрацию очень простой, а также дает вам пространство для перемещения вперед и назад в ваших данных

последнее использование указателя для этого вводного упражнения

Фильтрация дополнительного набора из данных, точно так же, как обучение и тестирование из общего набора данных

мы нарезаем ту часть ind, которой нет в ind_50, т.е. людей, которые зарабатывают менее 50k

Отлично! Судя по этой выборке данных, люди, которые зарабатывают 50 тысяч и больше, работают больше часов в неделю.

Jupyter nb можно скачать с этого Github-репо.

Истинные возможности индекса pandas могут быть реализованы только тогда, когда мы детализируем наши данные с помощью мультииндексации и визуализации. Посетите мое следующее упражнение по стеку / разложению, сводной_таблице и кросс-таблице

Спасибо за прочтение. Если вам понравилась эта статья, вам также могут понравиться Pandas Pivot & Stacking, Scaling & Transformation When & Where

  • Чтобы узнать больше, подпишитесь на меня на Medium
  • Давайте подключимся к Linkedin