Kino-convert ng mga Panda ang Mga Kategoryang Halaga sa Mga Halaga ng Int

Kino Convert Ng Mga Panda Ang Mga Kategoryang Halaga Sa Mga Halaga Ng Int



Kasama sa mga dataset para sa machine learning execution ang mga numerical at categorical na variable. Ang mga kategoryang variable ay string-type na data na madaling maunawaan ng mga tao. Ang mga makina, sa kabilang banda, ay hindi direktang maunawaan ang mga kategoryang input. Dahil dito, ang nilalamang pangkategorya ay dapat na gawing mga numerong halaga na maaaring bigyang-kahulugan ng mga makina.

Mga Paraan para sa Pag-convert ng Kategorya sa Int

Ang mga pamamaraan na magagamit sa 'pandas' para sa pag-convert ng kategorya sa mga int na halaga ng isang DataFrame ay ibinigay dito:

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

Gagamitin namin ang mga pamamaraang ito sa artikulong ito at ipaliwanag nang detalyado kung paano gamitin ang parehong mga pamamaraan sa 'pandas'.







Halimbawa # 1: Paggamit ng Pandas Replace() Method

Ang mga pangkategoryang halaga sa isang DataFrame ay maaaring i-convert sa int sa pamamagitan ng paggamit ng pandas na 'DataFrame.replace()' na paraan. Matututunan natin dito kung paano gamitin ang pamamaraang ito.



Ginamit namin ang tool na 'Spyder' upang mahusay na maisagawa ang diskarteng ito sa Python. Upang simulan ang pagsulat ng script, magbukas ng bagong Python file sa tool na 'Spyder'. Ang pinakamahalagang kinakailangan para sa pagsulat ng script ay ang pag-import ng mga naaangkop na aklatan. Dahil kailangan nating magpatupad ng pamamaraang 'pandas', magkakaroon tayo ng 'import pandas bilang pd' upang ma-access ang mga tampok ng 'pandas'. Pagkatapos ay sisimulan namin ang aming pangunahing code ng Python. Gumawa kami ng DataFrame gamit ang 'pd.DataFrame()' na paraan. Ang DataFrame ay sinisimulan ng tatlong column na 'Pangalan', 'Degree', at 'Kita'. Ang lahat ng mga column ng DataFrame ay nag-iimbak ng parehong haba ng mga halaga.



Ang unang column, 'Pangalan', ay may walong value na 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith', at 'elsa'. Ang ikalawang hanay, 'Degree', ay nag-iimbak din ng walong kategoryang halaga, na 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS', at 'MS'. Ang huling column na 'Income' ay may walong integer value na '60000', '80000', '75000', '45000', '56000', '65000', '55000', at '70000'. Gumawa kami ng object ng DataFrame na 'staff' upang iimbak ang output ng paggamit ng function na 'pd.DataFrame()'. Upang ipakita ang aming paunang DataFrame, ginamit namin ang 'print()' na paraan na may pangalan ng DataFrame na 'staff' bilang parameter nito sa huling linya ng script.






Upang tingnan ang output sa terminal, gamitin ang 'Run File' na buton sa 'Spyder' na tool o pindutin ang 'Shift+Enter' keys. Ang output na ipinapakita sa terminal ay nagpapakita ng DataFrame na may tatlong column na matagumpay na nabuo.


Ngayon, ang aming DataFrame ay binuo, kailangan naming ilapat ang kinakailangang pamamaraan dito. Gagamitin ang paraan ng pandas na “DataFrame.replace()” upang i-convert ang mga pangkategoryang value ng isang tinukoy na column sa mga integer value para magawa ng mga machine na mabasa ang mga ito.



Ibinigay namin ang pangalan ng DataFrame na may partikular na pangalan ng column na ang mga value ay kailangan naming palitan, na 'staff['degree']'. Gusto naming mapalitan ng mga halaga ng integer ang mga halaga ng column na 'Degree', na may mga pangkategoryang halaga. Pagkatapos ay ginagamit ang '.replace()' na paraan. Naipasa namin ito sa dalawang set; ang una ay naglalaman ng dalawang pangkategoryang value na '['BS', 'MS']' na kinuha namin mula sa column na 'Degree'. Gaya ng nakikita mo, paulit-ulit na ginagamit ng column na 'Degree' ang dalawang value na ito. Kung mayroon tayong pangatlong halaga, dapat nabanggit din natin iyon. Ang pangalawang set ay may dalawang int value na '[0, 1]', na papalit sa unang set na value ayon sa pagkakabanggit. Ang iba pang parameter, 'inplace', ay nakatakda bilang 'True', na nagpapagana sa pagpapalit ng mga value. Kung itatakda sa 'False', idi-disable nito ang pagpapalit. Sa wakas, ginamit namin ang 'print()' na paraan upang ipakita ang na-update na 'staff' na DataFrame.


Ang resultang DataFrame ay may mga integer na halaga sa column na 'Degree'. Ang halagang 'BS' ay pinalitan ng '0s', at ang 'MS' ay pinalitan ng '1s'.


Maaari mo ring i-verify ang datatype para sa bawat column sa pamamagitan ng paggamit ng property na “dataframe.dtype”. Bibigyan tayo nito ng mga datatype ng lahat ng column sa tinukoy na DataFrame.


