Ga naar hoofdinhoud

Top 30 vragen en antwoorden voor een Pandas-sollicitatie

Ontdek belangrijke Pandas-sollicitatievragen en -antwoorden voor data science-functies.
Srujana Maddula
Srujana Maddula

Maak je gratis account aan

Oefen en volg je voortgang.

Ga verder met GoogleDoor verder te gaan, accepteer je ons Gebruiksvoorwaarden, onze Privacybeleid en dat je gegevens in de VS worden opgeslagen.

In dit artikel heb ik de meest gestelde Pandas-sollicitatievragen en hun antwoorden verzameld. Een deel van de vragen komt uit mijn eigen sollicitatie-ervaring bij Target voor een rol als data scientist. Laten we beginnen!

Basisvragen over Pandas

Laten we kijken naar een paar basisvragen over pandas. Aardige interviewers beginnen soms met deze eenvoudige vragen om je op je gemak te stellen, terwijl anderen ze gebruiken om je basiskennis van de bibliotheek te toetsen.

1. Wat is pandas in Python?

pandas is een open-source Python-bibliotheek met krachtige ingebouwde methoden om datasets efficiënt te schonen, analyseren en manipuleren. Ontwikkeld door Wes McKinney in 2008, kan dit krachtige pakket eenvoudig samenwerken met verschillende andere data science-modules in Python.

Hoewel het oorspronkelijk is gebouwd bovenop NumPy, ondersteunt moderne pandas (v2.0+) ook de PyArrow-backend. Dit maakt aanzienlijk snellere bewerkingen mogelijk, echte string-datatypen en een betere omgang met missende waarden (nullable types) in vergelijking met de oude architectuur die alleen NumPy gebruikte.

2. Hoe open je snel de bovenste 5 rijen en de laatste 5 rijen van een pandas DataFrame?

De methode head() in pandas wordt gebruikt om de eerste 5 rijen van een DataFrame op te vragen, en de methode tail() om de laatste 5 rijen op te vragen.

  • Om de bovenste 5 rijen te zien: dataframe_name.head()

  • Om de laatste 5 rijen te zien: dataframe_name.tail()

3. Waarom heeft DataFrame.shape geen haakjes?

In pandas is shape een attribuut en geen methode. Je benadert het dus zonder haakjes.

DataFrame.shape geeft een tuple met het aantal rijen en kolommen in een DataFrame.

4. Wat is het verschil tussen een Series en een DataFrame?

  • DataFrame: Het pandas DataFrame heeft een tabelvorm met meerdere rijen en kolommen, waarbij elke kolom een ander datatype kan hebben.

  • Series: De Series is een eendimensionale gelabelde array die elk datatype kan opslaan, maar alle waarden moeten van hetzelfde datatype zijn. De Series lijkt meer op een enkele kolom van een DataFrame.

De Series-structuur verbruikt minder geheugen dan een DataFrame. Bepaalde datamanipulaties gaan er dus sneller op.

Een DataFrame kan echter grote en complexe datasets opslaan, terwijl een Series alleen homogene data aankan. Het aantal bewerkingen dat je op een DataFrame kunt uitvoeren is daarom aanzienlijk groter dan op een Series.

5. Wat is een index in pandas?

De index is een reeks labels die elke rij van een DataFrame uniek kan identificeren. De index kan elk datatype hebben (zoals integer, string, hash, enz.).

df.index print de huidige rij-indexen van het DataFrame df.

Pandas-vragen op gemiddeld niveau

Deze vragen zijn wat uitdagender en je komt ze eerder tegen in functies waarvoor je al ervaring met pandas nodig hebt.

6. Wat is multi-indexing in pandas?

De index in pandas identificeert elke rij van een DataFrame uniek. Meestal kiezen we de kolom die elke rij uniek identificeert en stellen die in als index. Maar wat als er geen enkele kolom is die dat kan?

