AccueilBlogTest technique Python pour la data
Guide recrutement data

Test technique Python pour la data : ce qu'on évalue vraiment

Python est le couteau suisse de la data. Mais l'écart est immense entre empiler des apply et écrire un pipeline vectorisé, testé et robuste en production. Voici ce qu'on évalue vraiment.

Data Builder·Juillet 2025·10 min de lecture·Data Analyst / Data Engineer

« Faire du Python » en data, c'est surtout manipuler de la donnée proprement et écrire du code qui tient en production. On regarde autant la rigueur que la connaissance de la syntaxe. Cinq dimensions.

1pandas : manipulation

Question discriminante

Comment agréger et joindre deux DataFrames proprement — et pourquoi éviter une boucle for sur les lignes ?

  • merge/join en maîtrisant le type (inner/left) et les clés.
  • groupby().agg() avec plusieurs agrégats nommés.
  • Vectorisation plutôt que iterrows/apply ligne à ligne (10 à 100× plus rapide).
  • Gestion des dtypes et de la mémoire (categorical, downcast).

Signal d'alerte : boucler avec iterrows pour une opération vectorisable révèle une méconnaissance du coût — signal faible sur de vrais volumes.

2Nettoyage et qualité des données

Question discriminante

On vous donne un CSV sale (NA, doublons, types incohérents). Comment le fiabilisez-vous ?

  • Valeurs manquantes : diagnostiquer avant de dropna/fillna à l'aveugle.
  • Doublons : détecter avec duplicated, comprendre la granularité attendue.
  • Types et dates : astype, to_datetime, fuseaux horaires.
  • Valeurs aberrantes : les repérer, décider quoi en faire (garder/écarter) et le documenter.

Signal d'alerte : conclure sans avoir vérifié NA et doublons est le réflexe qui distingue un profil fragile d'un profil fiable.

3Code de qualité

Question discriminante

Comment structurez-vous un script data pour qu'il tienne en production et soit repris par l'équipe ?

  • Fonctions et classes réutilisables plutôt qu'un long script monolithique.
  • Exceptions ciblées et logging structuré plutôt que des print.
  • Tests unitaires : pytest, fixtures, cas limites.
  • Configuration et secrets hors du code (variables d'environnement, gestionnaire de secrets).

4APIs et entrées/sorties

Question discriminante

Comment récupérez-vous des données d'une API paginée de façon robuste ?

for page in range(1, n+1): r = session.get(url, params={'page': page}, timeout=10) r.raise_for_status() # échoue vite et clairement rows += r.json()['data'] time.sleep(backoff) # respecter le rate limit
  • Pagination + retry avec backoff exponentiel sur les erreurs transitoires.
  • timeout systématique et gestion du rate limit.
  • Authentification propre (token, refresh) sans secret en dur.
  • Formats de sortie : Parquet plutôt que CSV pour la donnée volumineuse.

5Performance et volumétrie

Question discriminante

Le dataset ne tient plus en mémoire. Que faites-vous ?

  • Réduire l'empreinte : dtypes économes, colonnes utiles seulement, categorical.
  • Traitement par lots (chunking) plutôt que tout charger d'un coup.
  • Passer à un moteur adapté : DuckDB / Polars en local, Spark à l'échelle.
  • Savoir quand quitter pandas est un marqueur de séniorité.

6Grille par niveau

NiveauMaîtrise attendueSignal GONO-GO
Juniorpandas de base, lecture/écriture de fichiersAgrège et joint proprement, vérifie ses donnéesBoucle for pour une opération vectorisable
ConfirméVectorisation, nettoyage, fonctions, testsÉcrit du code testé, gère les cas limitesNe teste rien et abuse des print
SeniorAPIs robustes, logging, perf/volumétrieSait quand quitter pandas, sécurise les secretsMet des secrets en dur dans le code
LeadArchitecture de pipelines, standards, packagingDéfinit les conventions et l'outillage d'équipeNe peut pas expliquer un choix d'architecture

Vous recrutez un profil data ?

Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.

Tester gratuitementRéserver un appel