Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Interpolasjon er en metode for å generere punkter mellom gitte punkter. I denne opplæringen skal jeg vise hvordan du kan bruke interpolasjon til å håndtere manglende data i Python. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

I Python er interpolering en teknikk som for det meste brukes til å tilskrive manglende verdier i datarammen eller serien mens data forhåndsprosesseres. Jeg skal demonstrere hvordan du kan bruke denne metoden til å estimere manglende datapunkter i dataene dine ved å bruke LuckyTemplates.

Hvis vi ser på de opprinnelige dataene våre nedenfor som er representert i den øverste grafen, kan vi se at det er mange hull eller manglende data som vi ikke kan tegne fordi det ikke er noe der. Men i den nederste grafen kan vi se at vi har gjort noen estimeringer for å finne ut hvordan disse dataene kan se ut. De faktiske dataene er representert i lyseblått, mens de interpolerte dataene er i mørkeblått.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Det er et par forskjellige typer estimering vi skal gjøre. Vi skal gjøre en lineær interpolasjon, en nærmeste interpolasjon og deretter en vektet tidsinterpolasjon. Hver av disse kommer til å gi oss litt forskjellige resultater.

Eksemplet ovenfor bruker vektet tidsinterpolasjon, som ser nesten likt ut som lineær interpolasjon, med unntak av at denne er vektet basert på dagene. Lineær estimerte dataene basert på helningen mellom disse to datapunktene. Nærmeste interpolasjon har en flatere type estimering, som du kan se nedenfor, der vi så på den nærmeste verdien og var i stand til å estimere hva som eksisterer mellom disse to.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Så la oss hoppe over til en Jupyter-notisbok og ta den inn.

Innholdsfortegnelse

Hvordan bruke interpolasjon til å håndtere manglende data i Python

Du kan bruke Script Editor til å skrive ut alt, men det er enklere. Du får mer tilbakemelding i din Jupyter-notisbok. Så la oss dokumentere hva vi gjør. Når vi kopierer og limer dette over til Python Script Editor, vil det være veldig rent og tydelig.

La oss importere bibliotekene vi ønsker, og vi skal importere pandaer og lagre dem som en variabel PD. Vi skal importere Numpy og lagre den som variabelen NP. Pandas er et datamanipulasjonsbibliotek, mens Numpy lar oss gjøre datamanipulering også og gir oss litt lineær algebra.

Vi ønsker å hente inn datasettet vårt, og vi skal lagre det som en variabel df . Og vi skal bare bruke Pandas-variabelen ( pd ) og bruke read.csv -funksjonen. Deretter skal vi kopiere og lime inn hvor den filen finnes på PC-en vår. Min er i arbeidskatalogen min, så alt jeg trenger å gjøre er å skrive machines.csv og kapsle det inn i parentes.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Og la oss ta en titt på datasettet vårt bare ved å bruke variabelen df. Du kan se at dette går fra 1. 2022, helt til 25. Det er påfølgende dager helt til den 15., og så mangler det fire dager den 19., og så mangler det tre dager når vi kommer til den 22., og to dager mangler den 25..

Dagene som hoppes over mangler ikke data. Det er bare ikke data i datasettet vårt. Det vi skal forholde oss til er manglende data, som du ser representert med disse NaN- verdiene eller ingen.

Nå som vi har vårt datasett, la oss bruke våre forskjellige typer tolkning og lagre dem som forskjellige kolonner. Vi kan se at vi har objekt , som er representert ved en tekst, og vi har også en flyte .

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Jeg skal isolere Dato- kolonnen ved å bruke parentesnotasjon. Deretter skal jeg bruke lik for å tilordne dette. Jeg skal bruke pd variabel, og så bruker jeg bare funksjonen to_datetime. Og så lukker jeg den funksjonen med parentesen og legger til i Dato-kolonnen.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Vi kan se at nå har vi Dato som riktig datatype.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Vi har en indeks her, som er indikert med tallene 1 til 18. Når vi gjør Lineær, vil det være å bruke disse tallene for å lage en lineær forbindelse mellom de eksisterende datapunktene. Men vi ønsker også å kunne bruke en Time-weighted Interpolation, som ser på tid og gir oss resultatene basert på de faktiske dagene. Vi ønsker å sette Dato-kolonnen som indeks, slik at vi kan bruke den.