Stel, je hebt de kolommen “name”, “age”, “address” en “marks” in een DataFrame. Geen van deze kolommen heeft mogelijk unieke waarden voor alle verschillende rijen en is dus ongeschikt als index.

Samen kunnen de kolommen “name” en “address” echter wel elke rij van het DataFrame uniek identificeren. Je kunt dus beide kolommen als index instellen. Je DataFrame heeft nu een multi-index of hiërarchische index.

7. Leg pandas reindexing uit. Geef een voorbeeld.

Reindexing wordt gebruikt om een DataFrame aan te passen aan een nieuwe index. Het wordt het vaakst gebruikt om ontbrekende gaten in tijdreeksdata op te vullen of om zeker te stellen dat een rapport alle categorieën bevat, zelfs die met nulwaarden.

Als de nieuwe index labels bevat die niet in het originele DataFrame voorkomen, voegt pandas NaN (of een opgegeven vulwaarde) toe voor die rijen.

Voorbeeld: Stel dat je verkoopdata hebt voor Q1 en Q3, maar Q2 en Q4 ontbreken omdat er geen verkoop was. Een standaardplot zou misleidend zijn. reindex() lost dit op door de ontbrekende kwartalen in het DataFrame te forceren.

import pandas as pd

# Original data (Note: Q2 and Q4 are missing)
data = {'Quarter': ['Q1', 'Q3'], 'Sales': [15000, 18000]}
df = pd.read_json(pd.DataFrame(data).to_json()) # Simulating loaded data
df = df.set_index('Quarter')

# The complete index we REQUIRE for the report
all_quarters = ['Q1', 'Q2', 'Q3', 'Q4']

# Reindex forces Q2 and Q4 to appear, filling them with 0 instead of NaN
df_full = df.reindex(all_quarters, fill_value=0)

8. Wat is het verschil tussen loc en iloc?

Zowel .loc() als .iloc() in pandas worden gebruikt om subsets van een DataFrame te selecteren. In de praktijk worden ze veel gebruikt om een DataFrame te filteren op basis van voorwaarden.

Gebruik .loc() om data te selecteren met de daadwerkelijke labels van rijen en kolommen, en .iloc() om data te halen op basis van de integer-indexen van rijen en kolommen.

9. Laat twee verschillende manieren zien om een pandas DataFrame te maken

Vanuit een dictionary:

import pandas as pd

data = {'Name': ['John', 'Cataline', 'Matt'],
        'Age': [50, 45, 30],
        'City': ['Austin', 'San Francisco', 'Boston'],
        'Marks' : [70, 80, 95]}

df = pd.DataFrame(data)

Vanuit een lijst van lijsten:

import pandas as pd

data = [['John', 25, 'Austin',70],
        ['Cataline', 30, 'San Francisco',80],
        ['Matt', 35, 'Boston',90]]

columns = ['Name', 'Age', 'City', 'Marks']

df = pd.DataFrame(data, columns=columns)

10. Hoe krijg je het aantal unieke waarden van een categorische kolom in een DataFrame?

De functie Series.value_counts() geeft het aantal van elke unieke waarde van een series of kolom terug.

Voorbeeld:

We hebben een DataFrame df gemaakt met een categorische kolom genaamd Sex, en de functie .value_counts() uitgevoerd om het aantal van elke unieke waarde in die kolom te zien.

import pandas as pd

data = [['John', 50, 'Male', 'Austin', 70],
        ['Cataline', 45 ,'Female', 'San Francisco', 80],
        ['Matt', 30 ,'Male','Boston', 95]]

# Column labels of the DataFrame
columns = ['Name','Age','Sex', 'City', 'Marks']

# Create a DataFrame df
df = pd.DataFrame(data, columns=columns)

df['Sex'].value_counts()

Als je liever de procentuele verdeling ziet in plaats van alleen de ruwe aantallen, gebruik dan normalize=True als argument in .value_counts().

11. Wat is het datatype category en waarom zou je het gebruiken?