Dito, nakuha namin ang mga datatype ng aming DataFrame. Makikita natin na ang datatype ng column na 'Degree' ay binago sa 'int64'.

Halimbawa # 2: Paggamit ng Pandas apply() method

Ang iba pang paraan ng pandas na ibinigay sa amin ay ang function na 'DataFrame.apply()' para sa pag-convert ng mga pangkategoryang halaga sa mga integer. Sa nakaraang halimbawa, natutunan nating i-convert ang isang kategoryang column sa isang integer. Makikita natin ngayon kung paano i-convert ang lahat ng kategoryang column sa DataFrame sa isang int.

Simula sa praktikal na pagpapatupad, dapat nating i-import ang mahahalagang aklatan para sa pamamaraang ito, na pandas. Ginamit namin ang script na 'import pandas bilang pd' upang mag-import ng mga pandas sa aming Python file sa tool na 'Spyder', na magbibigay-daan sa amin na ma-access ang mga pandas module gamit ang 'pd'. Ginamit namin ang function na 'pd.DataFrame()' upang bumuo ng DataFrame.

Ang DataFrame na ito ay may apat na column na “group”, “position”, “scores”, at “assists”. Ang bawat column ay nag-iimbak ng 9 na halaga. Ang mga value ng column na 'grupo' ay 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X', at 'Y'. Ang column na 'posisyon' ay may 9 na value na 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D', at 'B'. Ang column na 'mga score' ay may mga integer na halaga bilang '4', '8', '7', '10', '9', '5', '7', '3', at '23'. Ang huling column, 'assists', ay may mga value na '10', '2', '3', '9', '3', '7', '4', '2', at '9'.

Gumawa kami ng object ng DataFrame na 'prog' at itinalaga dito ang output ng paggamit ng 'pd.DataFrame()' na paraan. Kaya, ang resultang DataFrame frame na nabuo mula sa 'pd.DataFrame()' ay maiimbak sa 'prog'. Ngayon, maa-access natin ang DataFrame sa pamamagitan ng paggamit ng bagay na ito. Upang tingnan ang DataFrame na ito, ginamit namin ang 'print()' na paraan kasama ang DataFrame object na 'prog' bilang parameter nito.


Kapag ang nakaraang Python program ay naisakatuparan, isang DataFrame na may apat na column ang ipapakita sa terminal.


Upang i-convert ang maramihang mga hanay ng kategorya sa mga integer, sinunod namin ang diskarteng ito. Kailangan muna nating piliin ang lahat ng column na naglalaman ng object datatype sa pamamagitan ng paggamit ng pandas na 'DataFrame.select_dtypes().columns' na paraan. Kapag ginamit namin ito sa aming script kung kinakailangan, ito ay magiging 'prog.select_dtypes(['object']).columns'. Pipiliin nito ang lahat ng column na mayroong datatype na 'object' sa 'prog' DataFrame. Gumawa kami ng variable na 'concate_col' upang iimbak ang output ng pamamaraang ito. Maa-access na natin ngayon ang mga column ng 'object' datatype sa pamamagitan lamang ng paggamit ng variable na ito na 'concat_col'.

Ngayon, para i-convert ang mga column na ito sa mga integer, ginamit namin ang pandas na “DataFrame.apply()” gamit ang “pd.factorize()” na paraan. Ginamit namin ang variable na 'concat_col' na may pangalan ng DataFrame pagkatapos ay ginagamit ang pamamaraang '.apply()'. Sa pagitan ng parenthesis ng '.apply' na paraan, tinawag namin ang 'pd.factorize()' na paraan kung saan ang 'x' ay maaaring maging anumang halaga mula sa 'prog' DataFrame na may 'object' datatype. Kaya, ang buong linya ng code na ito ay nakasulat bilang 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'.Ang paraan ng factorize ay kukuha ng halaga na may isang 'object' datatype at i-convert ito sa 'int'. Ang huling output ay maaaring ipakita sa pamamagitan ng pagtawag sa 'print()' function sa pamamagitan ng pagpasa sa 'prog' variable bilang parameter nito.


Sa na-update na DataFrame, maaari nating obserbahan ang mga halaga ng mga column na 'grupo' at 'posisyon' na una ay nakategorya, ibig sabihin, bagay. Nasa na-update na DataFrame ng output, ang parehong mga column ay may mga halaga ng integer. Sa column na 'grupo', ang 'X' ay pinalitan ng '0' at 'Y' ng '1'. Samantalang ang column na 'posisyon' na 'A' ay pinalitan ng '0', 'C' ng '1', 'D' ng '2' at 'B' ng '3'.


Ngayon, i-verify natin ang na-update na mga datatype.


Ang lahat ng sumusunod na column ay mayroong 'int64' na uri ng data.

Konklusyon

Ang aming gabay ay umiikot sa pag-convert ng mga pangkategoryang halaga sa mga numerical na halaga upang ang mga ito ay maunawaan ng mga makina dahil ang object datatype ay hindi nila maproseso. Ipinakilala namin sa iyo ang dalawang diskarte na itinampok ng library ng 'pandas' upang makuha ang kinakailangang uri ng data. Gayundin, sa praktikal na pagpapatupad ng mga halimbawang code na tumatakbo sa tool na 'Spyder', ibinahagi namin ang kinalabasan ng bawat halimbawa. Sa huli, idinetalye namin ang bawat hakbang upang makamit ang ninanais na resulta.