Pandas конвертирует категориальные значения в значения Int

Pandas Konvertiruet Kategorial Nye Znacenia V Znacenia Int

Наборы данных для выполнения машинного обучения включают как числовые, так и категориальные переменные. Категориальные переменные — это данные строкового типа, которые легко воспринимаются людьми. С другой стороны, машины не могут напрямую понимать категориальные входные данные. Следовательно, категориальное содержание должно быть преобразовано в числовые значения, которые могут интерпретировать машины.

Методы преобразования категориального в целое число

Методы, доступные в «пандах» для преобразования категориальных значений в целочисленные значения DataFrame, представлены здесь:

    • Метод DataFrame.replace()
    • Метод DataFrame.apply(factorize())

Мы будем использовать эти методы в этой статье и подробно объясним, как использовать оба метода в «пандах».







Пример № 1: Использование метода Pandas Replace()

Категориальные значения в DataFrame можно преобразовать в int с помощью метода pandas «DataFrame.replace ()». Здесь мы научимся использовать этот метод.



Мы использовали инструмент Spyder для оптимального выполнения этой техники в Python. Чтобы начать писать скрипт, откройте новый файл Python в инструменте «Spyder». Наиболее важным требованием для написания скрипта является импорт соответствующих библиотек. Поскольку нам нужно реализовать метод «панд», у нас будет «импорт панд как pd» для доступа к функциям «панд». Затем мы запускаем наш основной код Python. Мы создали DataFrame, используя метод «pd.DataFrame()». DataFrame инициализируется тремя столбцами «Имя», «Степень» и «Доход». Все столбцы DataFrame хранят значения одинаковой длины.



Первый столбец «Имя» имеет восемь значений: «буш», «альберт», «гарри», «питер», «эмма», «ньютон», «смит» и «эльза». Во втором столбце «Степень» также хранятся восемь категориальных значений: «BS», «MS», «MS», «BS», «BS», «BS», «MS» и «MS». Последний столбец «Доход» имеет восемь целочисленных значений «60000», «80000», «75000», «45000», «56000», «65000», «55000» и «70000». Мы создали объект DataFrame «staff» для хранения результатов вызова функции «pd.DataFrame()». Чтобы отобразить наш исходный DataFrame, мы использовали метод «print ()» с именем DataFrame «staff» в качестве параметра в последней строке скрипта.






Чтобы просмотреть вывод на терминале, используйте кнопку «Запустить файл» в инструменте «Spyder» или нажмите клавиши «Shift + Enter». Вывод, отображаемый на терминале, показывает DataFrame с тремя столбцами, которые были успешно сгенерированы.


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



Мы предоставили имя DataFrame с конкретным именем столбца, значения которого нам нужно заменить, а именно «персонал [‘степень’]». Мы хотим, чтобы значения столбца «Степень», в котором есть категориальные значения, были заменены целыми значениями. Затем вызывается метод «.replace()». Мы разделили его на два набора; первый содержит два категориальных значения «[‘BS’, ‘MS’]», которые мы извлекли из столбца «Степень». Как видите, в столбце «Степень» эти два значения используются неоднократно. Если бы у нас было третье значение, мы должны были бы упомянуть и его. Второй набор имеет два значения int «[0, 1]», которые заменят значения первого набора соответственно. Другой параметр «inplace» установлен как «True», что позволяет заменять значения. Если установлено значение «False», замена будет отключена. Наконец, мы использовали метод «print ()» для отображения обновленного кадра данных «персонал».


Результирующий DataFrame имеет целочисленные значения в столбце «Степень». Значение «BS» заменяется на «0s», а «MS» заменяется на «1s».


Вы даже можете проверить тип данных для каждого столбца, используя свойство «dataframe.dtype». Это даст нам типы данных всех столбцов в указанном DataFrame.


Здесь мы получили типы данных нашего DataFrame. Мы видим, что тип данных столбца «Степень» изменен на «int64».

Пример № 2: Использование метода Pandas apply()

