You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
4.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import pandas as pd
import psycopg2 as psy
import getpass
import matplotlib.pyplot as plt
data = pd. read_csv (r'vgsales.csv')
df = pd.DataFrame(data)
df = df.drop_duplicates()
co = None
try:
co = psy. connect(host='londres',
database ='dbanperederi',
user='anperederi',
password = getpass.getpass("Mot de passe:"))
#Q1 Écrire la requête SQL permettant de calculer le total des ventes de jeux dans le monde par genre.
datafr = pd.read_sql('''SELECT round(sum(global_sales),2) as total_vente, genre
FROM VGSales
GROUP BY genre
ORDER BY total_vente DESC;''', con=co)
fig = datafr .plot.pie(y='total_vente', labels=datafr['genre'], autopct='%1.1f%%', figsize=(5, 5), legend=False) # Generation du graphique
plt.show () # Affichage
#Q2 Écrire la requête SQL permettant de calculer e pourcentage des ventes dans le monde par genre.
datafr = pd.read_sql('''SELECT (sum(global_sales)/(SELECT sum(global_sales) FROM VGSales))*100 as pourcentage
FROM VGSales
GROUP BY genre
ORDER BY pourcentage DESC;''', con=co)
fig = datafr.plot(kind='pie', legend=False ,title='Ventes par plateforme', figsize=(5, 5), fontsize=12, subplots=True)
plt.show()
# fig = datafr .plot.pie(y='pourcentage', labels=datafr['genre'], autopct='%1.1f%%', figsize=(5, 5), legend=False) # Generation du graphique
# plt.show () # Affichage
#Q3 Afficher les résultats sous forme de diagramme camembert.
datafr = pd.read_sql('''SELECT (sum(global_sales)/(SELECT sum(global_sales) FROM VGSales))*100 as pourcentage
FROM VGSales
GROUP BY genre
ORDER BY pourcentage DESC;''', con=co)
fig = datafr.plot(kind='pie', legend=False ,title='Ventes par plateforme', figsize=(5, 5), fontsize=12, subplots=True)
plt.show()
# fig = datafr .plot.pie(y='pourcentage', labels=datafr['genre'], autopct='%1.1f%%', figsize=(5, 5), legend=False) # Generation du graphique
# plt.show () # Affichage
#Q4 Afficher le total des ventes par genre sous forme de diagrammes camembert de façon à voir sur la même figure :
# un camembert représentant les ventes avant lannée 1990 (exclue),
# un camembert représentant les ventes entre 1990 et 1999,
# un camembert représentant les ventes entre 2000 et 2009,
# un camembert représentant les ventes à partir de 2010.
datafr1 = pd.read_sql('''SELECT (sum(global_sales)/(SELECT sum(global_sales) FROM VGSales WHERE year < 1990))*100 as pourcentage
FROM VGSales
WHERE year < 1990
GROUP BY genre
ORDER BY pourcentage DESC;''', con=co)
datafr2 = pd.read_sql('''SELECT (sum(global_sales)/(SELECT sum(global_sales) FROM VGSales WHERE year >= 1990 AND year < 2000))*100 as pourcentage
FROM VGSales
WHERE year >= 1990 AND year <= 1999
GROUP BY genre
ORDER BY pourcentage DESC;''', con=co)
datafr3 = pd.read_sql('''SELECT (sum(global_sales)/(SELECT sum(global_sales) FROM VGSales WHERE year >= 2000 AND year < 2010))*100 as pourcentage
FROM VGSales
WHERE year >= 2000 AND year <= 2009
GROUP BY genre
ORDER BY pourcentage DESC;''', con=co)
datafr4 = pd.read_sql('''SELECT (sum(global_sales)/(SELECT sum(global_sales) FROM VGSales WHERE year >= 2010))*100 as pourcentage
FROM VGSales
WHERE year >= 2010
GROUP BY genre
ORDER BY pourcentage DESC;''', con=co)
_, axes = plt.subplots(nrows=2, ncols=2)
fig = datafr1.plot(y=0, kind='pie', legend=False ,title='Ventes par plateforme', ax=axes[0,0])
fig = datafr2.plot(y=0, kind='pie', legend=False ,title='Ventes par plateforme', ax=axes[0,1])
fig = datafr3.plot(y=0, kind='pie', legend=False ,title='Ventes par plateforme', ax=axes[1,0])
fig = datafr4.plot(y=0, kind='pie', legend=False ,title='Ventes par plateforme', ax=axes[1,1])
plt.show()
# fig = datafr .plot.pie(y='pourcentage', labels=datafr['genre'], autopct='%1.1f%%', figsize=(5, 5), legend=False) # Generation du graphique
# plt.show () # Affichage
except (Exception , psy.DatabaseError ) as error :
print ( error )
finally :
if co is not None:
co.close ()