Metode de conversie categoric în int
Tehnicile disponibile în „pandas” pentru conversia valorilor categorice în int ale unui DataFrame sunt furnizate aici:
-
- Metoda DataFrame.replace().
- Metoda DataFrame.apply(factorize()).
Vom folosi aceste metode în acest articol și vom explica în detaliu cum să folosim ambele metode în „pandas”.
Exemplul # 1: Utilizarea metodei Pandas Replace().
Valorile categoriale dintr-un DataFrame pot fi convertite în int utilizând metoda pandas „DataFrame.replace()”. Vom învăța aici să folosim această metodă.
Am folosit instrumentul „Spyder” pentru a executa în mod optim această tehnică în Python. Pentru a începe să scrieți scriptul, deschideți un nou fișier Python în instrumentul „Spyder”. Cea mai importantă cerință pentru scrierea scriptului este importarea bibliotecilor adecvate. Deoarece trebuie să implementăm o metodă „pandas”, vom avea „import panda as pd” pentru a accesa funcțiile „pandas”. Apoi începem codul nostru de bază Python. Am creat un DataFrame folosind metoda „pd.DataFrame()”. DataFrame este inițializat de trei coloane „Nume”, „Grad” și „Venit”. Toate coloanele DataFrame stochează aceeași lungime de valori.
Prima coloană, „Nume”, are opt valori care sunt „bush”, „albert”, „harry”, „peter”, „emma”, „newton”, „smith” și „elsa”. A doua coloană, „Grad”, stochează, de asemenea, opt valori categorice, care sunt „BS”, „MS”, „MS”, „BS”, „BS”, „BS”, „MS” și „MS”. Ultima coloană „Venituri” are opt valori întregi „60000”, „80000”, „75000”, „45000”, „56000”, „65000”, „55000” și „70000”. Am creat un obiect DataFrame „staff” pentru a stoca rezultatul invocării funcției „pd.DataFrame()”. Pentru a afișa DataFrame-ul nostru inițial, am folosit metoda „print()” cu numele DataFrame „staff” ca parametru în linia finală a scriptului.
Pentru a vizualiza rezultatul pe terminal, utilizați butonul „Run File” din instrumentul „Spyder” sau apăsați tastele „Shift+Enter”. Ieșirea afișată pe terminal arată un DataFrame cu trei coloane care au fost generate cu succes.
Acum, DataFrame-ul nostru este construit, trebuie să îi aplicăm tehnica necesară. Metoda Pandas „DataFrame.replace()” va fi utilizată pentru a converti valorile categorice ale unei coloane specificate în valori întregi, astfel încât mașinile să le poată face lizibile.
Am furnizat numele DataFrame-ului cu numele de coloană special ale cărui valori trebuie să le înlocuim, care este „staff[‘grad’]”. Dorim ca valorile coloanei „Grad”, care are valori categorice, să fie înlocuite cu valori întregi. Apoi este invocată metoda „.replace()”. L-am trecut în două seturi; prima conține cele două valori categoriale „[‘BS’, ‘MS’]” pe care le-am extras din coloana „Grad”. După cum puteți vedea, coloana „Grad” folosește aceste două valori în mod repetat. Dacă am avea o a treia valoare, trebuie să fi menționat și asta. Al doilea set are două valori int „[0, 1]”, care vor înlocui, respectiv, primele valori setate. Celălalt parametru, „inplace”, este setat ca „True”, permițând înlocuirea valorilor. Dacă este setată la „False”, aceasta va dezactiva înlocuirea. În cele din urmă, am folosit metoda „print()” pentru a afișa DataFrame actualizat „staff”.
DataFrame rezultat are valori întregi în coloana „Grad”. Valoarea „BS” este înlocuită cu „0s”, iar „MS” este înlocuită cu „1s”.
Puteți chiar să verificați tipul de date pentru fiecare coloană folosind proprietatea „dataframe.dtype”. Acest lucru ne va obține tipuri de date ale tuturor coloanelor din DataFrame specificat.
Aici, avem tipurile de date ale DataFrame. Putem vedea că tipul de date al coloanei „Grad” este schimbat în „int64”.
Exemplul # 2: Folosind metoda Pandas apply().
Cealaltă metodă pe care ne-au oferit-o Pandas este funcția „DataFrame.apply()” pentru conversia valorilor categorice în numere întregi. În exemplul anterior, am învățat să convertim o coloană categorică într-un număr întreg. Vom vedea acum cum să convertim toate coloanele categorice din DataFrame într-un int.
Începând cu implementarea practică, trebuie să importam biblioteca esențială pentru această metodă, care este panda. Am folosit scriptul „import panda ca pd” pentru a importa panda în fișierul nostru Python în instrumentul „Spyder”, ceea ce ne va permite să accesăm modulele panda folosind „pd”. Am folosit funcția „pd.DataFrame()” pentru a construi un DataFrame.
Acest DataFrame are patru coloane „grup”, „poziție”, „scoruri” și „asistențe”. Fiecare coloană stochează 9 valori. Valorile coloanei „grup” sunt „X”, „X”, „Y”, „X”, „Y”, „Y”, „Y”, „X” și „Y”. Coloana „poziție” are 9 valori care sunt „A”, „C”, „D”, „A”, „C”, „B”, „B”, „D” și „B”. Coloana „scoruri” are valori întregi ca „4”, „8”, „7”, „10”, „9”, „5”, „7”, „3” și „23”. Ultima coloană, „asistență”, are valorile „10”, „2”, „3”, „9”, „3”, „7”, „4”, „2” și „9”.
Am creat un obiect DataFrame „prog” și i-am atribuit rezultatul invocării metodei „pd.DataFrame()”. Deci, cadrul DataFrame rezultat generat din „pd.DataFrame()” va fi stocat în „prog”. Acum, putem accesa DataFrame folosind acest obiect. Pentru a vizualiza acest DataFrame, am folosit metoda „print()” cu obiectul DataFrame „prog” ca parametru.
Când programul Python anterior este executat, pe terminal va fi afișat un DataFrame cu patru coloane.
Pentru a converti mai multe coloane categorice în numere întregi, am urmat această tehnică. Mai întâi trebuie să selectăm toate coloanele care conțin tipul de date obiect utilizând metoda pandas „DataFrame.select_dtypes().columns”. Când îl folosim în scriptul nostru după cum este necesar, va fi „prog.select_dtypes([‘object’]).columns”. Acesta va selecta toate coloanele care au tipul de date „obiect” în DataFrame „prog”. Am creat o variabilă „concate_col” pentru a stoca rezultatul acestei metode. Acum putem accesa coloanele tip de date „obiect” pur și simplu folosind această variabilă „concat_col”.
Acum, pentru a converti aceste coloane în numere întregi, am folosit panda „DataFrame.apply()” cu metoda „pd.factorize()”. Am folosit variabila „concat_col” cu numele DataFrame, apoi este invocată metoda „.apply()”. Între parantezele metodei „.apply”, am numit metoda „pd.factorize()” unde „x” poate fi orice valoare din DataFrame „prog” cu tipul de date „object”. Astfel, toată această linie de cod este scrisă ca „prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. Metoda factorize va lua o valoare cu un tip de date „obiect” și convertiți-l în „int”. Ieșirea finală poate fi afișată prin apelarea funcției „print()” prin trecerea variabilei „prog” ca parametru.
În DataFrame actualizat, putem observa că valorile coloanelor „grup” și „poziție” au fost inițial categorice, adică obiect. Încă în DataFrame de ieșire actualizat, ambele coloane au valori întregi. În coloana „grup”, „X” este înlocuit cu „0” și „Y” cu „1”. În timp ce coloana „poziție” „A” este înlocuită cu „0”, „C” cu „1”, „D” cu „2” și „B” cu „3”.
Acum, să verificăm tipurile de date actualizate.
Toate coloanele următoare au tipul de date „int64”.
Concluzie
Ghidul nostru se învârte în jurul conversiei valorilor categorice în valori numerice, astfel încât acestea să poată fi înțelese de către mașini, deoarece tipul de date al obiectului nu poate fi procesat de acestea. V-am prezentat cele două abordări prezentate de biblioteca „pandas” pentru a obține tipul de date necesar. De asemenea, odată cu implementarea practică a exemplelor de coduri rulate pe instrumentul „Spyder”, am împărtășit rezultatul fiecărui exemplu. În sfârșit, am detaliat fiecare pas pentru a obține rezultatul dorit.