Pandas – Joins unione dei dati
Spesso dobbiamo analizzare dei dati con provenienze diverse, quindi unirli in una nuova tabella è fondamentale per riuscire ad eseguire analisi, la funzione Join in Pandas per Python ci permette di farlo molto facilmente.
L’indice di questa guida è disponibile a questo link: https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/python-data-analisi/panda-per-python/
I dati sulle tabelle
Questa volta i file di esempio scaricabili da GitHub sono due e i link sono i seguenti:
- https://github.com/Amply666/Computer4Dummy/blob/master/programmazione-guide-alla-programmazione/python-data-analisi/panda-per-python/tabella1.csv
- https://github.com/Amply666/Computer4Dummy/blob/master/programmazione-guide-alla-programmazione/python-data-analisi/panda-per-python/tabella2.csv
Una volta scaricati possiamo vedere che nella tabella1 abbiamo tre colonne con l’ID dell’utente, la mail e l’età mentre nella seconda tabella abbiamo altri tre compi con il riferimento all’id dell’utente, il campo ad_id e il campo click.
Importiamo i dati
import pandas as pd t1 = pd.read_csv('C:/temp/tabella1.csv') t2 = pd.read_csv('C:/temp/tabella2.csv')
Possiamo quindi vederne il contenuto:
t1 Out[5]: user_id email eta 0 1 [email protected] 22 1 2 pluto@mail 33 2 3 [email protected] 34 t2 Out[6]: user_id ad_id click 0 1 1 1 1 1 2 0 2 1 5 0 3 2 3 0 4 2 4 1 5 2 1 0 6 3 2 0 7 3 1 0 8 3 3 0 9 3 4 0 10 3 5 1
Il comando merge
Per eseguire l’unione delle due tabelle il comando in python è merge() dove la documentazione originale dettagliata è a questo link: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html
Ora eseguiamo il comando e vediamo il risultato della tabella m:
m = pd.merge(t1, t2, on='user_id') m Out[8]: user_id email eta ad_id click 0 1 [email protected] 22 1 1 1 1 [email protected] 22 2 0 2 1 [email protected] 22 5 0 3 2 pluto@mail 33 3 0 4 2 pluto@mail 33 4 1 5 2 pluto@mail 33 1 0 6 3 [email protected] 34 2 0 7 3 [email protected] 34 1 0 8 3 [email protected] 34 3 0 9 3 [email protected] 34 4 0 10 3 [email protected] 34 5 1
La stessa funzione può essere eseguita anche in un altro modo senza cambiare il risultato ottenuto:
n = t1.merge(t2, on='user_id')