#dossier
import os
os.chdir("C:/Users/ricco/Desktop/demo")
#table produits
import pandas
dfProd = pandas.read_excel("produits.xlsx")
dfProd.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 77 entries, 0 to 76 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Ref_produit 77 non-null int64 1 Nom_produit 77 non-null object 2 Num_fournisseur 77 non-null int64 3 Quantite_par_unite 77 non-null object 4 Prix_unitaire 77 non-null float64 dtypes: float64(1), int64(2), object(2) memory usage: 3.1+ KB
#table fournisseurs
dfFour = pandas.read_excel("fournisseurs.xlsx")
dfFour.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 29 entries, 0 to 28 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Num_fournisseur 29 non-null int64 1 Societe 29 non-null object 2 Adresse 29 non-null object 3 Ville 29 non-null object 4 Pays 29 non-null object dtypes: int64(1), object(4) memory usage: 1.3+ KB
#liste des fournisseurs
dfFour
Num_fournisseur | Societe | Adresse | Ville | Pays | |
---|---|---|---|---|---|
0 | 1 | Exotic Liquids | 49 Gilbert St. | London | Royaume-Uni |
1 | 2 | Nouvelle-Orléans Cajun Delights | P.O. Box 78934 | Nouvelle-Orléans | Etats-Unis |
2 | 3 | Grandma Kelly's Homestead | 707 Oxford Rd. | Ann Arbor | Etats-Unis |
3 | 4 | Tokyo Traders | 9-8 Sekimai_x000D_\nMusashino-shi | Tokyo | Japon |
4 | 5 | Cooperativa de Quesos 'Las Cabras' | Calle del Rosal 4 | Oviedo | Espagne |
5 | 6 | Mayumi's | 92 Setsuko_x000D_\nChuo-ku | Osaka | Japon |
6 | 7 | Pavlova, Ltd. | 74 Rose St._x000D_\nMoonie Ponds | Melbourne | Australie |
7 | 8 | Specialty Biscuits, Ltd. | 29 King's Way | Manchester | Royaume-Uni |
8 | 9 | PB Knäckebröd AB | Kaloadagatan 13 | Göteborg | Suède |
9 | 10 | Refrescos Americanas LTDA | Av. das Americanas 12.890 | São Paulo | Brésil |
10 | 11 | Heli Süßwaren GmbH & Co. KG | Tiergartenstraße 5 | Berlin | Allemagne |
11 | 12 | Plutzer Lebensmittelgroßmärkte AG | Bogenallee 51 | Frankfurt | Allemagne |
12 | 13 | Nord-Ost-Fisch Handelsgesellschaft mbH | Frahmredder 112a | Cuxhaven | Allemagne |
13 | 14 | Formaggi Fortini s.r.l. | Viale Dante, 75 | Ravenna | Italie |
14 | 15 | Norske Meierier | Hatlevegen 5 | Sandvika | Norvège |
15 | 16 | Bigfoot Breweries | 3400 - 8th Avenue_x000D_\nSuite 210 | Bend | Etats-Unis |
16 | 17 | Svensk Sjöföda AB | Brovallavägen 231 | Stockholm | Suède |
17 | 18 | Aux joyeux ecclésiastiques | 203, Rue des Francs-Bourgeois | Paris | France |
18 | 19 | New England Seafood Cannery | Order Processing Dept._x000D_\n2100 Paul Rever... | Boston | Etats-Unis |
19 | 20 | Leka Trading | 471 Serangoon Loop, Suite #402 | Singapore | Singapour |
20 | 21 | Lyngbysild | Lyngbysild_x000D_\nFiskebakken 10 | Lyngby | Danemark |
21 | 22 | Zaanse Snoepfabriek | Verkoop_x000D_\nRijnweg 22 | Zaandam | Pays-Bas |
22 | 23 | Karkki Oy | Valtakatu 12 | Lappeenranta | Finlande |
23 | 24 | G'day, Mate | 170 Prince Edward Parade_x000D_\nHunter's Hill | Sydney | Australie |
24 | 25 | Ma Maison | 2960 Rue St. Laurent | Montréal | Canada |
25 | 26 | Pasta Buttini s.r.l. | Via dei Gelsomini, 153 | Salerno | Italie |
26 | 27 | Escargots Nouveaux | 22, rue H. Voiron | Montceau | France |
27 | 28 | Gai pâturage | Bat. B_x000D_\n3, rue des Alpes | Annecy | France |
28 | 29 | Forêts d'érables | 148 rue Chasseur | Ste-Hyacinthe | Canada |
#utilisation de PandaSQL
import pandasql as ps
#définition de la requête
str_req = "SELECT * FROM dfFour"
#exécution de la requête
res = ps.sqldf(str_req)
#type de résultat -> dataframe
type(res)
pandas.core.frame.DataFrame
#affichage
res
Num_fournisseur | Societe | Adresse | Ville | Pays | |
---|---|---|---|---|---|
0 | 1 | Exotic Liquids | 49 Gilbert St. | London | Royaume-Uni |
1 | 2 | Nouvelle-Orléans Cajun Delights | P.O. Box 78934 | Nouvelle-Orléans | Etats-Unis |
2 | 3 | Grandma Kelly's Homestead | 707 Oxford Rd. | Ann Arbor | Etats-Unis |
3 | 4 | Tokyo Traders | 9-8 Sekimai_x000D_\nMusashino-shi | Tokyo | Japon |
4 | 5 | Cooperativa de Quesos 'Las Cabras' | Calle del Rosal 4 | Oviedo | Espagne |
5 | 6 | Mayumi's | 92 Setsuko_x000D_\nChuo-ku | Osaka | Japon |
6 | 7 | Pavlova, Ltd. | 74 Rose St._x000D_\nMoonie Ponds | Melbourne | Australie |
7 | 8 | Specialty Biscuits, Ltd. | 29 King's Way | Manchester | Royaume-Uni |
8 | 9 | PB Knäckebröd AB | Kaloadagatan 13 | Göteborg | Suède |
9 | 10 | Refrescos Americanas LTDA | Av. das Americanas 12.890 | São Paulo | Brésil |
10 | 11 | Heli Süßwaren GmbH & Co. KG | Tiergartenstraße 5 | Berlin | Allemagne |
11 | 12 | Plutzer Lebensmittelgroßmärkte AG | Bogenallee 51 | Frankfurt | Allemagne |
12 | 13 | Nord-Ost-Fisch Handelsgesellschaft mbH | Frahmredder 112a | Cuxhaven | Allemagne |
13 | 14 | Formaggi Fortini s.r.l. | Viale Dante, 75 | Ravenna | Italie |
14 | 15 | Norske Meierier | Hatlevegen 5 | Sandvika | Norvège |
15 | 16 | Bigfoot Breweries | 3400 - 8th Avenue_x000D_\nSuite 210 | Bend | Etats-Unis |
16 | 17 | Svensk Sjöföda AB | Brovallavägen 231 | Stockholm | Suède |
17 | 18 | Aux joyeux ecclésiastiques | 203, Rue des Francs-Bourgeois | Paris | France |
18 | 19 | New England Seafood Cannery | Order Processing Dept._x000D_\n2100 Paul Rever... | Boston | Etats-Unis |
19 | 20 | Leka Trading | 471 Serangoon Loop, Suite #402 | Singapore | Singapour |
20 | 21 | Lyngbysild | Lyngbysild_x000D_\nFiskebakken 10 | Lyngby | Danemark |
21 | 22 | Zaanse Snoepfabriek | Verkoop_x000D_\nRijnweg 22 | Zaandam | Pays-Bas |
22 | 23 | Karkki Oy | Valtakatu 12 | Lappeenranta | Finlande |
23 | 24 | G'day, Mate | 170 Prince Edward Parade_x000D_\nHunter's Hill | Sydney | Australie |
24 | 25 | Ma Maison | 2960 Rue St. Laurent | Montréal | Canada |
25 | 26 | Pasta Buttini s.r.l. | Via dei Gelsomini, 153 | Salerno | Italie |
26 | 27 | Escargots Nouveaux | 22, rue H. Voiron | Montceau | France |
27 | 28 | Gai pâturage | Bat. B_x000D_\n3, rue des Alpes | Annecy | France |
28 | 29 | Forêts d'érables | 148 rue Chasseur | Ste-Hyacinthe | Canada |
#liste des fournisseurs français
str_req = """SELECT *
FROM dfFour
WHERE Pays LIKE 'France'"""
#exécution
ps.sqldf(str_req)
Num_fournisseur | Societe | Adresse | Ville | Pays | |
---|---|---|---|---|---|
0 | 18 | Aux joyeux ecclésiastiques | 203, Rue des Francs-Bourgeois | Paris | France |
1 | 27 | Escargots Nouveaux | 22, rue H. Voiron | Montceau | France |
2 | 28 | Gai pâturage | Bat. B_x000D_\n3, rue des Alpes | Annecy | France |
#liste des pays
str_req = """SELECT DISTINCT(Pays)
FROM dfFour"""
#exécution
ps.sqldf(str_req)
Pays | |
---|---|
0 | Royaume-Uni |
1 | Etats-Unis |
2 | Japon |
3 | Espagne |
4 | Australie |
5 | Suède |
6 | Brésil |
7 | Allemagne |
8 | Italie |
9 | Norvège |
10 | France |
11 | Singapour |
12 | Danemark |
13 | Pays-Bas |
14 | Finlande |
15 | Canada |
#pays qui apparaissent plus d'une fois
str_req = """SELECT Pays,COUNT(PAYS) AS NbPays
FROM dfFour
GROUP BY Pays
HAVING NbPays > 1"""
#exécution
ps.sqldf(str_req)
Pays | NbPays | |
---|---|---|
0 | Allemagne | 3 |
1 | Australie | 2 |
2 | Canada | 2 |
3 | Etats-Unis | 4 |
4 | France | 3 |
5 | Italie | 2 |
6 | Japon | 2 |
7 | Royaume-Uni | 2 |
8 | Suède | 2 |
#avec merge de Pandas
#liste des produits, dont le prix est > 50, et leurs fournisseurs
dfProd.merge(dfFour,how='left',on='Num_fournisseur').loc[dfProd.Prix_unitaire > 50,['Nom_produit','Societe','Prix_unitaire']]
Nom_produit | Societe | Prix_unitaire | |
---|---|---|---|
8 | Mishi Kobe Niku | Tokyo Traders | 97.00 |
17 | Carnarvon Tigers | Pavlova, Ltd. | 62.50 |
19 | Sir Rodney's Marmalade | Specialty Biscuits, Ltd. | 81.00 |
28 | Thüringer Rostbratwurst | Plutzer Lebensmittelgroßmärkte AG | 123.79 |
37 | Côte de Blaye | Aux joyeux ecclésiastiques | 263.50 |
50 | Manjimup Dried Apples | G'day, Mate | 53.00 |
58 | Raclette Courdavault | Gai pâturage | 55.00 |
#en SQL
str_req = """SELECT A.Nom_produit, B.Societe, A.Prix_unitaire
FROM dfProd A
LEFT JOIN dfFour B
ON A.Num_fournisseur = B.Num_fournisseur
WHERE A.Prix_unitaire > 50"""
#exécution
ps.sqldf(str_req)
Nom_produit | Societe | Prix_unitaire | |
---|---|---|---|
0 | Mishi Kobe Niku | Tokyo Traders | 97.00 |
1 | Carnarvon Tigers | Pavlova, Ltd. | 62.50 |
2 | Sir Rodney's Marmalade | Specialty Biscuits, Ltd. | 81.00 |
3 | Thüringer Rostbratwurst | Plutzer Lebensmittelgroßmärkte AG | 123.79 |
4 | Côte de Blaye | Aux joyeux ecclésiastiques | 263.50 |
5 | Manjimup Dried Apples | G'day, Mate | 53.00 |
6 | Raclette Courdavault | Gai pâturage | 55.00 |