Pandas Преобразува категорични стойности в Int стойности

Pandas Preobrazuva Kategoricni Stojnosti V Int Stojnosti



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

Методи за преобразуване на категорични в Int

Наличните техники в „pandas“ за преобразуване на категоричните в int стойности на DataFrame са предоставени тук:

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

Ще използваме тези методи в тази статия и ще обясним подробно как да използвате и двата метода в „pandas“.







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

Категоричните стойности в DataFrame могат да бъдат преобразувани в int с помощта на метода „DataFrame.replace()“ на pandas. Тук ще се научим да използваме този метод.



Използвахме инструмента „Spyder“, за да изпълним оптимално тази техника в Python. За да започнете да пишете скрипта, отворете нов Python файл в инструмента „Spyder“. Най-важното изискване за написването на скрипта е да импортирате подходящи библиотеки. Тъй като трябва да внедрим метод „pandas“, ще имаме „import pandas as pd“ за достъп до функциите на „pandas“. След това стартираме основния код на 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()“ с името „staff“ на DataFrame като негов параметър в последния ред на скрипта.






За да видите изхода на терминала, използвайте бутона „Изпълни файл“ на инструмента „Spyder“ или натиснете клавишите „Shift+Enter“. Изходът, показан на терминала, показва DataFrame с три колони, които са били успешно генерирани.


Сега, нашата DataFrame е конструирана, трябва да приложим необходимата техника към нея. Методът „DataFrame.replace()“ на pandas ще бъде използван за преобразуване на категоричните стойности на определена колона в цели числа, така че машините да могат да ги направят четими.



Предоставили сме името на DataFrame с конкретното име на колона, чиито стойности трябва да заменим, което е „персонал [‘степен’]“. Искаме стойностите на колоната „Степен“, която има категориални стойности, да бъдат заменени с цели числа. След това се извиква методът “.replace()”. Предадохме го на два комплекта; първият съдържа двете категорични стойности „[„BS“, „MS“]“, които извлякохме от колоната „Степен“. Както можете да видите, колоната „Степен“ използва тези две стойности многократно. Ако имахме трета стойност, трябва да сме споменали и това. Вторият набор има две int стойности “[0, 1]”, които ще заемат съответно мястото на стойностите на първия набор. Другият параметър, „inplace“, е зададен като „True“, което позволява замяната на стойности. Ако е зададено на „False“, това ще деактивира замяната. И накрая, ние използвахме метода „print()“, за да покажем актуализираната DataFrame „персонал“.


Получената DataFrame има цели числа в колоната „Степен“. Стойността „BS“ се заменя с „0s“, а „MS“ се заменя с „1s“.


Можете дори да проверите типа данни за всяка колона, като използвате свойството „dataframe.dtype“. Това ще ни даде типове данни на всички колони в посочения DataFrame.


Тук имаме типовете данни на нашия DataFrame. Виждаме, че типът данни на колоната „Степен“ е променен на „int64“.

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

Другият метод, който 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 с четири колони.


За да преобразуваме множество категорични колони в цели числа, ние следвахме тази техника. Първо трябва да изберем всички колони, които съдържат тип данни на обекта, като използваме метода „DataFrame.select_dtypes().columns“ на pandas. Когато го използваме в нашия скрипт според изискванията, той ще бъде „prog.select_dtypes([‘object’]).columns“. Той ще избере всички колони с тип данни „обект“ в „prog“ DataFrame. Създадохме променлива „concate_col“, за да съхраняваме изхода на този метод. Вече можем да осъществим достъп до колоните с тип данни „обект“ просто като използваме тази променлива „concat_col“.

Сега, за да преобразуваме тези колони в цели числа, използвахме пандата „DataFrame.apply()“ с метода „pd.factorize()“. Използвахме променливата „concat_col“ с името на DataFrame, след което се извиква методът „.apply()“. Между скобите на метода „.apply“ сме нарекли метода „pd.factorize()“, където „x“ може да бъде всяка стойност от „prog“ DataFrame с тип данни „object“. По този начин целият този ред код е написан като „prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. Методът factorize ще приеме стойност с тип данни „обект“ и го преобразувайте в „int“. Крайният изход може да бъде показан чрез извикване на функцията “print()” чрез предаване на променливата “prog” като неин параметър.


В актуализирания DataFrame можем да наблюдаваме стойностите на колоните „група“ и „позиция“ първоначално са били категорични, т.е. обект. Все още в актуализирания изход DataFrame и двете колони имат цели числа. В колоната „група“ „X“ се заменя с „0“, а „Y“ с „1“. Докато колоната „позиция“ „A“ се заменя с „0“, „C“ с „1“, „D“ с „2“ и „B“ с „3“.


Сега нека проверим актуализираните типове данни.


Всички следващи колони имат тип данни „int64“.

Заключение

Нашето ръководство се върти около преобразуването на категорични стойности в числени стойности, така че да могат да бъдат разбрани от машините, тъй като типът данни на обекта не може да бъде обработен от тях. Запознахме ви с двата подхода, представени от библиотеката „pandas“, за да получите необходимия тип данни. Също така, с практическото внедряване на примерни кодове, изпълнявани на инструмента „Spyder“, ние споделихме резултата от всеки пример. И накрая, разработихме подробно всяка стъпка, за да постигнем желания резултат.