Hantering av Saknade Värden
Endast ett begränsat antal maskininlärningsmodeller kan hantera saknade värden, så datasettet måste kontrolleras för att säkerställa att inga luckor finns kvar. Om saknade värden förekommer kan de hanteras på två sätt:
- Ta bort rader som innehåller saknade värden;
- Fylla tomma celler med ersättningsvärden, en process som kallas imputering.
Identifiera saknade värden
För att visa allmän information om datasettet och kontrollera efter saknade värden kan du använda .info()
-metoden för en DataFrame.
12345import 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())
Datasettet har 344 poster, men kolumnerna 'culmen_depth_mm'
, 'flipper_length_mm'
, 'body_mass_g'
och 'sex'
innehåller färre än 344 icke-nollvärden, vilket indikerar förekomst av saknade data.
Null är ett annat namn för saknade värden.
För att identifiera antalet saknade värden i varje kolumn, använd metoden .isna()
och därefter .sum()
.
12345import 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())
Rader som innehåller saknade värden kan visas med:
df[df.isna().any(axis=1)]
12345import 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)])
Ta bort rader
De första och sista raderna innehåller endast målvariabeln ('species'
) och 'island'
-värden, vilket ger för lite information för att vara användbara. Dessa rader kan tas bort genom att endast behålla de med färre än två NaN
-värden och tilldela dem på nytt till df
.
123456import 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))
Till skillnad från detta innehåller de återstående raderna användbar information, där NaN
-värden endast förekommer i kolumnen 'sex'
. Istället för att ta bort dessa rader kan de saknade värdena imputeras. Ett vanligt tillvägagångssätt är att använda transformern SimpleImputer
, vilket kommer att behandlas i nästa kapitel.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain more about how imputing works?
What are some other ways to handle missing values besides removing or imputing?
Why is it important to handle missing values before training a machine learning model?
Awesome!
Completion rate improved to 3.13
Hantering av Saknade Värden
Svep för att visa menyn
Endast ett begränsat antal maskininlärningsmodeller kan hantera saknade värden, så datasettet måste kontrolleras för att säkerställa att inga luckor finns kvar. Om saknade värden förekommer kan de hanteras på två sätt:
- Ta bort rader som innehåller saknade värden;
- Fylla tomma celler med ersättningsvärden, en process som kallas imputering.
Identifiera saknade värden
För att visa allmän information om datasettet och kontrollera efter saknade värden kan du använda .info()
-metoden för en DataFrame.
12345import 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())
Datasettet har 344 poster, men kolumnerna 'culmen_depth_mm'
, 'flipper_length_mm'
, 'body_mass_g'
och 'sex'
innehåller färre än 344 icke-nollvärden, vilket indikerar förekomst av saknade data.
Null är ett annat namn för saknade värden.
För att identifiera antalet saknade värden i varje kolumn, använd metoden .isna()
och därefter .sum()
.
12345import 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())
Rader som innehåller saknade värden kan visas med:
df[df.isna().any(axis=1)]
12345import 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)])
Ta bort rader
De första och sista raderna innehåller endast målvariabeln ('species'
) och 'island'
-värden, vilket ger för lite information för att vara användbara. Dessa rader kan tas bort genom att endast behålla de med färre än två NaN
-värden och tilldela dem på nytt till df
.
123456import 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))
Till skillnad från detta innehåller de återstående raderna användbar information, där NaN
-värden endast förekommer i kolumnen 'sex'
. Istället för att ta bort dessa rader kan de saknade värdena imputeras. Ett vanligt tillvägagångssätt är att använda transformern SimpleImputer
, vilket kommer att behandlas i nästa kapitel.
Tack för dina kommentarer!