Questions d'entretien Python Data Science
1. Quelle est la difference entre pandas Series et DataFrame ?
Une Series est un tableau unidimensionnel indexe (equivalent a une colonne). Un DataFrame est un tableau bidimensionnel (equivalent a une table SQL ou un tableur). Un DataFrame est compose de plusieurs Series partageant le meme index. On accede aux colonnes d'un DataFrame via df['colonne'] (retourne une Series) ou df[['col1', 'col2']] (retourne un DataFrame).
2. Expliquez la difference entre loc et iloc dans pandas.
loc selectionne les donnees par labels (noms d'index et de colonnes) : df.loc[0:5, 'nom':'age'] inclut les bornes. iloc selectionne par position entiere (index numerique) : df.iloc[0:5, 0:3] exclut la borne superieure comme le slicing Python standard. loc accepte aussi des conditions booleennes : df.loc[df['age'] > 25].
3. Comment gerer les valeurs manquantes dans un dataset ?
Plusieurs strategies : detection avec df.isnull().sum() pour compter les NaN par colonne. Suppression avec df.dropna() (supprimer les lignes/colonnes). Imputation avec df.fillna(valeur), la mediane pour les numeriques (robuste aux outliers), le mode pour les categoriques. Imputation avancee : KNN Imputer ou IterativeImputer de scikit-learn. Le choix depend du pourcentage de valeurs manquantes et de leur mecanisme (MCAR, MAR, MNAR).
4. Qu'est-ce que le broadcasting dans NumPy ?
Le broadcasting est le mecanisme par lequel NumPy permet des operations entre tableaux de formes differentes. Les regles : les dimensions sont comparees de droite a gauche, une dimension de taille 1 est "etiree" pour correspondre a l'autre. Exemple : un tableau (3,4) + un tableau (4,) fonctionne car la deuxieme dimension correspond. C'est plus performant que les boucles Python car les operations sont vectorisees en C.
5. Expliquez la difference entre groupby, pivot_table et crosstab.
groupby regroupe les donnees par une ou plusieurs colonnes et applique des fonctions d'agregation (sum, mean, count). pivot_table restructure un DataFrame en utilisant des valeurs uniques d'une colonne comme nouvelles colonnes, avec une fonction d'agregation. 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 donnees efficacement avec matplotlib et seaborn ?
matplotlib est la bibliotheque 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 donnees 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 a appliquer des operations sur des tableaux entiers plutot qu'element par element avec des boucles Python. NumPy et pandas implementent les operations en C/Fortran, ce qui est 10 a 100 fois plus rapide. Exemple : au lieu de "for i in range(len(arr)): result[i] = arr[i] * 2", ecrivez "result = arr * 2". Evitez iterrows() dans pandas, preferez apply() ou les operations vectorisees.
8. Comment gerer les donnees categoriques en data science ?
Label Encoding : transformer les categories en entiers (0, 1, 2...), adapte aux variables ordinales. One-Hot Encoding (pd.get_dummies ou OneHotEncoder) : creer une colonne binaire par categorie, adapte aux variables nominales. Target Encoding : remplacer chaque categorie par la moyenne de la variable cible, risque d'overfitting. Frequency Encoding : remplacer par la frequence d'apparition. Pour les categories a haute cardinalite, le target encoding ou le hashing sont preferes.
9. Expliquez le processus de feature engineering.
Le feature engineering consiste a creer de nouvelles variables a partir des existantes pour ameliorer les modeles 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), agregation (moyenne par groupe), text features (TF-IDF, word embeddings), polynomial features (termes quadratiques). C'est souvent l'etape qui a le plus d'impact sur les performances du modele.
10. Comment evaluer la qualite d'un dataset avant la modelisation ?
Verifiez : la taille du dataset (suffisant pour le ML ?), les types de donnees (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.