Questions d'entretien Python Data Science
1. Quelle est la différence entre pandas Séries et DataFrame ?
Une Séries est un tableau unidimensionnel indexe (equivalent à une colonne). Un DataFrame est un tableau bidimensionnel (equivalent à une table SQL ou un tableur). Un DataFrame est compose de plusieurs Séries partageant le même index. On accède aux colonnes d'un DataFrame via df['colonne'] (retourne une Séries) ou df[['col1', 'col2']] (retourne un DataFrame).
2. Expliquez la différence entre loc et iloc dans pandas.
loc selectionne les données par labels (noms d'index et de colonnes) : df.loc[0:5, 'nom':'age'] inclut les bornes. iloc selectionne par position entière (index numérique) : df.iloc[0:5, 0:3] exclut la borne supérieure comme le slicing Python standard. loc accepte aussi des conditions booleennes : df.loc[df['age'] > 25].
3. Comment gérer les valeurs manquantes dans un dataset ?
Plusieurs stratégies : détection avec df.isnull().sum() pour compter les NaN par colonne. Suppression avec df.dropna() (supprimer les lignes/colonnes). Imputation avec df.fillna(valeur), la médiane pour les numériques (robuste aux outliers), le mode pour les categoriques. Imputation avancee : KNN Imputer ou IterativeImputer de scikit-learn. Le choix dépend du pourcentage de valeurs manquantes et de leur mécanisme (MCAR, MAR, MNAR).
4. Qu'est-ce que le broadcasting dans NumPy ?
Le broadcasting est le mécanisme par lequel NumPy permet des opérations entre tableaux de formes différentes. Les règles : les dimensions sont comparees de droite a gauche, une dimension de taille 1 est "etiree" pour correspondre à l'autre. Exemple : un tableau (3,4) + un tableau (4,) fonctionne car la deuxième dimension correspond. C'est plus performant que les boucles Python car les opérations sont vectorisees en C.
5. Expliquez la différence entre groupby, pivot_table et crosstab.
groupby regroupe les données par une ou plusieurs colonnes et applique des fonctions d'agrégation (sum, mean, count). pivot_table restructure un DataFrame en utilisant des valeurs uniques d'une colonne comme nouvelles colonnes, avec une fonction d'agrégation. crosstab est un cas special de pivot_table pour les tableaux de contingence (frequences croisees). groupby est le plus flexible, pivot_table le plus lisible pour les rapports.
6. Comment visualiser des données efficacement avec matplotlib et seaborn ?
matplotlib est la bibliothèque de base : plt.figure, plt.subplot pour la mise en page, plt.plot, plt.bar, plt.scatter pour les graphiques. seaborn simplifie les visualisations statistiques : sns.heatmap pour les correlations, sns.boxplot pour les distributions, sns.pairplot pour les relations entre variables, sns.catplot pour les données categoriques. Seaborn utilise matplotlib en interne mais offre des defaults plus esthetiques et une API plus concise.
7. Qu'est-ce que la vectorisation et pourquoi est-elle importante ?
La vectorisation consiste à appliquer des opérations sur des tableaux entiers plutôt qu'élément par élément avec des boucles Python. NumPy et pandas implementent les opérations en C/Fortran, ce qui est 10 à 100 fois plus rapide. Exemple : au lieu de "for i in range(len(arr)): result[i] = arr[i] * 2", écrivez "result = arr * 2". Évitez iterrows() dans pandas, préférez apply() ou les opérations vectorisees.
8. Comment gérer les données categoriques en data science ?
Label Encoding : transformer les catégories en entiers (0, 1, 2...), adapte aux variables ordinales. One-Hot Encoding (pd.get_dummies ou OneHotEncoder) : créer une colonne binaire par catégorie, adapte aux variables nominales. Target Encoding : remplacer chaque catégorie par la moyenne de la variable cible, risque d'overfitting. Frequency Encoding : remplacer par la fréquence d'apparition. Pour les catégories a haute cardinalite, le target encoding ou le hashing sont préférés.
9. Expliquez le processus de feature engineering.
Le feature engineering consiste à créer de nouvelles variables à partir des existantes pour améliorer les modèles ML. Techniques : extraction (jour de la semaine depuis une date, longueur d'un texte), transformation (log pour normaliser, binning pour discretiser), interaction (produit de deux features), agrégation (moyenne par groupe), text features (TF-IDF, word embeddings), polynomial features (termes quadratiques). C'est souvent l'étape qui a le plus d'impact sur les performances du modèle.
10. Comment évaluer la qualité d'un dataset avant la modélisation ?
Vérifiez : la taille du dataset (suffisant pour le ML ?), les types de données (df.dtypes), les valeurs manquantes (df.isnull().sum()), les doublons (df.duplicated()), les statistiques descriptives (df.describe()), la distribution des variables (histogrammes, boxplots), les correlations (df.corr(), heatmap), le desequilibre des classes pour la classification, et les outliers (IQR, z-score). Documentez chaque anomalie trouvee.