Het category-datatype wordt gebruikt voor kolommen met een beperkt aantal unieke stringwaarden (lage cardinaliteit). Het bespaart veel geheugen en versnelt bewerkingen zoals sorteren en groeperen, omdat Pandas de strings één keer in een opzoektabel opslaat en lichtgewicht integers gebruikt voor de eigenlijke datakolom.

Pandas-vragen voor ervaren gebruikers

Wie al een sterke achtergrond in pandas heeft en solliciteert naar een senior rol, kan enkele van deze vragen tegenkomen:

12. Hoe optimaliseer je de performance met grote datasets in pandas?

  • Gebruik PyArrow: Laad data met engine="pyarrow" en dtype_backend="pyarrow". Dit is sneller en veel geheugen-efficiënter dan standaard NumPy-types.

  • Vectorisatie in plaats van lussen: Lussen en iteraties zijn kostbaar, zeker bij grote datasets. Kies in plaats daarvan voor gevectoriseerde bewerkingen, omdat die in één keer op een hele kolom worden toegepast en dus sneller zijn dan rij-voor-rij-iteraties.

  • Laad alleen wat je nodig hebt: Gebruik de parameter usecols in read_csv() of read_parquet() om de hoeveelheid geladen data te beperken.

  • Geheugenefficiënte types: De standaarddatatypes in pandas zijn niet geheugenefficiënt. Zo krijgen integerwaarden standaard int64, maar als je waarden in int32 passen, kan het aanpassen naar int32 het geheugenverbruik optimaliseren. Het converteren van strings met lage cardinaliteit naar category is ook een goed idee.

  • Gebruik data-aggregatie: Probeer data te aggregeren en statistische bewerkingen uit te voeren, omdat bewerkingen op geaggregeerde data efficiënter zijn dan op de volledige dataset.

  • Parallelle verwerking: Natieve pandas is single-threaded. Voor parallelisme op één machine is de voorkeursoplossing het gebruik van Polars (standaard multi-threaded) of bibliotheken zoals Modin die fungeren als een parallelle drop-in-vervanging voor pandas.

13. Wat is het verschil tussen de methoden .join() en .merge() in pandas?

  • Join: Voegt twee DataFrames samen op basis van hun index. Er is echter een optioneel argument on om expliciet aan te geven dat je op kolommen wilt joinen. Standaard voert deze functie een left join uit. De syntaxis is df1.join(df2).

  • Merge: De functie merge() is veelzijdiger en laat je de kolommen opgeven waarop je de DataFrames wilt samenvoegen. Standaard past het een inner join toe, maar je kunt verschillende join-typen instellen zoals left, right, outer, inner en cross. De syntaxis is pd.merge(df1, df2, on=”column_names”).

14. Wat is Timedelta?

Timedelta vertegenwoordigt de duur, oftewel het verschil tussen twee datums of tijden, gemeten in eenheden zoals dagen, uren, minuten en seconden.

15. De methode .append() is verwijderd. Hoe combineer je nu DataFrames?

Als je .append() probeert te gebruiken in een moderne Pandas-omgeving (versie 2.0 of later), krijg je een fout omdat de methode is verwijderd om efficiëntere codeerpraktijken te stimuleren.

In plaats daarvan verzamel je al je dataframes of rijen in een lijst en roep je vervolgens één keer pd.concat() aan:

new_df = pd.concat([df1, df2], ignore_index=True)

16. Wanneer moet je Polars gebruiken in plaats van pandas?

Overweeg Polars (een Rust-gebaseerde DataFrame-bibliotheek) wanneer:

  • De dataset aanzienlijk groter is dan het beschikbare RAM: Polars heeft lazy evaluation/streaming.

  • Je multi-threaded performance nodig hebt: pandas-bewerkingen zijn grotendeels single-threaded.

  • Elke milliseconde telt: Je bouwt een high-performance datapijplijn.

Pandas codeervragen voor sollicitaties

