Datarensing tar utvilsomt massevis av tid i datavitenskap, og manglende data er en av utfordringene du ofte vil møte. pandas er et verdifullt Python-datamanipuleringsverktøy som blant annet hjelper deg å fikse manglende verdier i datasettet.
Du kan fikse manglende data ved å enten slippe eller fylle dem med andre verdier. I denne artikkelen vil vi forklare og utforske de forskjellige måtene å fylle ut manglende data ved å bruke pandaer.
1. Bruk fillna()-metoden:
De fillna() funksjonen itererer gjennom datasettet og fyller alle nullrader med en spesifisert verdi. Den godtar noen valgfrie argumenter – legg merke til følgende:
Verdi: Dette er verdien du vil sette inn i de manglende radene.
Metode: Lar deg fylle ut manglende verdier fremover eller bakover. Den godtar en 'bfill' eller "fyll" parameter.
På plass: Dette aksepterer en betinget erklæring. Hvis True, endrer den DataFrame permanent. Ellers gjør det ikke det.
Før vi begynner, sørg for at du installerer pandaer i din Python virtuelt miljø ved hjelp av pip i terminalen din:
pip installer pandaer
Deretter, inne i Python-skriptet, vil vi lage en praksis DataFrame og sette inn nullverdier (Nan) i noen rader:
importere pandaer
df = pandaer. DataFrame({'A' :[0, 3, Ingen, 10, 3, Ingen],
'B': [Ingen, Ingen, 7.13, 13.82, 7, 7],
'C': [Ingen, "Pandas", Ingen, "Pandas", "Python", "JavaScript"]})
I slekt:Hvordan importere Excel-data til Python-skript ved hjelp av pandaer
Sjekk nå ut hvordan du kan fylle ut disse manglende verdiene ved å bruke de forskjellige tilgjengelige metodene i pandaer.
Denne metoden innebærer å erstatte manglende verdier med beregnede gjennomsnitt. Fylling av manglende data med en gjennomsnitts- eller medianverdi er aktuelt når de involverte kolonnene har heltalls- eller flytende datatyper.
Du kan også fylle ut manglende data med modusverdien, som er den mest forekommende verdien. Dette gjelder også for heltall eller flyter. Men det er mer praktisk når de aktuelle kolonnene inneholder strenger.
Slik setter du inn gjennomsnittet og medianen i de manglende radene i DataFrame du opprettet tidligere:
#Slik setter du inn gjennomsnittsverdien for hver kolonne i de manglende radene:
df.fillna (df.mean().round (1), inplace=True)
#For median:
df.fillna (df.median().round (1), inplace=True)
print (df)
Å sette inn modalverdien som du gjorde for gjennomsnittet og medianen ovenfor, fanger ikke opp hele DataFrame. Men du kan sette den inn i en bestemt kolonne i stedet, for eksempel kolonne C:
df['C'].fillna (df['C'].mode()[0], inplace=True)
Med det sagt er det fortsatt mulig å sette inn modalverdien til hver kolonne på tvers av de manglende radene samtidig ved hjelp av en for-løkke:
for i i df.columns:
df[i].fillna (df[i].mode()[0], inplace=True)
print (df)
Hvis du vil være kolonnespesifikk mens du setter inn gjennomsnitt, median eller modus:
df.fillna({"A":df['A'].mean(),
"B": df['B'].median(),
"C": df['C'].mode()[0]},
inplace=True)
print (df)
Fyll nullrader med verdier ved å bruke ffill
Dette innebærer å spesifisere fyllmetoden inne som fillna() funksjon. Denne metoden fyller hver manglende rad med verdien av den nærmeste over den.
Du kan også kalle det forutfylling:
df.fillna (method='ffill', inplace=True)
Fyll manglende rader med verdier ved å bruke bfill
Her vil du erstatte fyll metode nevnt ovenfor med bfill. Den fyller hver manglende rad i DataFrame med den nærmeste verdien under den.
Denne kalles bakoverfylling:
df.fillna (method='bfill', inplace=True)
2. Erstatt()-metoden
Du kan erstatte Nan verdier i en spesifikk kolonne med gjennomsnitt, median, modus eller en hvilken som helst annen verdi.
I slekt:pandas-kommandoer for å manipulere datarammer
Se hvordan dette fungerer ved å erstatte null-radene i en navngitt kolonne med dens gjennomsnitt, median eller modus:
importere pandaer
import numpy #dette krever at du tidligere har installert numpy
#Erstatt nullverdiene med gjennomsnittet:
df['A'].replace([numpy.nan], df[A].mean(), inplace=True)
#Erstatt kolonne A med medianen:
df['B'].replace([numpy.nan], df[B].median(), inplace=True)
#Bruk den modale verdien for kolonne C:
df['C'].replace([numpy.nan], df['C'].mode()[0], inplace=True)
print (df)
3. Fyll ut manglende data med interpolate()
De interpolere() funksjonen bruker eksisterende verdier i DataFrame for å estimere de manglende radene.
Kjør følgende kode for å se hvordan dette fungerer:
#Interpoler bakover over kolonnen:
df.interpolate (metode ='lineær', limit_direction ='bakover', inplace=True)
#Interpoler i foroverrekkefølge over kolonnen:
df.interpolate (metode ='lineær', limit_direction ='forward', inplace=True)
Håndter manglende rader nøye
Selv om vi kun har vurdert å fylle ut manglende data med standardverdier som gjennomsnitt, modus og andre metoder, finnes det andre teknikker for å fikse manglende verdier. Dataforskere fjerner for eksempel noen ganger disse manglende radene, avhengig av tilfellet.
Dessuten er det viktig å tenke kritisk over strategien din før du bruker den. Ellers kan du få uønskede analyse- eller prediksjonsresultater. Noen innledende datavisualiseringsstrategier kan hjelpe.
Vis dataene dine med Jupyter Notebook-grafer.
Les Neste
- Programmering
- Python
- Programmering
- database
Idowu er lidenskapelig opptatt av alt smart teknologi og produktivitet. På fritiden leker han med koding og bytter til sjakkbrettet når han kjeder seg, men han elsker også å bryte ut av rutinene en gang i blant. Hans lidenskap for å vise folk veien rundt moderne teknologi motiverer ham til å skrive mer.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere