Fusion et jointure avancées
pd.merge() avec how, on, left_on/right_on, suffixes et merge_asof pour les jointures temporelles.
Fusion et jointure avancées est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Combinaison de DataFrames
pd.merge joint deux DataFrames sur des clés communes, exactement comme une jointure SQL JOIN. La maîtrise des options how est essentielle pour travailler avec des données relationnelles.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Jointure interne (par défaut)
how="inner" ne conserve que les clés présentes dans les deux tableaux (BOTH). C’est le comportement par défaut.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Jointure gauche
how="left" conserve toutes les lignes du tableau de gauche ; les colonnes sans correspondance à droite deviennent NaN. C’est la jointure la plus courante en analyse de données.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Jointure externe
how="outer" conserve toutes les clés des deux côtés et comble les lacunes avec NaN. Utilisez-la pour voir l’union complète des enregistrements.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Jointure sur des noms de colonnes différents
Lorsque les colonnes de clés portent des noms différents, utilisez left_on et right_on plutôt que on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Suffixes pour les colonnes communes
Si les deux tableaux partagent le nom d’une colonne qui n’est pas une clé, pandas ajoute _x et _y. Remplacez-les par suffixes pour plus de clarté.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))La colonne indicatrice
indicator=True ajoute une colonne _merge indiquant la source de chaque ligne : uniquement à gauche, uniquement à droite ou des deux côtés. Elle est très utile pour auditer les jointures.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromDiagnostic des problèmes de jointure
Filtrer selon l’indicateur révèle rapidement les clés sans correspondance, cause fréquente de suppressions silencieuses de données.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof pour les jointures temporelles
pd.merge_asof effectue une jointure sur la clé la plus proche plutôt que sur une correspondance exacte. Il est spécialement conçu pour aligner des séries temporelles, par exemple pour associer chaque transaction à la dernière cotation précédente. Les deux DataFrame doivent être triés selon la clé.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Sens de merge_asof
Par défaut, merge_asof regarde en arrière (dernière clé antérieure ou égale). Utilisez direction="forward" ou "nearest" pour modifier la règle de correspondance.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))Choisir la bonne jointure
Utilisez inner pour conserver uniquement les correspondances, left pour enrichir une table principale, outer pour obtenir l’union complète et merge_asof pour les jointures temporelles (sur une clé approximative).
Vérification rapide
Testez vos connaissances sur les jointures.
Récapitulatif
Boîte à outils des jointures :
how=inner / left / outer contrôle les clés conservéesonouleft_on/right_onpour les colonnes cléssuffixesdésambiguïse les noms en doubleindicator=Truevérifie la source des lignespd.merge_asofpour les jointures temporelles sur la clé la plus proche (triez d’abord)
Questions Fréquemment Posées
La leçon « Fusion et jointure avancées » est-elle gratuite ?
Oui — le texte complet de « Fusion et jointure avancées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fusion et jointure avancées » ?
pd.merge() avec how, on, left_on/right_on, suffixes et merge_asof pour les jointures temporelles. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Fusion et jointure avancées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- GroupBy et agrégation
- Tableaux croisés dynamiques et tableaux de contingence
- Fusion et jointure avancées
- Séries temporelles dans Pandas