Ga naar hoofdinhoud

Python NaN: 4 manieren om te controleren op ontbrekende waarden in Python

Ontdek 4 manieren om NaN-waarden te detecteren in Python, met NumPy en Pandas. Leer de belangrijkste verschillen tussen NaN en None om data efficiënt op te schonen en te analyseren.
· 5 min lezen

Verken met AI

In de wereld van data science en analytics is ontbrekende data eerder regel dan uitzondering. Ontbrekende waarden kunnen analyses vertekenen, tot verkeerde conclusies leiden en de gegevensverwerking verstoren. Het aanpakken van deze gaten is cruciaal om de integriteit van je analyse te behouden. Dit artikel laat je verschillende manieren zien om NaN (Not a Number)-waarden in Python te identificeren.

Het korte antwoord: gebruik ofwel NumPy’s isnan()-functie of de Pandas-methode .isna()

Hoe je in Python met ontbrekende waarden omgaat, hangt vooral af van de datastructuur waarmee je werkt.

Voor losse waarden of arrays: gebruik NumPy

De functie isnan() van NumPy is ideaal om NaN’s te herkennen in numerieke arrays of losse waarden, en biedt een eenvoudige en efficiënte oplossing. Zo werkt het in de praktijk!

import numpy as np

# Single value check
my_missing_value = np.nan
print(np.isnan(my_missing_value))

# Output: True

# Array check
my_missing_array = np.array([1, np.nan, 3])
nan_array = np.isnan(my_missing_array)
print(nan_array)

# Output: [False  True False]

Voor DataFrames: gebruik Pandas

Pandas biedt uitgebreide methoden zoals .isna() en .isnull() om ontbrekende waarden te detecteren in DataFrame- of Series-objecten, en sluit naadloos aan op data-analyseworkflows.

import pandas as pd
import numpy as np

my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(my_dataframe.isna())

#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

Als je deze code draait, geeft de output aan waar NaN-waarden voorkomen in een iets interessantere context, zoals hierboven getoond.

Het verschil tussen NaN en None

Het onderscheid tussen NaN en None is belangrijk in Python. NaN is een drijvende-kommarepresentatie van "Not a Number", voornamelijk gebruikt in numerieke berekeningen. None daarentegen is het Python-object dat de afwezigheid van een waarde weergeeft, vergelijkbaar met null in andere talen. Waar NaN vooral wordt gebruikt in wiskundige of wetenschappelijke berekeningen, is None algemener inzetbaar en geeft het een gebrek aan data aan.

4 manieren om te controleren op NaN in Python

Door datasets navigeren om ontbrekende waarden te vinden is een cruciale stap in datavoorbewerking. Laten we vier praktische methoden bekijken om op NaN-waarden te controleren in Python, voortbouwend op de voorbeelden die we al gebruikten.

1. Controleren op NaN met np.isnan()

Zoals we eerder zagen, biedt NumPy een directe manier om NaN-waarden te identificeren in zowel losse waarden als arrays, wat essentieel is voor numerieke data-analyse.

import numpy as np

# Checking a single value
print(np.isnan(np.nan))

# Output: True

# Checking an array
my_array = np.array([1, 5, np.nan])
print(np.isnan(my_array))

# Output: [False False  True]

2. Controleren op NaN met pd.isna()

Pandas maakt het eenvoudig om NaN-waarden in datastructuren te detecteren, van scalars tot complexe DataFrames, en is daarmee onmisbaar voor datamanipulatie.

import numpy as np
import pandas as pd

# Checking a single value
print(pd.isna(np.nan))

# Output: True

# Checking a pandas Series
my_series = pd.Series(["Python", np.nan, "The Best"])
print(my_series.isna())

# Output:
# 0    False
# 1     True
# 2    False

# Checking a pandas DataFrame
my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(pd.isna(my_dataframe)) # Output a DataFrame with True for missing values

3. Controleren op NaN in DataFrames met de Pandas-methoden .isna() of .isnull()

Pandas DataFrames bieden ook de methoden .isna() en .isnull() om moeiteloos ontbrekende waarden in datasets te lokaliseren, wat een helder overzicht van de datacompleetheid geeft.

import numpy as np
import pandas as pd

# Create a dataframe with missing values
my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(my_dataframe.isna())
# Output:
#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

print(my_dataframe.isnull())
# Output:
#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

4. Controleren op NaN in DataFrames met math.isnan()

Voor controles van individuele getallen biedt de functie math.isnan() een simpele maar effectieve oplossing, vooral bij pure Python-datatypen.

import math

# Assuming my_number is a float or can be converted to one
my_number = float('nan')
print(math.isnan(my_number))

# Output: True

Tot slot en aanvullende bronnen

Het identificeren en beheren van NaN-waarden is een basisstap bij het opschonen en voorbereiden van je data voor analyse. Of je nu met arrays, series of dataframes werkt, het is essentieel om de tools en methoden in Python te begrijpen om met ontbrekende data om te gaan. Voor verdere verdieping, bekijk de volgende bronnen:

Adel Nehme

Auteur

Adel Nehme

Adel is docent Data Science, spreker en VP Media bij DataCamp. Adel heeft diverse cursussen en live trainingen uitgebracht over data-analyse, machine learning en data engineering. Hij is gepassioneerd over het verspreiden van datavaardigheden en data-geletterdheid binnen organisaties en de wisselwerking tussen technologie en de samenleving. Hij heeft een MSc in Data Science and Business Analytics. In zijn vrije tijd vind je hem vaak met zijn kat Louis.

Onderwerpen

Gerelateerd