Pandas Merge, Join et concatenation

Python est un langage adapté pour l’analyse de donnée, le package Pandas est central dans la gestion et l’analyse de donnée ainsi que leur importation. Dans cet article voyons le join, merge, concatenate.

Introduction – Pandas Merge Join et concat

La librairie pandas est caractérisée par l’objet DataFrame qui permet de manipuler des données facilement et efficacement.

Pour installer pandas si ce n’est pas encore le cas sur votre poste :

pip install pandas

Aussi vous pouvez consulter sur ce site : https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html

Vous pouvez vérifier facilement la version installée sur votre machine en exécutant le code python suivant :

import pandas as pd 
print(pd.__version__)

Vous obtenez par exemple :

pandas csv - Comment charger/sauvegarder avec pandas en Python ?
Vérifier la version de pandas installée

Concatener des DataFrame en utilisant la fonction .concat() :

Voici un exemple :

import pandas as pd 
data1 = {'Ville':['Paris','Marseille','Lyon'],'CodePostal':['75000','13000','69000']}
data2 = {'Ville':['Metz','Brest','Perpignan'],'CodePostal':['57000','29200','66000']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
res1 = pd.concat([df1,df2])

print('****** Datafram 1 ******')
print(df1)
print('****** Datafram 2 ******')
print(df2)
print('****** Concat ******')
print(res1)

Voici la sortie :

****** Datafram 1 ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
****** Datafram 2 ******
       Ville CodePostal
0       Metz      57000
1      Brest      29200
2  Perpignan      66000
****** Concat ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
0       Metz      57000
1      Brest      29200
2  Perpignan      66000
Pandas Merge, Join et concatenation

Concaténer sur un axe différent :

Exemple de concaténation avec pandas sur un axe différent :

import pandas as pd 
data1 = {'Ville':['Paris','Marseille','Lyon'],'CodePostal':['75000','13000','69000']}
data2 = {'Ville':['Metz','Brest','Perpignan'],'CodePostal':['57000','29200','66000']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
res1 = pd.concat([df1, df2], axis=1, join='inner')

print('****** Datafram 1 ******')
print(df1)
print('****** Datafram 2 ******')
print(df2)
print('****** Concat on different axes ******')
print(res1)

La sortie est la suivante :

****** Datafram 1 ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
****** Datafram 2 ******
       Ville CodePostal
0       Metz      57000
1      Brest      29200
2  Perpignan      66000
****** Intersection ******
       Ville CodePostal      Ville CodePostal
0      Paris      75000       Metz      57000
1  Marseille      13000      Brest      29200
2       Lyon      69000  Perpignan      66000

Autre exemple avec .append():

import pandas as pd 
data1 = {'Ville':['Paris','Marseille','Lyon'],'CodePostal':['75000','13000','69000']}
data2 = {'Ville':['Metz','Brest','Perpignan'],'CodePostal':['57000','29200','66000']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
res1 = df1.append(df2)

print('****** Datafram 1 ******')
print(df1)
print('****** Datafram 2 ******')
print(df2)
print('****** Append ******')
print(res1)

Et la sortie est :

****** Datafram 1 ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
****** Datafram 2 ******
       Ville CodePostal
0       Metz      57000
1      Brest      29200
2  Perpignan      66000
****** Append ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
0       Metz      57000
1      Brest      29200
2  Perpignan      66000

Merge de dataframe avec pandas :

Voici un exemple de merge :

import pandas as pd 
data1 = {'Ville':['Paris','Marseille','Lyon'],'CodePostal':['75000','13000','69000']}
data2 = {'Ville':['Metz','Brest','Perpignan','Paris'],'CodePostal':['57000','29200','66000','75001']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
res1 = res = pd.merge(df1, df2, on='Ville')

print('****** Datafram 1 ******')
print(df1)
print('****** Datafram 2 ******')
print(df2)
print('****** Merging ******')
print(res1)

Voici la sortie :

****** Datafram 1 ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
****** Datafram 2 ******
       Ville CodePostal
0       Metz      57000
1      Brest      29200
2  Perpignan      66000
3      Paris      75001
****** Merging ******
   Ville CodePostal_x CodePostal_y
0  Paris        75000        75001

Jointure pandas python :

import pandas as pd 
data1 = {'Ville':['Paris','Marseille','Lyon'],'CodePostal':['75000','13000','69000']}
data2 = {'Ville2':['Metz','Brest','Perpignan','Paris'],'Nbhabitant':['10000','20000','30000','40000']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
res1 = df1.join(df2,how='inner')

print('****** Datafram 1 ******')
print(df1)
print('****** Datafram 2 ******')
print(df2)
print('****** Join ******')
print(res1)
****** Datafram 1 ******
       Ville CodePostal
0      Paris      75000
1  Marseille      13000
2       Lyon      69000
****** Datafram 2 ******
      Ville2 Nbhabitant
0       Metz      10000
1      Brest      20000
2  Perpignan      30000
3      Paris      40000
****** Join ******
       Ville CodePostal     Ville2 Nbhabitant
0      Paris      75000       Metz      10000
1  Marseille      13000      Brest      20000
2       Lyon      69000  Perpignan      30000

https://128mots.com/index.php/category/python/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *