correction tout les problemes et requetes (sauf une)

master
Vivien Dufour 2 years ago
parent e2a07ccf1a
commit 114458ce72

408
SAE.py

@ -28,77 +28,78 @@ try:
curs = co.cursor()
curs.execute ('''DROP TABLE IF EXISTS Car, Brand, Model, Person;''')
curs.execute ('''CREATE TABLE Brand (
Name varchar(80),
CreationDate numeric,
Headquarter varchar(80),
PRIMARY KEY(Name)
);
CREATE TABLE Model (
Name varchar(120),
FuelType varchar(50),
Transmission varchar(50),
Engine varchar(32),
MaxPower varchar(32),
MaxTorque varchar(32),
Drivetrain varchar(5),
Length numeric,
Width numeric,
Height numeric,
SeatingCapacity numeric,
FuelTankCapacity numeric,
Brand varchar(80),
FOREIGN KEY (Brand) REFERENCES Brand(Name),
PRIMARY KEY (Name)
);
CREATE TABLE Car (
idCar numeric,
Price numeric,
Color varchar(32),
Kilometer numeric,
Year numeric,
Owner varchar(30),
SellerType varchar(30),
Model varchar(120),
FOREIGN KEY (Model) REFERENCES Model(Name),
PRIMARY KEY (IdCar)
);
CREATE TABLE Person (
id numeric PRIMARY KEY,
Name varchar(80),
Job varchar(80) CHECK (Job IN('CEO', 'Founder')),
Brand varchar(80),
FOREIGN KEY (Brand) REFERENCES Brand(Name)
);
''')
curs.execute ('''
DROP TABLE IF EXISTS Car, Brand, Model, Person CASCADE;
CREATE TABLE Brand (
Name varchar(80) PRIMARY KEY,
CreationDate numeric,
Headquarter varchar(80)
);
CREATE TABLE Model (
idModel numeric PRIMARY KEY,
Name varchar(120),
FuelType varchar(50),
Transmission varchar(50),
Engine varchar(32),
MaxPower varchar(32),
MaxTorque varchar(32),
Drivetrain varchar(5),
Length numeric,
Width numeric,
Height numeric,
SeatingCapacity numeric,
FuelTankCapacity numeric,
Brand varchar(80),
FOREIGN KEY (Brand) REFERENCES Brand(Name)
);
CREATE TABLE Car (
idCar numeric PRIMARY KEY,
Price numeric,
Color varchar(32),
Kilometer numeric,
Year numeric,
Owner varchar(30),
SellerType varchar(30),
Model numeric,
FOREIGN KEY (Model) REFERENCES Model(idModel)
);
CREATE TABLE Person (
id numeric PRIMARY KEY,
Name varchar(80),
Job varchar(80) CHECK (Job IN('CEO', 'Founder')),
Brand varchar(80),
FOREIGN KEY (Brand) REFERENCES Brand(Name)
);
''')
for row in dfBrand.itertuples():
curs.execute('''INSERT INTO Brand VALUES (%s, %s, %s);''',
(row.Name, row.CreationDate, row.Headquarter))
curs.execute('SELECT Name FROM Brand;')
for row in dfPeople.itertuples():
curs.execute('''INSERT INTO Person VALUES (%s, %s, %s, %s);''',
(row.Id, row.Name, row.Job, row.Brand))
id=1
idModel=1
for row in df.itertuples():
#tranformer les prix (inr) en euros
price = row.Price / 90
curs.execute('''INSERT INTO Car VALUES (%s, %s, %s, %s, %s, %s, %s);''',
(id, price, row.Color, row.Kilometer, row.Year, row.Owner, row.SellerType))
id = id + 1
curs.execute('''INSERT INTO Model VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);''',
(row.Model, row.FuelType, row.Transmission, row.Engine, row.MaxPower,
curs.execute('''INSERT INTO Model VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);''',
(idModel, row.Model, row.FuelType, row.Transmission, row.Engine, row.MaxPower,
row.MaxTorque, row.Drivetrain, row.Length, row.Width, row.Height, row.SeatingCapacity,
row.FuelTankCapacity))
row.FuelTankCapacity, row.Brand))
curs.execute('''INSERT INTO Car VALUES (%s, %s, %s, %s, %s, %s, %s, %s);''',
(id, price, row.Color, row.Kilometer, row.Year, row.Owner, row.SellerType, idModel))
id = id + 1
idModel = idModel + 1
#! Calcule de la moyenne des prix des véhicules
@ -135,28 +136,28 @@ try:
#! Répartition des prix :
#? A voir si on inverse les axes
#* répartition des prix des voitures dans le jeu de données.
#* Cela peut donner une idée de la plage de prix dans laquelle se situent la plupart des voitures.
datafr = pd.read_sql('''SELECT Price AS prix, COUNT(*) AS nb_voitures
FROM Car
GROUP BY Price;''', co)
datafr = datafr.plot.hist(bins=20, x="nb_voitures", y="prix", xlabel='Prix', ylabel='Nombre de voitures',
title='Répartition des prix des véhicules')
plt.show()
# * répartition des prix des voitures dans le jeu de données.
# * Cela peut donner une idée de la plage de prix dans laquelle se situent la plupart des voitures.
# datafr = pd.read_sql('''SELECT Price AS prix, COUNT(*) AS nb_voitures
# FROM Car
# GROUP BY Price;''', co)
# datafr = datafr.plot.hist(bins=20, x="nb_voitures", y="prix", xlabel='Prix', ylabel='Nombre de voitures',
# title='Répartition des prix des véhicules')
# plt.show()
#! Relation entre l'année de fabrication et le prix :
#! Relation entre l'année de sortie et le prix :
#* il y a une corrélation positive entre l'année de fabrication et le prix,
#* ce qui signifie que les véhicules plus récentes ont tendance à être plus chères
#* que les véhicules plus anciennes. À part les véhicules de collections
#* comme on peut le voir avant les années 90.
datafr = pd.read_sql('''SELECT Year AS year, AVG(Price) AS prix_moyen
FROM Car
GROUP BY Year
ORDER BY Year;''', co)
datafr['year'] = datafr['year'].astype(int)
datafr = datafr.plot.bar(x='year', y='prix_moyen', xlabel='Année', ylabel='Prix moyen',
title='Prix moyen d\'un véhicule en fonction de son année de sortie')
# datafr = pd.read_sql('''SELECT Year AS year, AVG(Price) AS prix_moyen
# FROM Car
# GROUP BY Year
# ORDER BY Year;''', co)
# datafr['year'] = datafr['year'].astype(int)
# datafr = datafr.plot.bar(x='year', y='prix_moyen', xlabel='Année', ylabel='Prix moyen',
# title='Prix moyen d\'un véhicule en fonction de son année de sortie')
plt.show()
#! Relation entre le kilométrage et le prix :
@ -164,121 +165,122 @@ try:
#* ce qui signifie que les véhicules ayant un kilométrage plus élevé ont
#* tendance à être moins chères que les véhicules ayant un kilométrage plus faible.
#* À part les véhicules de collections qui peuvent posseder un kilométrage plus élevé (> 200 000).
datafr = pd.read_sql('''SELECT Kilometer AS kilometrage, AVG(Price) AS prix_moyen
FROM Car
GROUP BY Kilometer
ORDER BY Kilometer;''', co)
datafr['kilometrage'] = pd.cut(datafr['kilometrage'], bins=[0, 10000, 50000, 100000, 200000, float('inf')],
labels=['<10K', '10K-50K', '50K-100K', '100K-200K', '>200K'], include_lowest=True)
datafr = datafr.groupby('kilometrage')['prix_moyen'].mean().reset_index()
datafr.plot.bar(x='kilometrage', y='prix_moyen', xlabel='Kilométrage', ylabel='Prix moyen',
title='Prix moyen d\'un véhicule en fonction de son kilométrage')
plt.show()
# datafr = pd.read_sql('''SELECT Kilometer AS kilometrage, AVG(Price) AS prix_moyen
# FROM Car
# GROUP BY Kilometer
# ORDER BY Kilometer;''', co)
# datafr['kilometrage'] = pd.cut(datafr['kilometrage'], bins=[0, 10000, 50000, 100000, 200000, float('inf')],
# labels=['<10K', '10K-50K', '50K-100K', '100K-200K', '>200K'], include_lowest=True)
# datafr = datafr.groupby('kilometrage')['prix_moyen'].mean().reset_index()
# datafr.plot.bar(x='kilometrage', y='prix_moyen', xlabel='Kilométrage', ylabel='Prix moyen',
# title='Prix moyen d\'un véhicule en fonction de son kilométrage')
# plt.show()
# #? Relation entre le type de carburant et le prix :
# #! Relation entre le type de carburant et le prix :
# #* les véhicules fonctionnant à l'essence sont en moyenne moins chères
# #* que les véhicules fonctionnant au diesel mais les véhicules
# #* hybrides restent les plus chère sur le marché.
# datafr = pd.read_sql('''SELECT m.FuelType AS carburant, AVG(c.Price) AS prix_moyen
# FROM Car c, Model m
# WHERE c.Model = m.Name
# GROUP BY FuelType
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='carburant', y='prix_moyen', xlabel='Carburant', ylabel='Prix moyen',
# title='Prix moyen d\'un véhicule en fonction de son carburant')
# datafr = pd.read_sql('''SELECT Model.FuelType AS carburant, COUNT(*) AS nb_voitures FROM Car JOIN Model ON Car.Model = Model.idModel GROUP BY Model.FuelType ORDER BY nb_voitures;''', co)
# datafr['nb_voitures'] = datafr['nb_voitures'].astype(float)
# datafr.plot.bar(x='carburant', y='nb_voitures', xlabel='Carburant', ylabel='Nombre de voitures', title='Nombre de voitures par carburant')
# plt.show()
#! Relation entre le type de vendeur et le prix :
# ? modifier le registration
#* les voitures vendues par des concessionnaires ont tendance
#* à être plus chères que celles vendues par des propriétaires.
datafr = pd.read_sql('''SELECT SellerType AS vendeur, AVG(Price) AS prix_moyen
FROM Car
GROUP BY SellerType
ORDER BY prix_moyen;''', co)
datafr = datafr.plot.bar(x='vendeur', y='prix_moyen', xlabel='Vendeur', ylabel='Prix moyen',
title='Prix moyen des voitures par vendeur')
plt.show()
# datafr = pd.read_sql('''SELECT SellerType AS vendeur, AVG(Price) AS prix_moyen
# FROM Car
# GROUP BY SellerType
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='vendeur', y='prix_moyen', xlabel='Vendeur', ylabel='Prix moyen',
# title='Prix moyen des voitures par vendeur')
# plt.show()
# #? Relation entre la puissance du moteur et le prix :
# #! Relation entre la puissance du moteur et le prix :
# #* il y a une corrélation positive entre la puissance du moteur et le prix,
# #* ce qui signifie que les véhicules ayant une puissance plus élevée ont tendance
# #* à être plus chères que les véhicules ayant une puissance plus faible.
# #* À part les véhicules de collections qui peuvent posseder une puissance plus élevée (> 5000).
# #? comparer le prix moyen des voitures suivant leur puissance moteur
# df = pd.read_sql('''SELECT Engine AS engine, AVG(Price) AS prix_moyen
# FROM Car, Model
# WHERE Car.Model = Model.Name
# GROUP BY Engine
# ORDER BY prix_moyen DESC;''', co)
# df['engine'] = df['engine'].astype(str).str.replace('cc', '').astype(float)
# df['engine_range'] = pd.cut(df['engine'], bins=[0, 1000, 1500, 2000, 2500, 3000, 4000, 5000, float('inf')],
# labels=['<1000', '1000-1500', '1500-2000', '2000-2500', '2500-3000', '3000-4000',
# '4000-5000', '>5000'], include_lowest=True)
# datafr = df.groupby('engine_range')['prix_moyen'].mean().reset_index()
# datafr.plot.bar(x='engine_range', y='prix_moyen', xlabel='Puissance du moteur (en cc)', ylabel='Prix moyen',
# title='Prix moyen des voitures par puissance moteur')
# df = pd.read_sql('''SELECT Engine AS puissance, AVG(Price) AS prix_moyen
# FROM Car
# INNER JOIN Model ON Car.Model = Model.idModel
# GROUP BY puissance
# ORDER BY prix_moyen DESC;''', co)
# df['puissance'] = df['puissance'].astype(str).str.replace('cc', '').astype(float)
# df['puissance_range'] = pd.cut(df['puissance'],
# bins=[0, 1000, 1500, 2000, 2500, 3000, 4000, 5000, float('inf')],
# labels=['<1000', '1000-1500', '1500-2000', '2000-2500', '2500-3000',
# '3000-4000', '4000-5000', '>5000'], include_lowest=True)
# datafr = df.groupby('puissance_range')['prix_moyen'].mean().reset_index()
# datafr.plot.bar(x='puissance_range', y='prix_moyen', xlabel='Puissance moteur (en cc)',
# ylabel='Prix moyen (en euros)', title='Prix moyen des voitures par tranche de puissance moteur')
# plt.show()
# #? Relation entre le type de transmission et le prix :
# #! Relation entre le type de transmission et le prix :
# #* les voitures avec une transmission automatique sont en moyenne
# #* plus chères que celles avec une transmission manuelle.
# # ! remplacer comme df au dessus
# datafr = pd.read_sql('''SELECT m.Transmission AS transmission, AVG(c.Price) AS prix_moyen
# FROM Car c, Model m
# WHERE c.Model = m.Name
# WHERE c.Model = m.idModel
# GROUP BY transmission
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='transmission', y='prix_moyen', xlabel='Transmission',
# ylabel='Prix moyen', title='Prix moyen des voitures par transmission')
# datafr.plot.bar(x='transmission', y='prix_moyen', xlabel='Transmission',
# ylabel='Prix moyen', title='Prix moyen des voitures par transmission')
# plt.show()
#! relation entre le nombre de propriétaires précédents et le prix :
#* il y a une corrélation négative entre le nombre de propriétaires précédents et le prix,
#* ce qui signifie que les voitures ayant été possédées par un plus grand nombre de propriétaires
#* ont tendance à être moins chères.
datafr = pd.read_sql('''SELECT Owner AS proprietaires, AVG(Price) AS prix_moyen
FROM Car
GROUP BY Owner
ORDER BY prix_moyen;''', co)
datafr = datafr.plot.bar(x='proprietaires', y='prix_moyen', xlabel='Nombre de propriétaires',
ylabel='Prix moyen', title='Prix moyen des voitures par nombre de propriétaires')
plt.show()
# datafr = pd.read_sql('''SELECT Owner AS proprietaires, AVG(Price) AS prix_moyen
# FROM Car
# GROUP BY Owner
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='proprietaires', y='prix_moyen', xlabel='Nombre de propriétaires',
# ylabel='Prix moyen', title='Prix moyen des voitures par nombre de propriétaires')
# plt.show()
# #? relation entre le nombre de sièges et le prix :
# #! relation entre le nombre de sièges et le prix :
# #* il y a une corrélation positive entre le nombre de sièges et le prix,
# #* ce qui signifie que les voitures ayant un plus grand nombre de sièges ont tendance à être plus chères.
# datafr = pd.read_sql('''SELECT m.SeatingCapacity AS sieges, AVG(c.Price) AS prix_moyen
# FROM Car c, Model m
# FROM Car c
# INNER JOIN Model m ON c.Model = m.idModel
# GROUP BY m.SeatingCapacity
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='sieges', y='prix_moyen', xlabel='Nombre de sièges',
# ORDER BY prix_moyen''', co)
# datafr = datafr.plot.bar(x='sieges', y='prix_moyen', xlabel='Nombre de sièges',
# ylabel='Prix moyen', title='Prix moyen des voitures par nombre de sièges')
# plt.show()
# #? relation entre la longueur du véhicule et son prix :
# #! relation entre la longueur du véhicule et son prix :
# #* il y a une corrélation positive entre la longueur du véhicule et le prix,
# #* ce qui signifie que les voitures ayant une plus grande longueur ont tendance à être plus chères.
# datafr = pd.read_sql('''SELECT Length AS longueur, AVG(Price) AS prix_moyen
# FROM Car, Model
# WHERE Car.Model = Model.Name
# GROUP BY Length
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='longueur', y='prix_moyen', xlabel='Longueur du véhicule (en cm)',
# ylabel='Prix moyen', title='Prix moyen des voitures par longueur')
# df = pd.read_sql('''SELECT Length AS longueur, AVG(Price) AS prix_moyen
# FROM Car
# INNER JOIN Model ON Car.Model = Model.idModel
# GROUP BY longueur
# ORDER BY prix_moyen DESC;''', co)
# df['longueur_range'] = pd.cut(df['longueur'],
# bins=[0, 3500, 4000, 4500, 5000, 5500, float('inf')],
# labels=['<3500', '3500-4000', '4000-4500', '4500-5000', '5000-5500', '>5500'], include_lowest=True)
# datafr = df.groupby('longueur_range')['prix_moyen'].mean().reset_index()
# datafr.plot.bar(x='longueur_range', y='prix_moyen', xlabel='Longueur du véhicule (en cm)',
# ylabel='Prix moyen (en euros)', title='Prix moyen des voitures par tranche de longueur')
# plt.show()
# #? relation entre la puissance du moteur et le prix :
# #* il y a une corrélation positive entre la puissance du moteur et le prix,
# #* ce qui signifie que les voitures ayant une plus grande puissance ont tendance à être plus chères.
# datafr = pd.read_sql('''SELECT Engine AS puissance, AVG(Price) AS prix_moyen
# FROM Car
# GROUP BY Engine
# ORDER BY prix_moyen;''', co)
# datafr = datafr.plot.bar(x='puissance', y='prix_moyen', xlabel='Puissance du moteur (en cc)',
# ylabel='Prix moyen', title='Prix moyen des voitures par puissance')
# plt.show()
# #! relation entre la couleur et le prix :
# #* on peut donc remarquer que la couleur peut influer sur le prix d'une voiture.
@ -292,28 +294,110 @@ try:
# plt.show()
#? trouver les marques dont le CEO est le Founder
curs.execute('''SELECT DISTINCT Brand.Name
FROM Brand
JOIN Person ON Brand.Name = Person.Brand
WHERE Person.Job = 'Founder' AND Person.Name =
(SELECT Person.Name FROM Person WHERE Person.Job = 'CEO' AND Person.Brand = Brand.Name);''')
print(curs.fetchall())
#! trouver les marques dont le CEO est le Founder
# affiche rien car aucun ceo est le founder
# curs.execute('''SELECT DISTINCT Brand.Name
# FROM Brand
# JOIN Person founder ON Brand.Name = founder.Brand AND founder.Job = 'Founder'
# JOIN Person ceo ON Brand.Name = ceo.Brand AND ceo.Job = 'CEO' AND ceo.Name = founder.Name;''')
# print(curs.fetchall())
#? moyenne de prix des voitures d'une marque selon l'année de création de la marque
df = pd.read_sql('''SELECT Brand.Name AS marque,ROUND(AVG(Car.Price)) AS prix_moyen,
FLOOR((Brand.CreationDate - 1900) / 10) * 10 AS annee_de_creation FROM Car JOIN Model ON Car.Model = Model.Name JOIN Brand ON Model.Brand = Brand.Name
GROUP BY marque, annee_de_creation ORDER BY annee_de_creation ASC, prix_moyen DESC;''', co)
# #? moyenne de prix des voitures d'une marque selon l'année de création de la marque
# df = pd.read_sql('''SELECT Brand.Name AS marque, ROUND(AVG(Car.Price)) AS prix_moyen,
# FLOOR((Brand.CreationDate - 1900) / 10) * 10 AS annee_de_creation FROM Car
# JOIN Model ON Car.Model = Model.idModel
# JOIN Brand ON Model.Brand = Brand.Name
# GROUP BY marque, annee_de_creation
# ORDER BY annee_de_creation ASC, prix_moyen DESC;''', co)
# Converti les années de création en tranches de 10 ans
df['annee_de_creation'] = pd.cut(df['annee_de_creation'], bins=range(1900, 2021, 10), labels=[f"{x}-{x+9}" for x in range(1900, 2020, 10)])
ax = df.plot.bar(x='annee_de_creation', y='prix_moyen', xlabel='Année de création de la marque', ylabel='Prix moyen', title='Prix moyen des voitures par année de création de la marque')
ax.legend(['Prix moyen'])
plt.show()
# # Convertit les années de création en tranches de 10 ans
# df['annee_de_creation'] = pd.cut(df['annee_de_creation'], bins=range(1900, 2021, 10), labels=[f"{x}-{x+9}" for x in range(1900, 2020, 10)])
# # Pivot la table pour avoir les années en colonne
# df_pivot = df.pivot(index='marque', columns='annee_de_creation', values='prix_moyen')
# ax = df_pivot.plot(kind='bar', xlabel='Marque', ylabel='Prix moyen',
# title='Prix moyen des voitures par année de création de la marque')
# ax.legend(title='Année de création', bbox_to_anchor=(1.01, 1), loc='upper left')
# plt.show()
# df = pd.read_sql('''DO $$
# DECLARE
# ceo varchar;
# famille varchar;
# PrixMoyFamille numeric;
# PrixMoyPasFamille numeric;
# cur CURSOR FOR SELECT p.Name, p.job FROM Person p, Brand b WHERE b.Name = p.Brand GROUP BY p.Brand;
# BEGIN
# FOR i IN cur LOOP
#
# END LOOP;
# END;
# $$ ;''')
# '''IF nbMed>3 THEN
# dateF=dateF+5;
# ELSEIF nbMed>0 THEN
# dateF=dateF+3;
# ELSE
# dateF=dateF+1;
# END IF;'''
# datafr = pd.read_sql('''SELECT AVG(Price) FROM Car GROUP BY Model;''', co)
# datafr = datafr.plot.bar(xlabel='Modele', ylabel='Prix moyen',
# title='Prix moyen d\'un véhicule en fonction de sa marque')
# plt.show()
# #? Fonctionne mais ne return pas round
curs.execute('''DROP FUNCTION IF EXISTS prix_moyen;
CREATE FUNCTION prix_moyen(marque varchar)
RETURNS numeric AS $$
DECLARE
moyenne numeric;
BEGIN
SELECT AVG(Price) INTO moyenne
FROM Car, Model
WHERE Car.model = Model.idModel
AND Model.Brand = marque;
RETURN ROUND(moyenne);
END ;
$$ LANGUAGE plpgsql ;
SELECT prix_moyen('Toyota')''',co)
print(curs.fetchall())
# # df = pd.read_sql('''DO $$
# DECLARE
# ceo varchar;
# famille varchar;
# PrixMoyFamille numeric = 0;
# PrixMoyPasFamille numeric = 0;
# cursFounder CURSOR FOR SELECT p.Name, p.Brand FROM Person p WHERE p.Job = 'Founder';
# cursCEO CURSOR FOR SELECT p.Name, p.Brand FROM Person WHERE p.job = 'CEO';
# BEGIN
# FOR founder IN cursFounder LOOP
# famille = SPLIT_PART(founder.Name,' ',1)
# FOR directeur IN cursCEO LOOP
# ceo = SPLIT_PART(ceo.Name,' ',1)
# IF directeur.Brand = founder.name THEN
# IF ceo.Name = SPLIT_PART(founder.name,' ',1)
# PrixMoyFamille = PrixMoyFamille + prix_moyen(ceo.Brand);
# ELSE
# PrixMoyPasFamille = PrixMoyPasFamille + prix_moyen(ceo.Brand)
# END IF;
# END IF;
# END LOOP;
# END LOOP;
# RETURN PrixMoyFamille, PrixMoyPasFamille
# END;
# $$ ;''')
co.commit ()
curs.close ()
except (Exception , psy.DatabaseError ) as error :

File diff suppressed because it is too large Load Diff

@ -29,7 +29,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 1,
"id": "c0f0ed8f",
"metadata": {},
"outputs": [],
@ -51,7 +51,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 2,
"id": "c068815f",
"metadata": {},
"outputs": [
@ -205,9 +205,6 @@
"#Permet d'afficher le dataframe\n",
"display(df[30:33])\n",
"\n",
"# Supprimer les doublons du DataFrame\n",
"df.drop_duplicates(subset=['Model'], inplace=True)\n",
"\n",
"# Permet de suppr les NAN\n",
"df[\"Engine\"] = df[\"Engine\"].dropna()\n",
"# Permet d'enlever les deux caractères cc\n",
@ -217,7 +214,7 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 3,
"id": "dc0a7b57",
"metadata": {},
"outputs": [],

Loading…
Cancel
Save