Praktische vaardigheden zijn net zo belangrijk als theoretische kennis als je een technische sollicitatie wilt rocken. Hier zijn dus enkele pandas-codeervragen die je moet kennen voordat je je interviewer ontmoet.

17. Hoe lees je Excel-bestanden naar CSV met pandas?

Eerst gebruiken we de functie .read_excel() om de Excel-data in een variabele in te lezen. Pas daarna gewoon de functie .to_csv() toe voor een naadloze conversie.

Hier is de voorbeeldcode:

import pandas as pd

#input your excel file path into the read_excel() function.
excel_data = pd.read_excel("/content/sample_data/california_housing_test.xlsx")

excel_data.to_csv("CSV_data.csv", index = None, header=True) 

Opmerking: In een modern interview kun je vermelden dat het bewaren van datatypes in parquet-formaat (met .to_parquet() in plaats van .to_csv()) vaak beter is bij grote datasets.

18. Hoe sorteer je een DataFrame op basis van kolommen?

We roepen de methode .sort_values() aan om het DataFrame te sorteren op één kolom of meerdere kolommen.

De syntaxis ziet er zo uit: df.sort_values(by=[“column_names”]), zoals in het volgende voorbeeld:

import pandas as pd

data = [['John', 50, 'Male', 'Austin', 70],
['Cataline', 45 ,'Female', 'San Francisco', 80],
['Matt', 30 ,'Male', 'Boston', 95],
['Oliver',35,'Male', 'New york', 65]]

# Column labels of the DataFrame
columns = ['Name','Age','Sex', 'City', 'Marks']

# Create a DataFrame df
df = pd.DataFrame(data, columns=columns)

# Sort values based on ‘Age’ column
df.sort_values(by=['Age'])

df.head()`

19. Laat twee verschillende manieren zien om data te filteren

Laten we laten zien hoe je het volgende DataFrame filtert:

import pandas as pd

data = {'Name': ['John', 'Cataline', 'Matt'],
        'Age': [50, 45, 30],
        'City': ['Austin', 'San Francisco', 'Boston'],
        'Marks' : [70, 80, 95]}

# Create a DataFrame df
df = pd.DataFrame(data)

Methode 1: Booleaanse indexing

new_df = df[(df.Name == "John") | (df.Marks > 90)]
print (new_df)

Methode 2: Met de methode .query()

df.query('Name == "John" or Marks > 90')
print (new_df)

20. Hoe aggregeer je data (bijv. gemiddelde of som)?

De functie .groupby() laat je data aggregeren op basis van bepaalde kolommen en bewerkingen uitvoeren op de gegroepeerde data. Combineer dit met de methode .agg() voor extra duidelijkheid.

In de volgende code wordt de data gegroepeerd op de kolom Name, en het gemiddelde van Grades per groep berekend:

import pandas as pd

# Create a DataFrame
data = {
    'Name': ['John', 'Matt', 'John', 'Matt', 'Matt', 'Matt'],
    'Grades': [10, 20, 30, 15, 25, 18]
}

# Create a DataFrame df
df = pd.DataFrame(data)

# mean marks of John and Matt
print(df.groupby('Name').agg(
    avg_grade=('Grades', 'mean'),
)

21. Hoe kun je een nieuwe kolom maken op basis van bestaande kolommen?

Er zijn twee manieren om nieuwe kolommen te maken uit bestaande:

  • Directe toekenning: Een kolom met een nieuwe naam toekennen aan een transformatie van bestaande kolom(men): df['Total'] = df['Math'] + df['Science']

  • Method chaining: Een lambda-functie gebruiken met .assign(): df = df.assign(Total=lambda x: x['Math'] + x['Science'])

Method chaining is tegenwoordig de voorkeursmethode, omdat het de leesbaarheid van je code verbetert door de noodzaak van tussentijdse variabelen weg te nemen. Door je volledige datatransformatie als één logische pijplijn te hebben, verklein je de kans op bugs aanzienlijk, omdat je niet per ongeluk een verouderde of onjuiste versie van je DataFrame tijdens de analyse kunt refereren.

Pandas-vragen voor data scientists

Nu we alle algemene en codeervragen voor pandas hebben behandeld, kijken we naar pandas-sollicitatievragen voor data science.

22. Hoe ga je om met null- of missende waarden in pandas?

Je kunt een van de volgende drie methoden gebruiken om met missende waarden in pandas om te gaan:

  • dropna(): verwijdert de missende rijen of kolommen uit het DataFrame.

  • fillna(): vult missende waarden met een specifieke waarde met deze functie.

  • interpolate(): vult de missende waarden met berekende interpolatiewaarden.

Met de PyArrow-backend kunnen integers nu NA-waarden opslaan zonder naar float te casten, wat de datakwaliteit in wetenschappelijke workflows behoudt.

23. Verschil tussen de methoden fillna() en interpolate()

  • fillna(): Vult met een statische waarde (bijv. 0 of "Unknown"). Forward filling met het argument method='ffill' binnen .fillna() is verouderd; gebruik in plaats daarvan rechtstreeks .ffill().

  • interpolate(): Vult met wiskundige schatting (lineair, polynomiaal, spline) tussen punten. Essentieel voor tijdreeksen waar je de "punten wilt verbinden".

24. Wat is resampling?

Resampling wordt gebruikt om de frequentie te veranderen waarmee tijdreeksdata wordt gerapporteerd. Stel dat je maandelijkse tijdreeksdata hebt en dit wilt omzetten naar wekelijkse of jaarlijkse data; dan gebruik je resampling.

Maandelijkse data converteren naar wekelijkse of dagelijkse data is in wezen upsampling. Interpolatietechnieken worden gebruikt om de frequentie te verhogen.

Daarentegen heet het converteren van maandelijkse naar jaarlijkse data downsampling, waarbij data-aggregatietechnieken worden toegepast.

25. Hoe voer je one-hot encoding uit met pandas?

We voeren one-hot encoding uit om categorische waarden naar numerieke waarden om te zetten, zodat ze aan het machinelearning-algoritme kunnen worden gevoerd.

import pandas as pd

data = {'Name': ['John', 'Cateline', 'Matt', 'Oliver'],
        'ID': [1, 22, 23, 36],
        'Category': ['A', 'B', 'A', 'B']}

df = pd.DataFrame(data)

#one hot encoding 
new_df = pd.get_dummies(df, columns=['Category'])
new_df.head()

Voor productie is het gebruik van Scikit-learn's OneHotEncoder de voorkeursoptie omdat die het schema behoudt.

26. Hoe maak je een lijngrafiek in pandas?

Voor een lijngrafiek gebruiken we de plot-functie in pandas.

import pandas as pd


data = {'units': [1, 2, 3, 4, 5],
        'price': [7, 12, 8, 13, 16]}
# Create a DataFrame df
df = pd.DataFrame(data)

df.plot(kind='line', x='units', y='price')

Opmerking: Je kunt nu de backend wijzigen naar Plotly voor interactieve grafieken: pd.options.plotting.backend = "plotly".

27. Wat is de pandas-methode om de statistische samenvatting van alle kolommen in een DataFrame te krijgen?

df.describe() geeft statistieken zoals gemiddelde, percentielen, min, max, enz. van elke kolom in het DataFrame.

28. Wat is het rollend gemiddelde?

Het rollend gemiddelde wordt ook wel moving average genoemd, omdat hierbij het gemiddelde van datapunten voor een opgegeven venster wordt berekend en het venster over de data schuift. Dit vermindert schommelingen en benadrukt langetermijntrends in tijdreeksdata.

De syntaxis ziet er zo uit: df['column_name'].rolling(window=n).mean()

29. Wat is de SettingWithCopyWarning, en hoe los je die op?

Deze waarschuwing trad op wanneer pandas niet zeker wist of je een view of een kopie wijzigde. In moderne pandas (context 3.0+) is Copy-on-Write (CoW) standaard. CoW scheidt views en kopieën strikt, zodat het wijzigen van een subset nooit stilzwijgend het originele frame aanpast, tenzij expliciet gevraagd. Dit neemt grotendeels de dubbelzinnigheid weg die de waarschuwing veroorzaakte.

Om het op oudere pandas-versies te verhelpen, gebruik je .loc[] voor expliciete indexing of wijs je de slice toe aan een nieuwe variabele voordat je wijzigingen aanbrengt, om duidelijkheid te waarborgen en ongewenst gedrag te voorkomen. Lees meer in deze blog: How to Fix SettingWithCopyWarning.

30. Hoe valideer je DataFrame-schema's in productie?

De industriestandaard is pandera, een bibliotheek die strikte datakwaliteitscontroles afdwingt tijdens runtime. Met pandera kun je een schema definiëren dat kolomdatatypen valideert en statistische logica toepast, zoals ervoor zorgen dat waarden binnen een bepaald bereik liggen of dat een kolom uniek is.

Je kunt de decorators (bijv. @pa.check_types) gebruiken om automatisch invoer en uitvoer van je functies te valideren, zodat “vuile data” niet stilletjes je downstream-pijplijnen breekt. Dit werkt feitelijk als unit tests voor je data zelf.

Voorbereiden op het interview

De kans is groot dat je minstens een paar van de meest gestelde vragen krijgt, dus het is verstandig om die te gebruiken voor je voorbereiding. Naast pandas vraagt een data-georiënteerde functie om veel andere skills. Hier is de checklist om te slagen in het hele sollicitatieproces:

Inzicht in de functie-eisen

Bekijk de functiebeschrijving en verantwoordelijkheden opnieuw en zorg dat je vaardigheden en cv daarmee in lijn zijn. Daarnaast is het een plus als je het bedrijf kent en weet hoe jouw rol impact heeft.

Python coderen

De interviewer test eerst je Python-skills voordat hij/zij naar de bibliotheek (pandas) vraagt. Zorg dus dat je sterke Python-vaardigheden hebt.

Voor analyst-rollen volstaat vaak alleen Python. Maar als je solliciteert naar data scientist- of ML engineer-rollen, is het belangrijk om Python codeeruitdagingen op te lossen.

Dataprojecten

Zorg dat je in je cv enkele echte data-problemen hebt opgelost. Voor ervaren kandidaten kun je over eerdere projecten praten. Als je nieuw bent in het veld, rond dan een paar projecten van Kaggle af.

Verdere concepten

Buiten die basis hangt de rest af van de rol.

Voor analysts kunnen vragen gaan over Excel, dashboards voor datavisualisatie, statistiek en kansrekening.

Daarnaast kan de interviewer de diepte ingaan in machine learning en deep learning als je solliciteert naar data scientist- of ML engineer-rollen.

Verwacht vragen over systeemontwerp als je solliciteert naar zeer technische of senior rollen. Herhaal veelvoorkomende ontwerpvragen en oefen end-to-end ML-systeemontwerp.

Conclusie

Een baan bemachtigen in de data-industrie vereist vaak sterke Pandas-vaardigheden. De bovenstaande lijst met zowel theoretische als praktische sollicitatievragen helpt je het pandas-deel van je interview te halen. Plus, de tips aan het einde zorgen ervoor dat je hele sollicitatie soepel verloopt.

Je kunt de volgende resources gebruiken om je voor te bereiden op je pandas-interview:

Srujana Maddula

Auteur

Srujana Maddula

Srujana is een freelance techschrijver met een vierjarige opleiding in Computer Science. Schrijven over uiteenlopende onderwerpen, waaronder data science, cloud computing, development, programmeren, security en veel meer, gaat haar vanzelf af. Ze houdt van klassieke literatuur en het ontdekken van nieuwe bestemmingen.

Onderwerpen

Gerelateerd