Diversi tipi di join nei Panda
Il modulo Pandas contiene varie funzionalità per eseguire varie operazioni su Dataframe come unire, concatenare, eliminare, aggiungere, ecc. In questo articolo discuteremo i vari tipi di operazioni di unione che possono essere eseguite su Pandas Dataframe. Sono disponibili cinque tipi di join Panda .
- Unione interna
- Unione esterna sinistra
- Giunzione esterna destra
- Full Outer Join o semplicemente Outer Join
- Indice Unisciti
Per comprendere i diversi tipi di join, creeremo prima due DataFrames, vale a dire UN E B .
Dataframe a:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # printing the dataframe> a> |
Produzione:
DataFrame b:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # printing the dataframe> b> |
Produzione:
Tipi di join nei panda
Utilizzeremo questi due Dataframe per comprendere i diversi tipi di join.
Panda Unione interna
Il join interno è il tipo di join più comune con cui lavorerai. Restituisce un Dataframe con solo le righe che hanno caratteristiche comuni. Questo è simile all'intersezione di due insiemi.
Esempio:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # inner join> df> => pd.merge(a, b, on> => 'id'> , how> => 'inner'> )> # display dataframe> df> |
Produzione:
Panda Partecipa a sinistra
Con un left external join, verranno visualizzati tutti i record del primo Dataframe, indipendentemente dal fatto che le chiavi del primo Dataframe possano essere trovate nel secondo Dataframe. Per il secondo Dataframe, invece, verranno visualizzati solo i record con le chiavi del secondo Dataframe che si trovano nel primo Dataframe.
Esempio:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # left outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'left'> )> # display dataframe> df> |
Produzione:
Panda Giunzione esterna destra
Per un'unione a destra, verranno visualizzati tutti i record del secondo Dataframe. Tuttavia, verranno visualizzati solo i record con le chiavi nel primo Dataframe che possono essere trovati nel secondo Dataframe.
Esempio:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # right outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'right'> )> # display dataframe> df> |
Produzione:
Panda Join esterno completo
Un full external join restituisce tutte le righe del Dataframe sinistro e tutte le righe del Dataframe destro e abbina le righe, ove possibile, con NaN altrove. Ma se il Dataframe è completo, otteniamo lo stesso output.
Esempio:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # full outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'outer'> )> # display dataframe> df> |
Produzione:
Partecipa all'indice dei panda
Per unire il Dataframe sugli indici passare il file indice_sinistra E indice_destro argomenti come True, ovvero entrambi i Dataframe vengono uniti su un indice utilizzando l'Inner Join predefinito.
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # index join> df> => pd.merge(a, b, left_index> => True> , right_index> => True> )> # display dataframe> df> |
Produzione: