Pandas flater multiindex

Pandas flater multiindex
MultiIndex er et sett med sofistikerte indekseringsmetoder for dataframmer. Det tillater indeksene å ha mange nivåer. Det kan også omtales som en indeks på flere nivåer eller en hierarkisk indeks. MultiIndex -objektet gir en hierarkisk representasjon av standardindeksobjektet, som ofte inneholder etikettene til akser i Pandas 'objekter. Multiindex kan sammenlignes med en rekke tuples, som hver er distinkt. Du trenger knapt noen gang en kolonne med en hierarkisk indeks i pandaer. Det meste av tiden vil du bare bruke et enkelt kolonnenavn for å identifisere en kolonne. I denne opplæringen vil vi flate multiindex dataaframe ved å bruke noen funksjoner av pandaer.

Hvordan multiindex kan flates ut i pandaer

Funksjonene som reset_index og to_records () kan brukes til å flate multiindex. Vi vil lære deg hvordan du flater multiindexen i følgende eksempler.

Eksempel 1: Flating av multiindex av alle nivåer ved bruk av RESET_INDEX () -funksjonen

Ved hjelp av RESET_INDEX () -funksjonen vil vi flate alle lagene i DataFrame i dette eksemplet. Listen over tuples konverteres til multiIndex ved bruk. Vi kan lage en multiindex på en rekke måter, og dette er den vanligste av dem.

Først oppretter vi vår multiindex “MI” ved å passere flere tuples - ('engelsk', '1201', 800), ('Maths', '1202', 900), ('Bio', '1203', 1050) , ('Fysikk', '1204', 1050) og ('kjemi', '1205', 1100) inne i PD.Multiindex.fra_tuples () -funksjonen. Kolonnenavnene på tuples er spesifisert som 'emne', 'emne_id' og 'gebyr'. Etter å ha opprettet multiindex “MI”, lager vi også en Pandas dataaframe ved hjelp av PD.DataFrame () -funksjon. Vi passerer en ordbok med navn på studenter som nøkler og merkene til studenter som verdier i vår "DF" DataFrame.

Vi har 3 kolonner - “Mike”, “Jack” og “Eva” - med dataverdiene (49, 43, 39, 41, 37), (36, 35, 41, 36, 42) og (46, 44, 39, 46, 48), henholdsvis. Du vil kanskje legge merke til at ved å spesifisere multiindex "MI" som "indeks" -parameteren inne i PD.DataFrame () -funksjon, kolonnene til tuples fungerer som multi-nivåindekser. Nå bruker vi RESET_INDEX () -funksjonen for å endre multi -indeksene til DataFrame -kolonner. Multi-nivåindeksen kan legges til som en ny DataFrame-kolonne ved hjelp av reset_index (). Drop -argumentet kan brukes i RESET_INDEX () -funksjonen hvis vi ikke vil endre indeksen som en kolonne. I stedet for å lage en ny kopi, kan vi tilbakestille den nåværende DataFrames indeks ved å bruke argumentet på plass.

Det kan legges merke til at alle tre nivåer av indekser blir endret til kolonnen til vår "DF" DataFrame. Indeksen tilbakestilles også til Pandas standard heltallindeks.

Eksempel 2: Flating av de spesifikke multiindex -nivåene ved bruk av RESET_INDEX () -funksjonen

Tilnærmingen til å flate ut alle nivåene av multiindex i kolonner i DataFrame ble demonstrert i foregående eksempel. Nå lærer vi hvordan du flater ut de spesifikke nivåene av indeksen til kolonner i DataFrame ved å bruke RESET_INDEX () -funksjonen. En dataaframe kan opprettes på en rekke måter med Pandas MultiIndex. Vi har allerede sett den som benytter seg av fra tuples -metoden. La oss opprette en multiindex ved hjelp av FRANE_ARRAY () -funksjonen.

Vi passerer tre matriser og spesifiserer navnene deres som "L1" med de numeriske indeksverdiene (11, 22, 33, 44, 55). Vi spesifiserer “L2” med strengverdier ('I', 'II', 'III', 'IV', 'V') og “L3” med heltallindeksverdier (1, 2, 3, 4, 5). Nå bruker vi denne multiindex “Mi” inne i PD.DataFrame () -funksjonen for å lage en multiindex dataaframe.

