Автор оригинала: Priyatham.
Пандас карта ()
Функция используется для отображения каждого значения от объекта серии к другому значению с использованием словаря/функции/серии. Это удобная функция для отображения значений серии из одного домена в другой домен.
Давайте посмотрим на документацию карта
функция,
- MAP – это серийный метод – эксплуатируется сверху серии объекта.
В вышеизложенном, pandas.series.map
принимает один основной аргумент, «arg».
Как упоминалось в параметрах выше, существует 3 различных типа возможных заполнителей для «arg». В простых они;
- Словарь
- Функция
- Индексированная серия
Мы подробно рассмотрим каждый из вышеперечисленных типов аргументов. Вы можете использовать любой любой, основанный на вашем использовании.
Давайте создадим dataframe, которое мы можем использовать дальше в руководстве для изучения функции карты. Данные, имеющие данные, это информация о 4 человека;
>>> import pandas as pd >>> df = pd.DataFrame( ... { ... 'Name': ['Edward', 'Natalie', 'Chris M', 'Priyatham'], ... 'Sex' : ['M', 'F', 'M', 'M'], ... 'Age': [45, 35, 29, 26], ... 'weight(kgs)': [68.4, 58.2, 64.3, 53.1] ... } ... ) >>>df Name Sex Age weight(kgs) 0 Edward M 45 68.4 1 Natalie F 35 58.2 2 Chris M M 29 64.3 3 Priyatham M 26 53.1
Каждый столбец в DATAFRAME имеет серии типа. Итак, мы можем сопоставить словарь к столбцу в DataFrame, потому что карта представляет собой серийный метод.
Из возможных различных типов аргументов на функцию карты упомянутую выше Давайте будем использовать тип словаря в этом разделе. В машинном обучении данные, которые мы предоставляем создавать модели, всегда в численной форме. Если вы соблюдаете «секс» столбец DTYPE в DataFrame ниже, это тип строки (объекта).
>>> df['Sex'] 0 M 1 F 2 M 3 M Name: Sex, dtype: object
Все значения значений столбцов «Секс» являются одним из двух дискретных значений – «M» или «F». ” М “представляя мужчину и” F “, представляющих женщину. Мы не можем предоставить этот столбец создать модель обучения машины, как это не численное число. Таким образом, использование – это преобразование этого столбца в числовой тип. Этот вид данных называется «категориальные данные» в машинном обучении терминологии.
Мы будем использовать функцию карты с аргументом словаря для преобразования столбца «секс» в числовой тип данных. Этот процесс преобразования категориальных данных на числовые данные называется «кодированием». Поскольку у нас есть только 2 категории, этот процесс кодирования называется «двоичным кодировкой».
Код для этого есть,
>>> df['Sex'].map({'F':1, 'M':0}) 0 0 1 1 2 0 3 0 Name: Sex, dtype: int64
Если вы соблюдаете вышеуказанную последовательную серию, «M» сопоставлен на 0 и «F» сопоставлен на 1 в соответствии с словарем.
Вышеуказанный процесс отображения с использованием словаря может быть визуализирован через следующее анимированное видео,
Из возможных различных типов аргументов на функцию карты упомянутую выше Давайте будем использовать тип «Функция» в этом разделе. Давайте достигнем тех же результатов вышеизложенного Словарь картирования используя функцию Python.
Нам нужно создать функцию для нее сначала. Функция должна принять все значения в «половом» столбце один за другим и преобразовывать их в соответствующие целые числа.
>>> def sexInt(category): ... if category=='M': ... return 0 ... else: ... return 1
Теперь давайте будем использовать вышеупомянутую функцию, чтобы сопоставить его в колонку «секс».
Код для этого есть,
>>> df['Sex'].map(sexInt) 0 0 1 1 2 0 3 0 Name: Sex, dtype: int64
Вышеуказанный результат такой же, как результат использования аргументарного аргумента. Мы можем проверить это по сравнению;
>>> df['Sex'].map({'M':0, 'F':1}) == df['Sex'].map(sexInt) 0 True 1 True 2 True 3 True Name: Sex, dtype: bool
Из приведенного выше результата вы можете увидеть, что оба результата равны.
Вышеуказанный процесс отображения с использованием функции может быть визуализирован через следующее анимированное видео,
Из возможных различных типов аргументов на функцию карты упомянутую выше Давайте будем использовать тип «индексированной серии» в этом разделе. Люди в нашем DataFrame готовы предоставить нам их прозвище. Предположим, что прозвища предоставляются в объекте серии. Мы хотели бы сопоставить наше «имя» столбца DataFrame в псевдонимов. Условие;
- Индекс серии псевдонимов (называемых) должен быть равен значениям столбца «Имя» (вызывающемуленсу).
Давайте построим столбец прозвища ниже с вышеупомянутым условием,
>>> nick_Name = pd.Series(['Ed', 'Nat', 'Chris', 'Priyatham'], index=df['Name']) >>> nick_Name Name Edward Ed Natalie Nat Chris M Chris Priyatham Priyatham dtype: object
Давайте сопоставьте вышеупомянутую серию в столбцу «Имя» датафарама;
Код для этого есть,
>>> df['Name'].map(nick_Name) 0 Ed 1 Nat 2 Chris 3 Priyatham Name: Name, dtype: object
- Основная точка наблюдения при применении функции карты – это индекс результирующего индекса серии равен индексу вызывающего абонента. Это важно, потому что мы можем добавить результирующую серию для DataFrame в качестве столбца.
Добавим результируемый серию в виде столбца «Nick_Name» в DataFrame,
>>> df['nick_Name'] = df['Name'].map(nick_Name) >>> df Name Sex Age weight(kgs) nick_Name 0 Edward M 45 68.4 Ed 1 Natalie F 35 58.2 Nat 2 Chris M M 29 64.3 Chris 3 Priyatham M 26 53.1 Priyatham
Вышеуказанный процесс отображения с использованием индексированной серии может быть визуализирован через следующее анимированное видео,
Каждый столбец в DataFrame представляет собой серию, и карта представляет собой серийный метод. Итак, мы видели только отображение одного столбца в вышеуказанных разделах, используя функцию карты Pandas. Но в Pands есть хаки, чтобы сделать функцию карты для нескольких столбцов. Несколько столбцов объединены вместе, образуют DataFrame. Есть процесс, называемый укладкой в пандах. «Укладка» создает серию серий (столбцов) из датафарама. Здесь все столбцы DataFrame сложены как серии для формирования другой серии.
Мы закодировали значения «M» и «F» до 0 и 1 в предыдущем разделе. При строительстве моделей машинного обучения есть шансы, где 1 интерпретируется как более 0 при выполнении расчетов. Но здесь они 2 разные категории и не сопоставимы.
Итак, давайте храним данные по-другому в нашем DataFrame. Давайте посвятить отдельные столбцы для мужчин («М») и женщина («F»). И мы можем заполнить «да» и «нет» для человека, основанного на их пола. Это представляет избыточность данных, но решает нашу обсужденную проблему выше.
Это можно сделать следующим кодом,
>>> df['Male'] = ['Yes', 'No', 'Yes', 'Yes'] >>> df['Female'] = ['No', 'Yes', 'No', 'No'] >>> df Name Sex Age weight(kgs) nick_Name Male Female 0 Edward M 45 68.4 Ed Yes No 1 Natalie F 35 58.2 Nat No Yes 2 Chris M M 29 64.3 Chris Yes No 3 Priyatham M 26 53.1 Priyatham Yes No
Теперь мы рассмотрим 2 колонны «мужчины» и «женщины» к численным значениям. Для этого мы должны взять подмножество данных DataFrame.
>>> df_subset = df[['Male', 'Female']] >>> df_subset Male Female 0 Yes No 1 No Yes 2 Yes No 3 Yes No
Вы можете наблюдать, что у нас есть dataframe двух столбцов выше. Основной точкой к запискам является оба столбца имеют одинаковый набор возможных значений.
После этого мы будем использовать взломать штабелирование и отображение двух столбцов к численным значениям. Это может быть реализовано с помощью следующего кода,
>>> df_subset.stack() 0 Male Yes Female No 1 Male No Female Yes 2 Male Yes Female No 3 Male Yes Female No dtype: object >>> df_subset.stack().map({'Yes':1, 'No':0}) 0 Male 1 Female 0 1 Male 0 Female 1 2 Male 1 Female 0 3 Male 1 Female 0 dtype: int64 >>> df_subset.stack().map({'Yes':1, 'No':0}).unstack() Male Female 0 1 0 1 0 1 2 1 0 3 1 0
Если вы соблюдаете вышеуказанный код и результаты, DataFrame сначала сложен для формирования серии. Затем метод карты применяется к сложенной серии. Наконец, отключение его приводит к тому, что числовые значения заменены DataFrame.
В машинном обучении есть процедуры для преобразования категорической переменной колонны на несколько дискретных числовых столбцов. Такой процесс кодирования называется Одно- горячая кодировка в машинном обучении терминологии.
Мы обсудили панды Применить
подробно функционировать в другой Учебное пособие Отказ карта
и Применить
Функции имеют некоторые основные различия между ними. Они есть;
- Первая разница есть;
карта
это только серия методом.Применить
является как серия, так и датафарам.
- Вторая разница есть;
карта
Принимает Dict/Series/Функция как аргументПрименить
принимает единственную функцию в качестве аргумента
- Третье различие;
карта
Элементная операция по серииПрименить
используется для сложных элементных операций на серии и DataFrame
- Четвертое значение:
карта
используется в основном, чтобы значения отображения с помощью словаряПрименить
используется для применения функций, которые недоступны в качестве векторизованных процедур агрегации на DataFrames
Функция карты используется в основном для отображения значений серии, используя словарь. Всякий раз, когда вы находите какие-либо категорические данные, вы можете подумать о методе карты для преобразования их в числовые значения. Если вам понравилось это руководство по карта ()
Функция и как обучение на основе викторины, пожалуйста, подумайте о том, чтобы попробовать прочитать наш Кофе-брейк Пандас книга.
Оригинал: “https://blog.finxter.com/a-visual-guide-to-pandas-map-function/”