Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Håndtering av Manglende Verdier | Forbehandling av Data med Scikit-learn
ML-Introduksjon med Scikit-learn

bookHåndtering av Manglende Verdier

Kun et begrenset antall maskinlæringsmodeller kan håndtere manglende verdier, så datasettet må kontrolleres for å sikre at det ikke finnes noen hull. Hvis manglende verdier er til stede, kan de håndteres på to måter:

  • Fjerne rader som inneholder manglende verdier;
  • Fylle tomme celler med erstatningsverdier, en prosess kjent som imputering.

Identifisere manglende verdier

For å vise generell informasjon om datasettet og sjekke etter manglende verdier, kan du bruke .info()-metoden til en DataFrame.

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
copy

Datasettet har 344 oppføringer, men kolonnene 'culmen_depth_mm', 'flipper_length_mm', 'body_mass_g' og 'sex' inneholder hver færre enn 344 ikke-null verdier, noe som indikerer at det finnes manglende data.

Note
Merk

Null er et annet navn for manglende verdier.

For å identifisere antall manglende verdier i hver kolonne, bruk .isna()-metoden og deretter .sum().

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
copy

Rader som inneholder manglende verdier kan vises med: df[df.isna().any(axis=1)]

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
copy

Fjerning av rader

De første og siste radene inneholder kun målvariabelen ('species') og 'island'-verdier, og gir for lite informasjon til å være nyttige. Disse radene kan fjernes ved å beholde kun de med færre enn to NaN-verdier og tilordne dem på nytt til df.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
copy

Til sammenligning inneholder de gjenværende radene nyttig informasjon, med NaN-verdier kun i 'sex'-kolonnen. I stedet for å fjerne disse radene, kan de manglende verdiene imputeres. En vanlig tilnærming er å bruke SimpleImputer-transformatoren, som vil bli gjennomgått i neste kapittel.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.13

bookHåndtering av Manglende Verdier

Sveip for å vise menyen

Kun et begrenset antall maskinlæringsmodeller kan håndtere manglende verdier, så datasettet må kontrolleres for å sikre at det ikke finnes noen hull. Hvis manglende verdier er til stede, kan de håndteres på to måter:

  • Fjerne rader som inneholder manglende verdier;
  • Fylle tomme celler med erstatningsverdier, en prosess kjent som imputering.

Identifisere manglende verdier

For å vise generell informasjon om datasettet og sjekke etter manglende verdier, kan du bruke .info()-metoden til en DataFrame.

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
copy

Datasettet har 344 oppføringer, men kolonnene 'culmen_depth_mm', 'flipper_length_mm', 'body_mass_g' og 'sex' inneholder hver færre enn 344 ikke-null verdier, noe som indikerer at det finnes manglende data.

Note
Merk

Null er et annet navn for manglende verdier.

For å identifisere antall manglende verdier i hver kolonne, bruk .isna()-metoden og deretter .sum().

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
copy

Rader som inneholder manglende verdier kan vises med: df[df.isna().any(axis=1)]

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
copy

Fjerning av rader

De første og siste radene inneholder kun målvariabelen ('species') og 'island'-verdier, og gir for lite informasjon til å være nyttige. Disse radene kan fjernes ved å beholde kun de med færre enn to NaN-verdier og tilordne dem på nytt til df.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
copy

Til sammenligning inneholder de gjenværende radene nyttig informasjon, med NaN-verdier kun i 'sex'-kolonnen. I stedet for å fjerne disse radene, kan de manglende verdiene imputeres. En vanlig tilnærming er å bruke SimpleImputer-transformatoren, som vil bli gjennomgått i neste kapittel.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 3
some-alt