50% off DataCamp Premium. 700+ courses, half price. Start learning today.
In de wereld van datamanipulatie met pandas is de methode .explode() vaak een handige tool wanneer je met lijsten in DataFrames werkt. Deze tutorial is een handboek om de .explode()-methode onder de knie te krijgen, van de basisprincipes tot gevorderde toepassingen en veelvoorkomende valkuilen.
Het korte antwoord: zo werkt .explode()
Ben je hier voor een snel antwoord, lees dan alleen deze sectie. De methode .explode() is bedoeld om waarden in een lijstachtige kolom uit te vouwen over meerdere rijen, waarbij elk element in de lijst een aparte rij wordt. Ter illustratie gebruiken we de volgende DataFrame df:
|
ID |
Interesses |
|
1 |
['Python', 'Data Science'] |
|
2 |
['Machine Learning', 'AI'] |
De .explode()-methode zal de elementen van de kolom Interesses als volgt uitvouwen:
# Explode the Interests column
exploded_df = df.explode('Interests')
|
ID |
Interesses |
|
1 |
Python |
|
1 |
Data Science |
|
2 |
Machine Learning |
|
2 |
AI |
Wat is de pandas-methode .explode()?
De .explode()-methode is ontworpen om het werken met geneste data, zoals lijsten of tuples, binnen pandas-DataFrames te vereenvoudigen. Door elk element van een lijstachtige structuur om te zetten naar een aparte rij, maakt .explode() je data toegankelijker en klaar voor analyse.
Hoe werkt de .explode()-methode?
De functionaliteit van .explode() is zowel krachtig als eenvoudig, met focus op gebruiksvriendelijkheid en efficiëntie bij datamanipulatietaken.
Column: Geeft de kolom met lijstachtige waarden op die je wilt uitvouwen.ignore_index: Als dit opTruestaat, zet de methode de index terug naar een standaard geheelgetalindex, wat helpt om de integriteit van de DataFrame na het uitvouwen te behouden. De standaardwaarde isFalse.
Twee manieren om de pandas-methode .explode() te gebruiken
Één enkele kolom exploden in pandas
Het meest voorkomende gebruik is het exploden van één kolom, waarbij elke lijstachtige waarde wordt omgezet in afzonderlijke rijen. In het korte-antwoord-gedeelte hebben we precies dit behandeld. Laten we dit voorbeeld herhalen. Hier hebben we de DataFrame df, met ID's van personen en hun leerinteresses. Zoals je ziet, zijn de leerinteresses als lijsten geformatteerd.
|
ID |
Interesses |
|
1 |
['Python', 'Data Science'] |
|
2 |
['Machine Learning', 'AI'] |
De .explode()-methode zal de elementen van de kolom Interesses als afzonderlijke rijen uitvouwen, zoals hieronder:
# Explode the Interests column
exploded_df = df.explode('Interests')
|
ID |
Interesses |
|
1 |
Python |
|
1 |
Data Science |
|
2 |
Machine Learning |
|
2 |
AI |
Deze methode is vooral nuttig voor kolommen met categorische data of meerdere kenmerken per observatie.
Meerdere kolommen exploden in pandas
Je kunt ook situaties tegenkomen waarin je meerdere kolommen binnen een DataFrame wilt exploden. Dit is vooral handig bij datasets waarin meerdere kolommen lijstachtige structuren bevatten die je gelijktijdig wilt uitpakken. Laten we een extra kolom Tools toevoegen aan df om dit te illustreren:
|
ID |
Interesses |
Tools |
|
1 |
['Python', 'Data Science'] |
['Pandas', 'NumPy'] |
|
2 |
['Machine Learning', 'AI'] |
['Scikit-learn', 'TensorFlow'] |
Om meerdere kolommen te exploden, geef je simpelweg de te exploden kolommen mee in een lijst
# Explode the Interests & Tools columns
exploded_df = df.explode(['Interests', 'Tools'])
|
ID |
Interesses |
Tools |
|
1 |
Python |
Pandas |
|
1 |
Data Science |
NumPy |
|
2 |
Machine Learning |
Scikit-learn |
|
2 |
AI |
TensorFlow |
Deze aanpak is vooral nuttig wanneer je met meerdere kolommen met lijsten werkt. Er zijn echter enkele valkuilen waar je tegenaan kunt lopen bij het werken met .explode(). Die behandelen we in de volgende sectie.
Veelvoorkomende fouten bij het gebruik van pandas .explode() en oplossingen
Dubbele kolommen geëxploded
Een veelvoorkomende valkuil bij het werken met .explode() is per ongeluk dubbele kolommen exploden bij het toepassen van de methode. Vergeet niet: zorg er altijd voor dat de lijst met kolommen die je opgeeft uniek is!
# Incorrect, exploding duplicate columns
df.explode(['Interests','Tools','Interests'])
# Correct, exploding unique columns
df.explode(['Interests','Tools'])
Strings exploden die op lijsten lijken
Vaak heb je rijen in je DataFrames die strings zijn maar op lijsten lijken. Proberen een kolom te exploden met strings die op lijsten lijken, zoals "['Python', 'AI']", levert geen verandering op, omdat de .explode()-methode echte lijstachtige objecten verwacht, niet strings die op lijsten lijken. Hier is een voorbeeld van hoe dit eruit kan zien en een oplossing! Stel dat df de volgende waarden heeft:
|
ID |
Interesses |
|
1 |
"['Python', 'Data Science']" |
|
2 |
"['Machine Learning', 'AI']" |
Zoals je ziet, bevat de kolom Interesses waarden die strings zijn die op lijsten lijken. Het gebruik van .explode() op Interesses zou niets veranderen, omdat de waarden enkele strings zijn. Om dit op te lossen, zetten we de waarden van Interesses om naar lijsten.
import ast
df['Interests'] = df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')
print(exploded_df) # This will work
Niet-overeenkomende lengtes in meerdere kolommen
Bij het werken met pandas-DataFrames kom je vaak rijen tegen waarin lijstachtige structuren in de opgegeven kolommen om te exploden verschillende lengtes hebben. Dit verschil kan leiden tot niet-uitgelijnde of onvolledige data na gebruik van de .explode()-methode op meerdere kolommen. Stel bijvoorbeeld dat df er als volgt uitziet:
|
ID |
Interesses |
Tools |
|
1 |
['Python', 'Data Science'] |
['Pandas'] |
|
2 |
['Machine Learning'] |
['Scikit-learn', 'TensorFlow'] |
Zoals je ziet, bevatten de kolommen Interesses en Tools lijsten van verschillende lengtes. Het gebruik van .explode() op deze kolommen zoals ze zijn, resulteert in een fout, omdat de kolommen een gelijk aantal waarden in de lijsten moeten hebben. Om dit op te lossen, kun je de lijsten opvullen met None met een aangepaste functie, zoals hier te zien is:
# Function to pad lists to the same length
def pad_lists(row):
max_len = max(len(row['Interests']), len(row['Tools']))
row['Interests'] += [None] * (max_len - len(row['Interests']))
row['Tools'] += [None] * (max_len - len(row['Tools']))
return row
# Apply the padding function to each row
df = df.apply(pad_lists, axis=1)
# Now, safely explode both columns
df.explode(['Interests','Tools'])
|
ID |
Interesses |
Tools |
|
1 |
Python |
Pandas |
|
1 |
Data Science |
None |
|
2 |
Machine Learning |
Scikit-learn |
|
2 |
None |
TensorFlow |
Tot slot
Kortom, de .explode()-methode is een handige methode om elementen in een lijst met waarden als rijen in een pandas-DataFrame uit te pakken. Voor meer leren over pandas, bekijk de volgende bronnen:
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

