Inleiding tot Pandas.Dropna ()

De open-source bibliotheek Pandas van Python is ongetwijfeld de meest gebruikte bibliotheek voor data science en analyse. Het is ook een voorkeurspakket voor ad-hoc gegevensmanipulatiebewerkingen. Het krediet gaat naar de uiterst flexibele datarepresentatie met behulp van DataFrames en het arsenaal aan functies die worden blootgesteld aan het manipuleren van gegevens in deze dataframes. Real-life gegevensproblemen veroorzaken het probleem van ontbrekende gegevens en het is noodzakelijk dat dergelijke gegevenspunten op de juiste manier worden behandeld. Het verwerken van ontbrekende gegevens op elke geschikte manier wordt ondersteund door deze functie, Pandas.Dropna () .

Wat zijn Panda's.Dropna () precies?

Pydata-pagina kan worden verwezen voor de officiële functiedefinitie.

De weergegeven functiekop is als volgt (samen met de standaard parameterwaarden):

DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)

De parameters (exclusief, self (het dataframe-object zelf)) die in de functiedefinitie worden weergegeven, zijn de volgende:

  • as: het verwijst naar de richting (rij of kolom) waarin gegevens worden neergezet. Mogelijke waarden zijn 0 of 1 (respectievelijk 'index' of 'kolommen'). 0 / 'index' staat voor neergaande rijen en 1 / 'kolommen' staan ​​voor neergaande kolommen.
  • hoe: geeft het scenario aan waarin de kolom / rij met de nulwaarde moet worden verwijderd. De waarden zijn 'elke' of 'alle'. 'alles' zet de rij / kolom alleen neer als alle waarden in de rij / kolom nul zijn. 'any' laat de rij / kolom vallen wanneer ten minste één waarde in rij / kolom null is.
  • thresh: geeft het minimumaantal niet-NA-waarden in rij / kolom aan, zodat dit in het eindresultaat kan worden opgenomen. Elke rij / kolom met het aantal niet-NA-waarden <dorswaarde wordt verwijderd, ongeacht andere doorgegeven parameters. Wanneer thresh = none, wordt dit filter genegeerd.
  • subset: as geeft aan of rijen / kolommen moeten worden verwijderd. subset neemt een lijst met kolommen / rijen respectievelijk (tegengesteld aan de as) die moeten worden doorzocht op respectievelijk null / NA-waarden in plaats van een volledige lijst met kolommen / rijen.
  • inplace: Het is een goede gewoonte om het originele DataFrame (of de gegevensrepresentatie) niet te wijzigen, maar een afzonderlijke kopie met de wijzigingen (bijv. verwijderde rijen / kolommen) wordt geretourneerd. inplace-kenmerk biedt u de flexibiliteit om de oorspronkelijke gegevensstructuur zelf te wijzigen.

Nu we een algemeen idee hebben van de parameters die worden blootgesteld door dropna (), laten we enkele mogelijke scenario's van ontbrekende gegevens bekijken en hoe we deze aanpakken.

Voorbeeld use-cases van Pandas.Dropna ()

Hieronder staan ​​de voorbeelden van pandas.dropna ():

Panda's importeren: om Dropna () te gebruiken, moet er een DataFrame zijn. Om een ​​DataFrame te maken, moet de bibliotheek van de panda worden geïmporteerd (geen verrassing hier). We zullen het gemakkelijk importeren met een alias pd om naar referentieobjecten onder de module te verwijzen. Voor het definiëren van null-waarden houden we ons aan numpy.nan. Dus zullen we de numpy bibliotheek importeren met een alias np:

Code:

In (1): import pandas as pd
In (2): import numpy as np

1. Maak een DataFrame-object voor manipulatie

Bij het importeren van panda's zijn alle methoden, functies en constructeurs beschikbaar in uw werkruimte. Laten we daarom een ​​DataFrame maken dat ons kan helpen het gebruik van dropna () te demonstreren.

Code:

In (3): df = pd.DataFrame(
('Company':('Google', 'Amazon', 'Infosys', 'Directi'),
'Age':('21', '23', '38', '22'),
'NetWorth ($ bn)':(300, np.nan, np.nan, 1.3),
'Founder':(np.nan, np.nan, np.nan, np.nan),
'Headquarter-Country':('United States', np.nan, 'India', 'India') ))
In (4): print(df)
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
1 Amazon 23 NaN NaN NaN
2 Infosys 38 NaN NaN India
3 Directi 22 1.3 NaN India

Het afgedrukte DataFrame zal worden gemanipuleerd in onze onderstaande demonstratie.

2. Rijen laten vallen versus kolommen

De asparameter wordt gebruikt om rijen of kolommen neer te zetten zoals hieronder getoond:

Code:

In (5): df.dropna(axis=1)

Output:

Out(5):
Company Age
0 Google 21
1 Amazon 23
2 Infosys 38
3 Directi 22

Elke kolom die ten minste 1 NaN als celwaarde bevat, wordt verwijderd. Laten we eens kijken hoe rijen (as = 0) zullen werken.
Opmerking : dit is het standaardgedrag wanneer de as niet expliciet is opgegeven.

Code:

In (6): df.dropna(axis=0)

Output:

Out(6):
Empty DataFrame
Columns: (Company, Age, NetWorth ($ bn), Founder, Headquarter-Country) Index: ()

Hmm, er zijn dus geen gegevens meer in het geretourneerde DataFrame! Dit is duidelijk niet het beoogde gedrag. Laten we kijken hoe we dit kunnen oplossen.

3. Gebruik van het subsetattribuut

Eerdere bewerkingen daalden op basis van alle kolommen wanneer as = 0. Aangezien er een kolomstichter is die alleen null-waarden heeft, worden alle rijen verwijderd. Laten we een kolom specificeren die moet worden gebruikt voor het filteren:

Code:

In (7): df.dropna(axis=0, subset=('NetWorth ($ bn)'))

Output:

Out(7):
Company Age NetWorth ($ bn) Founder Headquarter-Country
0 Google 21 300.0 NaN United States
3 Directi 22 1.3 NaN India

Zoals we zien, worden alleen records met Nanvalue in de kolom Networth verwijderd. Het geretourneerde DataFrame kan opnieuw worden aangepast door dropna () opnieuw toe te passen om kolommen uit te filteren door as = 1 te passeren.

4. Met behulp van How Parameter

Dropna () laat standaard de volledige rij / kolom vallen, zelfs als slechts 1 waarde ontbreekt. Een snelle keerzijde is alleen zichtbaar als alle waarden in een rij / kolom nul zijn. Dit wordt bereikt door how = 'all' in plaats van how = 'any' in te stellen (het standaardgedrag).

Code:

In (8): df.dropna(axis=1, how='all')

Output:

Out(8):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Nu kan het resulterende DataFrame worden gebruikt voor het verwijderen van rijen / kolommen met een complexere logica indien nodig.

5. Controle krijgen door Thresh

De parameter dorsen is waarschijnlijk de krachtigste tool wanneer deze op de juiste manier wordt gecombineerd met de rest.

Code:

In (17): df.dropna(axis=1, thresh=2)

Output:

Out(17):
Company Age NetWorth ($ bn) Headquarter-Country
0 Google 21 300.0 United States
1 Amazon 23 NaN NaN
2 Infosys 38 NaN India
3 Directi 22 1.3 India

Door as = 1 en dors = 2 in te stellen, blijven alleen die kolommen met ten minste 2 niet-NaN-waarden behouden.

Conclusie

De hierboven weergegeven voorbeelden zijn simplistisch van aard, maar krachtig genoeg om het merendeel van de problemen aan te pakken die u in echte situaties kunt tegenkomen. Desalniettemin moet men oefenen met het combineren van verschillende parameters om een ​​glashelder inzicht te hebben in hun gebruik en snelheid te bouwen in hun toepassing.

Aanbevolen artikelen

Dit is een gids voor Pandas.Dropna (). Hier bespreken we wat Pandas.Dropna () is, de parameters en voorbeelden. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie-

  1. Wat is Panda's
  2. NLP in Python
  3. Abstracte klasse in Python
  4. Factorial in Python
  5. Factorieprogramma in JavaScript