Другой метод, предоставленный нам pandas, — это функция «DataFrame.apply()» для преобразования категориальных значений в целые числа. В предыдущем примере мы научились преобразовывать один категориальный столбец в целое число. Теперь мы увидим, как преобразовать все категориальные столбцы в DataFrame в тип int.

Начиная с практической реализации, мы должны импортировать основную библиотеку для этого метода, а именно pandas. Мы использовали скрипт «import pandas as pd» для импорта pandas в наш файл Python в инструменте «Spyder», что позволит нам получить доступ к модулям pandas с помощью «pd». Мы использовали функцию «pd.DataFrame()» для создания DataFrame.

Этот DataFrame имеет четыре столбца «группа», «позиция», «оценки» и «ассисты». В каждом столбце хранится 9 значений. Значения столбца «группа»: «X», «X», «Y», «X», «Y», «Y», «Y», «X» и «Y». Столбец «позиция» имеет 9 значений: «A», «C», «D», «A», «C», «B», «B», «D» и «B». Столбец «баллы» имеет целочисленные значения: «4», «8», «7», «10», «9», «5», «7», «3» и «23». Последний столбец «ассисты» имеет значения «10», «2», «3», «9», «3», «7», «4», «2» и «9».

Мы создали объект DataFrame «prog» и присвоили ему результат вызова метода «pd.DataFrame()». Таким образом, результирующий кадр DataFrame, сгенерированный из «pd.DataFrame()», будет сохранен в «prog». Теперь мы можем получить доступ к DataFrame с помощью этого объекта. Чтобы просмотреть этот DataFrame, мы использовали метод «print ()» с объектом DataFrame «prog» в качестве параметра.


Когда предыдущая программа Python будет выполнена, на терминале будет отображаться DataFrame с четырьмя столбцами.


Чтобы преобразовать несколько категориальных столбцов в целые числа, мы использовали эту технику. Сначала нам нужно выбрать все столбцы, которые содержат тип данных объекта, используя метод pandas «DataFrame.select_dtypes().columns». Когда мы используем его в нашем скрипте по мере необходимости, это будет «prog.select_dtypes([‘object’]).columns». Он выберет все столбцы, имеющие тип данных «object» в «prog» DataFrame. Мы создали переменную «concate_col» для хранения вывода этого метода. Теперь мы можем получить доступ к столбцам типа данных «объект», просто используя эту переменную «concat_col».

Теперь, чтобы преобразовать эти столбцы в целые числа, мы использовали pandas «DataFrame.apply ()» с методом «pd.factorize ()». Мы использовали переменную «concat_col» с именем DataFrame, после чего вызывается метод «.apply()». Между скобками метода «.apply» мы назвали метод «pd.factorize()», где «x» может быть любым значением из кадра данных «prog» с типом данных «object». Таким образом, вся эта строка кода записывается как «prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])». Метод факторизации примет значение с тип данных «object» и преобразовать его в «int». Окончательный вывод можно отобразить, вызвав функцию «print()», передав переменную «prog» в качестве ее параметра.


В обновленном DataFrame мы можем наблюдать, что значения столбцов «группа» и «позиция» изначально были категориальными, т. е. объектными. Все еще в обновленном выходном DataFrame оба столбца имеют целочисленные значения. В столбце «группа» «X» заменяется на «0», а «Y» на «1». При этом столбец «позиция» «А» заменяется на «0», «С» на «1», «D» на «2» и «В» на «3».


Теперь давайте проверим обновленные типы данных.


Все следующие столбцы имеют тип данных «int64».

Вывод

Наше руководство вращается вокруг преобразования категориальных значений в числовые значения, чтобы они могли быть понятны машинам, поскольку тип данных объекта не может быть ими обработан. Мы познакомили вас с двумя подходами, предлагаемыми библиотекой «pandas», для получения требуемого типа данных. Кроме того, с практической реализацией примеров кода, запускаемых в инструменте «Spyder», мы делились результатами каждого примера. Наконец, мы подробно рассказали о каждом шаге для достижения желаемого результата.