Computer 4 dummy

Informatica facile a portata di tutti

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:

  1. https://github.com/Amply666/Computer4Dummy/blob/master/programmazione-guide-alla-programmazione/python-data-analisi/panda-per-python/tabella1.csv
  2. 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')