Pandos konvertuoja kategorines reikšmes į tarpines

Pandos Konvertuoja Kategorines Reiksmes I Tarpines



Mašininio mokymosi vykdymo duomenų rinkiniai apima ir skaitinius, ir kategorinius kintamuosius. Kategoriniai kintamieji yra eilutės tipo duomenys, kuriuos žmonės lengvai supranta. Kita vertus, mašinos negali suprasti kategoriškos įvesties tiesiogiai. Vadinasi, kategorinis turinys turi būti paverstas skaitinėmis reikšmėmis, kurias mašinos gali interpretuoti.

Kategorinio konvertavimo į tarptautinį metodai

Čia pateikiami „pandų“ metodai, skirti konvertuoti DataFrame kategorines į int reikšmes:

    • DataFrame.replace() metodas
    • DataFrame.apply(factorize()) metodas

Mes panaudosime šiuos metodus šiame straipsnyje ir išsamiai paaiškinsime, kaip panaudoti abu metodus „pandose“.







1 pavyzdys: Pandos Replace() metodo naudojimas

Kategorinės reikšmės DataFrame gali būti konvertuojamos į int, naudojant pandos metodą „DataFrame.replace()“. Čia mes išmoksime naudoti šį metodą.



Mes panaudojome „Spyder“ įrankį, kad optimaliai vykdytume šią techniką „Python“. Norėdami pradėti rašyti scenarijų, atidarykite naują Python failą „Spyder“ įrankyje. Svarbiausias reikalavimas rašant scenarijų yra importuoti atitinkamas bibliotekas. Kadangi turime įdiegti „pandų“ metodą, turėsime „importuoti pandas kaip pd“, kad galėtume pasiekti „pandų“ funkcijas. Tada pradedame savo pagrindinį Python kodą. Sukūrėme DataFrame naudodami „pd.DataFrame()“ metodą. „DataFrame“ inicijuojamas trimis stulpeliais „Vardas“, „Laipsnis“ ir „Pajamos“. Visuose „DataFrame“ stulpeliuose saugomos tokio pat ilgio reikšmės.



Pirmajame stulpelyje „Vardas“ yra aštuonios reikšmės, kurios yra „bush“, „albert“, „harry“, „peter“, „emma“, „newton“, „smith“ ir „elsa“. Antrame stulpelyje „Laipsnis“ taip pat saugomos aštuonios kategorinės reikšmės, kurios yra „BS“, „MS“, „MS“, „BS“, „BS“, „BS“, „MS“ ir „MS“. Paskutiniame stulpelyje „Pajamos“ yra aštuonios sveikųjų skaičių reikšmės „60000“, „80000“, „75000“, „45000“, „56000“, „65000“, „55000“ ir „70000“. Sukūrėme „DataFrame“ objektą „staff“, kad išsaugotume „pd.DataFrame()“ funkcijos iškvietimo išvestį. Norėdami parodyti pradinį „DataFrame“, naudojome „print()“ metodą su DataFrame pavadinimu „staff“ kaip parametrą paskutinėje scenarijaus eilutėje.






Norėdami peržiūrėti išvestį terminale, naudokite mygtuką „Vykdyti failą“ „Spyder“ įrankyje arba paspauskite klavišus „Shift + Enter“. Terminale rodoma išvestis rodo DataFrame su trimis sėkmingai sugeneruotais stulpeliais.


Dabar mūsų „DataFrame“ yra sukurtas, mes turime pritaikyti jam reikiamą techniką. Pandų metodas „DataFrame.replace()“ bus naudojamas tam tikro stulpelio kategoriškoms reikšmėms konvertuoti į sveikųjų skaičių reikšmes, kad mašinos galėtų jas skaityti.



Pateikėme „DataFrame“ pavadinimą su konkrečiu stulpelio pavadinimu, kurio reikšmes turime pakeisti, t. y. „staff[‘degree“]. Norime, kad stulpelio „Laipsnis“, turinčio kategorines reikšmes, reikšmės būtų pakeistos sveikosiomis reikšmėmis. Tada iškviečiamas „.replace()“ metodas. Mes perdavėme jį į du rinkinius; pirmajame yra dvi kategorinės reikšmės „['BS', 'MS']), kurias ištraukėme iš stulpelio 'Laipsnis'. Kaip matote, stulpelyje „Laipsnis“ šios dvi reikšmės naudojamos pakartotinai. Jei turėtume trečią vertę, turėtume paminėti ir tai. Antrasis rinkinys turi dvi int reikšmes „[0, 1]“, kurios atitinkamai užims pirmosios rinkinio reikšmes. Kitas parametras „inplace“ nustatytas kaip „True“, leidžiantis pakeisti reikšmes. Jei nustatyta kaip „False“, pakeitimas bus išjungtas. Galiausiai panaudojome „print()“ metodą, kad būtų rodomas atnaujintas „personalo“ duomenų rėmelis.


Gautas DataFrame turi sveikųjų skaičių stulpelyje „Laipsnis“. Reikšmė „BS“ pakeičiama „0s“, o „MS“ pakeičiama „1s“.


Jūs netgi galite patikrinti kiekvieno stulpelio duomenų tipą naudodami ypatybę „dataframe.dtype“. Taip gausime visų nurodyto DataFrame stulpelių duomenų tipus.