For å lage vår dataframe, oppretter vi først et Python-ordbok "data" med nøkkelverdi-par. Deretter sendes ordboken "data" i PD.DataFrame () -funksjonen som en inngang. Parameteren "kolonner" er spesifisert som ['avdeling', 'utgift'] for å endre tastene og verdiene til ordboken til etiketter og kolonnedata fra Pandas dataaframe. Parameterindeksen er spesifisert som "MI" for å angi multiindex -nivåene i 'DF' DataFrame. Nå bruker vi reset_index () -funksjonen for å flate ett eller flere nivåer av multiindex i kolonner.

Syntaks for å flate spesifikt nivå ved bruk av reset_index ():

Dataramme.reset_index (inplace = true, nivå = ['Navn på nivå'])

Navnet på nivået på indeksen som vi ønsker å flate, er spesifisert i "nivå" -parameteren.

La oss anta at vi må flate ut “L1” -indeksen i kolonnen i DataFrame.

Det kan legges merke til at ved å spesifisere parameter "nivå" som "L1" inne i RESET_INDEX () -funksjonen, blir indeksen “L1” vellykket flatet til en kolonne. Ved å bruke listen over indeksnivåer i parameteren "nivå", kan vi flate ut flere indekser til DataFrame -kolonner. La oss bruke en liste over indekser “L2” og “L3” i parameteren “Nivå” inne i RESET_INDEX () -funksjonen.

Som det fremgår av, ved å spesifisere parameteren "nivå" som listen over indeksnivåer, i.e. ['L2', 'L3'], indekser "L2" og "L3" er nå også konvertert til kolonner.

Eksempel 3: Flating av multiindex -nivåene ved bruk av TO_Records () -funksjonen

I dette eksemplet vil vi flate DataFrames indeksnivåer ved å bruke TO_Records () -funksjonen. For å gjøre tuplene til multiindex, vil vi nok en gang bruke form_tuples () -funksjonen. Vi importerer Pandas -modulene først, så oppretter vi MultiIndex og DataFrame.

Multiindex “Mi” er opprettet ved hjelp av flere tuples, i.e. ('1001', 'C11', 80), ('1002', 'C12', 75), ('1003', 'C13', 90), ('1004', 'C14', 95), og (( '1005', 'C15', 70). Navnene for nivåer av indekser i multiindex er spesifisert som "id", "kode" og "vanskeligheter". La oss nå opprette DataFrame vår der vi kan bruke denne multiindex.

Dataframe er opprettet ved hjelp av PD.DataFrame () -funksjon. Dataframe består av tre kolonner. Kolonnen "Emne" lagrer navnene på fag ('Bio', 'Chemistry', 'C ++', 'Stats', 'Python'). "Felt" -kolonnen strekker strengverdiene som representerer feltet for hvert emne ('vitenskap', 'vitenskap', 'programmering', 'matematikk', 'programmering'). Mens han “Passing_marks” -kolonnen lagrer de minst passerende merkene til hvert emne (45, 45, 50, 40, 50). Det er en tre-nivå indeks i vår dataaframe som du kan se på venstre side av vår "DF" DataFrame.

Ettersom vår dataaframe med multiindex opprettes nå, bruker vi To_Record () -funksjonen for å flate multi -indeksene til kolonner i DataFrame. En dataaframe kan transformeres til en numpy matrise ved hjelp av to_records () -funksjonen. Hvis du blir bedt om det, blir indeksen satt som Record Arrays første felt. Hvis du er satt, må du ta med indeksen i den resulterende postoppstillingen ved hjelp av indeksetiketten eller indeksen som er lagret i feltetiketten. I dette eksemplet vil vi imidlertid ganske enkelt bruke to_record () -funksjonen for å endre multilevel -indeksene til multiindex dataaframe til enkle dataaframe -kolonner.

Som det kan sees i utgangen, blir alle indeksnivåene konvertert til DataFrame -kolonnen. I motsetning til RESET_INDEX () -funksjonen, kan vi ikke flate en spesifikk indeks til kolonnen. Når det brukes på DataFrame, flater den alle multiindeksene til DataFrame -kolonnene.

Konklusjon

I denne opplæringen har vi sett at multiindex er et sett med sofistikerte indekseringsmetoder for dataframes. Det tillater indeksene å ha mange nivåer. Vi lærte hvordan vi lager en multiIndex med tuples og matriser ved å bruke henholdsvis from_tuples () og from_array (). Vi implementerte eksemplene for å lære deg hvordan du flater multiindexen for alle nivåer og spesifikke nivåer ved å bruke RESET_INDEX () og TO_RECORDS () -funksjonen.