0Pricing
Learn AI with Python · Lezione

Merge e join avanzati

pd.merge() con how, on, left_on/right_on, suffixes e merge_asof per join basati sul tempo.

Merge e join avanzati è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Combinare i DataFrame

pd.merge unisce due DataFrame tramite chiavi condivise, esattamente come una JOIN SQL. Padroneggiare le opzioni di how è essenziale per lavorare con dati relazionali.

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]})

Join interna (predefinita)

how="inner" conserva solo le chiavi presenti in ENTRAMBI i frame. È l'impostazione predefinita.

print(pd.merge(left, right, on="id", how="inner"))
#    id name  score
# 0   2    b     90
# 1   3    c     80

Join a sinistra

how="left" conserva ogni riga del frame a sinistra; le colonne senza corrispondenza a destra diventano NaN. È la join più comune nell'analisi dei dati.

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.0

Join esterna

how="outer" conserva tutte le chiavi di entrambi i lati, riempiendo le lacune con NaN. La utilizzi per visualizzare l'unione completa dei record.

print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)

Unire colonne con nomi diversi

Quando le colonne chiave hanno nomi diversi, utilizzi left_on e right_on al posto di on.

r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))

Suffissi per le colonne sovrapposte

Se entrambi i frame condividono il nome di una colonna non chiave, pandas aggiunge _x e _y. Li sostituisca con suffixes per maggiore chiarezza.

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 colonna indicator

indicator=True aggiunge una colonna _merge che mostra l'origine di ogni riga: left_only, right_only oppure both. È indispensabile per verificare le join.

print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came from

Diagnosticare i problemi delle join

Filtrare sulla colonna indicator rivela rapidamente le chiavi senza corrispondenza, una causa comune della perdita silenziosa di dati.

m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"])   # rows that did not match

merge_asof per unioni temporali

pd.merge_asof esegue l’unione sulla chiave PIÙ VICINA anziché su una corrispondenza esatta. È progettato appositamente per allineare serie temporali, ad esempio associando ogni operazione all’ultima quotazione precedente. Entrambi i frame devono essere ordinati in base alla chiave.

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"))

Direzione di merge_asof

Per impostazione predefinita, merge_asof cerca all’INDIETRO (l’ultima chiave precedente o uguale). Utilizzi direction="forward" o "nearest" per modificare la regola di corrispondenza.

print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))

Scelta del join corretto

Utilizzi inner per mantenere solo le corrispondenze, left per arricchire una tabella principale, outer per ottenere l’unione completa e merge_asof per i join allineati temporalmente (con chiavi approssimate).

Verifica rapida

Verifichi le Sue conoscenze sui join.

Riepilogo

Strumenti per il merging:

  • how= inner / left / outer controlla quali chiavi sopravvivono
  • on rispetto a left_on/right_on per le colonne chiave
  • suffixes disambigua i nomi sovrapposti
  • indicator=True verifica l’origine delle righe
  • pd.merge_asof per join temporali sulla chiave più vicina (ordini prima i dati)

Domande Frequenti

La lezione «Merge e join avanzati» è gratuita?

Sì — il testo completo di «Merge e join avanzati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «Merge e join avanzati»?

pd.merge() con how, on, left_on/right_on, suffixes e merge_asof per join basati sul tempo. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Merge e join avanzati»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. GroupBy e aggregazione
  2. Tabelle pivot e tabelle di contingenza
  3. Merge e join avanzati
  4. Serie temporali in Pandas
← Torna a Learn AI with Python