Čia mes gavome savo „DataFrame“ duomenų tipus. Matome, kad stulpelio „Laipsnis“ duomenų tipas pakeistas į „int64“.

2 pavyzdys: Pandas apply() metodo naudojimas

Kitas metodas, kurį mums pateikė pandos, yra funkcija „DataFrame.apply()“, skirta kategoriškoms reikšmėms konvertuoti į sveikuosius skaičius. Ankstesniame pavyzdyje mes išmokome konvertuoti vieną kategorinį stulpelį į sveikąjį skaičių. Dabar pamatysime, kaip visus DataFrame kategorinius stulpelius konvertuoti į int.

Pradėdami nuo praktinio įgyvendinimo, turime importuoti pagrindinę šio metodo biblioteką, kuri yra pandos. Naudojome scenarijų „import pandas as pd“, norėdami importuoti pandas į savo Python failą „Spyder“ įrankyje, kuris leis mums pasiekti pandų modulius naudojant „pd“. Norėdami sukurti DataFrame, naudojome funkciją „pd.DataFrame()“.

Šiame „DataFrame“ yra keturi stulpeliai „grupė“, „pozicija“, „rezultatai“ ir „padėti“. Kiekviename stulpelyje saugomos 9 reikšmės. „Grupės“ stulpelio reikšmės yra „X“, „X“, „Y“, „X“, „Y“, „Y“, „Y“, „X“ ir „Y“. Stulpelyje „Pozicija“ yra 9 reikšmės, kurios yra „A“, „C“, „D“, „A“, „C“, „B“, „B“, „D“ ir „B“. Stulpelyje „balai“ yra sveikųjų skaičių reikšmės: „4“, „8“, „7“, „10“, „9“, „5“, „7“, „3“ ir „23“. Paskutiniame stulpelyje „padeda“ yra reikšmės „10“, „2“, „3“, „9“, „3“, „7“, „4“, „2“ ir „9“.

Sukūrėme DataFrame objektą „prog“ ir priskyrėme jam „pd.DataFrame()“ metodo iškvietimą. Taigi, gautas DataFrame kadras, sugeneruotas iš 'pd.DataFrame()', bus saugomas 'prog'. Dabar mes galime pasiekti DataFrame naudodami šį objektą. Norėdami peržiūrėti šį „DataFrame“, panaudojome „print()“ metodą, kurio parametras yra „DataFrame“ objektas „prog“.


Kai bus vykdoma ankstesnė Python programa, terminale bus rodomas DataFrame su keturiais stulpeliais.


Norėdami konvertuoti kelis kategorinius stulpelius į sveikuosius skaičius, taikėmės šią techniką. Pirmiausia turime pasirinkti visus stulpelius, kuriuose yra objekto duomenų tipas, naudodami pandos metodą „DataFrame.select_dtypes().columns“. Kai jį panaudosime savo scenarijuje, kaip reikalaujama, tai bus „prog.select_dtypes(['objektas']).columns“. Jis pasirinks visus stulpelius, kurių duomenų tipas yra „objektas“ „prog“ DataFrame. Sukūrėme kintamąjį „concate_col“, kad išsaugotume šio metodo išvestį. Dabar galime pasiekti „objekto“ duomenų tipo stulpelius tiesiog naudodami šį kintamąjį „concat_col“.

Dabar, norėdami konvertuoti šiuos stulpelius į sveikuosius skaičius, mes panaudojome pandas „DataFrame.apply()“ su „pd.factorize()“ metodu. Mes panaudojome „concat_col“ kintamąjį su DataFrame pavadinimu, tada iškviečiamas „.apply()“ metodas. Tarp „.apply“ metodo skliaustų mes pavadinome „pd.factorize()“ metodą, kur „x“ gali būti bet kokia reikšmė iš „prog“ DataFrame su „objekto“ duomenų tipu. Taigi visa ši kodo eilutė parašyta kaip „prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. „objekto“ duomenų tipą ir konvertuoti jį į „int“. Galutinė išvestis gali būti rodoma iškviečiant funkciją „print()“, kaip parametrą perduodant kintamąjį „prog“.


Atnaujintame DataFrame galime pastebėti, kad stulpelių „grupė“ ir „pozicija“ reikšmės iš pradžių buvo kategoriškos, ty objektas. Vis dar atnaujintame išvesties DataFrame abiejuose stulpeliuose yra sveikųjų skaičių reikšmės. Stulpelyje „Grupė“ „X“ pakeičiamas „0“, o „Y“ – „1“. Tuo tarpu „pozicijos“ stulpelis „A“ pakeičiamas „0“, „C“ – „1“, „D“ – „2“, o „B“ – „3“.


Dabar patikrinkime atnaujintus duomenų tipus.


Visų šių stulpelių duomenų tipas yra „int64“.

Išvada

Mūsų vadovas skirtas kategorinių verčių konvertavimui į skaitines reikšmes, kad mašinos galėtų jas suprasti, nes jos negali apdoroti objekto duomenų tipo. Supažindinome jus su dviem būdais, kuriuos siūlo „pandų“ biblioteka, norėdami gauti reikiamą duomenų tipą. Be to, praktiškai įgyvendindami pavyzdinius kodus, paleidžiamus „Spyder“ įrankyje, pasidalinome kiekvieno pavyzdžio rezultatais. Galiausiai, mes išsamiai aptarėme kiekvieną žingsnį, kad pasiektume norimą rezultatą.