Jeg skal bruke datarammevariabelen (df) og gjøre set_index. Vi må sende inn en parameter kalt inplace for å sikre at den sendes permanent inn. Så jeg skal bruke inplace er lik sant, og så skal jeg trykke shift og enter. Og med det kan du se at den numeriske indeksen forsvant, og vi har en Datetime-indeks.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Nå kan vi begynne å bygge de kolonnene vi ønsker. La oss bygge en kolonne der vi interpolerer det nærmeste datapunktet, som vil fylle disse manglende verdiene med den nærmeste verdien. Vi ønsker å lage en kolonne kalt users_nearest , og vi ønsker å tilordne den til en Users- kolonne.

Vi ønsker å lage en kolonne som heter user_nearest , og vi vil tilordne den til en brukerkolonne. Og nå som vi har den kolonnen isolert, kan vi bruke funksjon, og vi kan trykke shift-tab for å se hvilke parametere denne funksjonen tar. Det finnes mange forskjellige typer metoder.

Du kan se at standarden er lineær, og hvis du vil at den skal se alle de forskjellige metodene, er det informasjon i denne. Du kan åpne dette helt opp, og det er mye informasjon her som vil gi deg mye innsikt. Men det er alltid bedre å gå ned til Pandas-siden og bare se hva alle de forskjellige typene interpolasjoner er.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Nå skal vi sende inn metoden vi ønsker, og vi skal bruke Nearest Interpolation-metoden. Alt vi trenger å gjøre er å kjøre dette, og du kan se at en kolonne er opprettet. Hvis vi ser på den spesielle linjen, kan vi se det som en manglende verdi. Og du kan se at den har blitt interpolert der den har tatt den nærmeste verdien og lagt den til her. Som du kan se, mangler vi ikke lenger verdier for den aktuelle raden.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

La oss nå kopiere dette to ganger, og la oss endre navnet på disse kolonnene til user_linear og user_time . Vi vil også endre metodene for å matche overskriftene våre. Vi kan skifte og gå inn, og du kan se at vi har laget tre kolonner basert på ulike typer interpolasjonsmetoder.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Deretter vil jeg lage en mer spesiell kolonne som lar oss indikere hvilke av disse som er tomme, som et flagg i dataene våre. Vi skal bruke Numpy til det.

Så vi skal bare lage en ny kolonne kalt df , og så skal vi kalle den flagg. Vi skal tilordne det med det likhetstegnet. Deretter skal vi bruke np , som er vår Numpy-variabel. Og så skal vi bruke where - funksjonen, som er en betinget funksjon. Vi setter betingelsen og så får vi et eksempel på sant og usant. Vi bruker doble lik, som er lik i Python. Når det er sant, vil vi si Manglende data . Det andre alternativet vil være Data .

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Vi kan bruke det flagget i visualiseringen vår. Når vi er i notatboken din, gå over til å transformere, og trykk kjør Python-skript. Nå er det et par forskjellige trinn. Vi må få dette til å fungere innenformiljø.

Vi har alle kodene våre her, og vi må legge til noen flere trinn. En, når vi har å gjøre med dato-klokkeslett, må vi legge til en feilparameter som sier at hvis vi har noen feil, kan du tvinge eller forsøke å endre det. Så jeg skal sette her feil lik , og deretter parentes tvang . Deretter må vi tilordne datasettvariabelen på nytt som df.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Når vi klikker OK, får vi en ny feil, og dette er hva vi må gjøre for å fikse dette. Hvis vi går gjennom trinnene våre, trenger vi ikke ha datoformatert. Vi lar Python jobbe med datoene fordi datoer er unike for hver plattform. Det første vi må gjøre er å bli kvitt Changed Type .

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Vi har ikke Dato-kolonnen fordi datoen er indeksen. Så vi går tilbake til Python-skriptet vårt og så tilbakestiller vi indeksen vår, df.reset_index . Vi sier at vi vil tilbakestille den til Dato-kolonnen omgå i den parentesen, og så vil vi gjøre inplace = true .

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Og nå har vi datoen og alle våre andre datatyper er fullført.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode

Hvis vi legger det i en visualisering, er det slik det ser ut i tre forskjellige interpoleringsmetoder ved håndtering av manglende data i Python.

Håndtere manglende data i Python ved hjelp av interpolasjonsmetode




Konklusjon

Du har i denne opplæringen lært tre metoder for interpolasjon for å håndtere manglende data i. Vi har diskutert metodene for lineær, nærmeste og vektet tidsinterpolasjon.

Jeg håper du finner dette nyttig og bruker det i ditt eget arbeid. Du kan se hele videoopplæringen nedenfor for mer informasjon og sjekk ut koblingene nedenfor for mer relatert innhold om håndtering av manglende data i Python.

Beste ønsker!

Gaelim


Hva er Power Query & M Language: En detaljert oversikt

Hva er Power Query & M Language: En detaljert oversikt

Denne opplæringen gir en oversikt over Power Query Editor og M-språket på LuckyTemplates-skrivebordet.

Lag en paginert rapport: Legge til tekster og bilder

Lag en paginert rapport: Legge til tekster og bilder

Lær hvordan du lager en paginert rapport, legger til tekster og bilder og deretter eksporterer rapporten til ulike dokumentformater.

SharePoint Automate-funksjonen | En introduksjon

SharePoint Automate-funksjonen | En introduksjon

Lær hvordan du bruker SharePoint-automatiseringsfunksjonen til å lage arbeidsflyter og hjelpe deg med å mikroadministrere SharePoint-brukere, -biblioteker og -lister.

Løs en dataanalyseutfordring med LuckyTemplates Accelerator

Løs en dataanalyseutfordring med LuckyTemplates Accelerator

Utvid rapportutviklingsferdighetene dine ved å bli med i en dataanalyseutfordring. Akseleratoren kan hjelpe deg å bli en LuckyTemplates-superbruker!

Løpende totaler i LuckyTemplates ved hjelp av DAX

Løpende totaler i LuckyTemplates ved hjelp av DAX

Lær hvordan du beregner løpende totaler i LuckyTemplates ved hjelp av DAX. Løpende totaler lar deg ikke bli fanget opp i et individuelt resultat.

LuckyTemplates Dax-variabler er konstante: Hva betyr dette?

LuckyTemplates Dax-variabler er konstante: Hva betyr dette?

Forstå konseptet med variabler i DAX i LuckyTemplates og implikasjonene av variabler for hvordan målene dine beregnes.

LuckyTemplates Slope Chart: En oversikt

LuckyTemplates Slope Chart: En oversikt

Lær mer om det tilpassede visuelle bildet kalt LuckyTemplates Slope-diagram, som brukes til å vise økning/reduksjon for en enkelt eller flere beregninger.

LuckyTemplates fargetemaer for enhetlige visualiseringer

LuckyTemplates fargetemaer for enhetlige visualiseringer

Oppdag fargetemaene i LuckyTemplates. Disse er avgjørende for at rapportene og visualiseringene dine skal se ut og fungere sømløst.

Beregne gjennomsnitt i LuckyTemplates: Isolere ukedag- eller helgeresultater ved hjelp av DAX

Beregne gjennomsnitt i LuckyTemplates: Isolere ukedag- eller helgeresultater ved hjelp av DAX

Å beregne et gjennomsnitt i LuckyTemplates kan gjøres på mange måter for å gi deg nøyaktig informasjon for bedriftsrapportene dine.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

La oss fordype oss i Standard LuckyTemplates-tema, og gjennomgå noen av funksjonene som er innebygd i selve LuckyTemplates Desktop-applikasjonen.