parent
2b9759c524
commit
25ec73f531
@ -0,0 +1,49 @@
|
|||||||
|
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:"))
|
||||||
|
|
||||||
|
datafr = pd.read_sql('''SELECT ROUND(AVG(global_sales),2) as vente_moyennes, year
|
||||||
|
FROM VGSales
|
||||||
|
WHERE genre = 'Adventure' and year != 'NaN'
|
||||||
|
GROUP BY year
|
||||||
|
ORDER by year;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='year', y='vente_moyennes', kind='line', title='Evolution des ventes globales des jeux daventure', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
datafr = pd.read_sql('''SELECT SUM(global_sales) as total_vente, year
|
||||||
|
FROM VGSales
|
||||||
|
WHERE genre = 'Adventure' AND year != 'NaN'
|
||||||
|
GROUP BY year
|
||||||
|
ORDER by year;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='year', y='total_vente', kind='line', title='Evolution des ventes globales des jeux', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
datafr = pd.read_sql('''SELECT SUM(global_sales) as total_vente, year
|
||||||
|
FROM VGSales
|
||||||
|
WHERE year != 'NaN'
|
||||||
|
GROUP BY year
|
||||||
|
ORDER by year;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='year', y='total_vente', kind='line', title='Evolution des ventes globales des jeux', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
except (Exception , psy.DatabaseError ) as error :
|
||||||
|
print ( error )
|
||||||
|
finally :
|
||||||
|
if co is not None:
|
||||||
|
co.close ()
|
@ -0,0 +1,82 @@
|
|||||||
|
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:"))
|
||||||
|
|
||||||
|
#Q2 Afficher sous forme de courbe les résultats de la requête précédente.
|
||||||
|
datafr = pd.read_sql('''SELECT platform, SUM(eu_sales) as total_vente
|
||||||
|
FROM VGSales
|
||||||
|
GROUP BY platform;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='platform', y='total_vente', kind='line', title='Ventes par plateforme en europe', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
fig.set_xlabel('Platforme')
|
||||||
|
fig.set_ylabel('Ventes (en millions)')
|
||||||
|
fig.set_xticks(datafr.index)
|
||||||
|
fig.set_xticklabels(datafr['platform'], rotation=45)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
#Q4
|
||||||
|
datafr = pd.read_sql('''SELECT platform, SUM(eu_sales) as total_vente
|
||||||
|
FROM VGSales
|
||||||
|
GROUP BY platform;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='platform', y='total_vente', kind='bar', title='Ventes par plateforme en europe', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
fig.set_xlabel('Platforme')
|
||||||
|
fig.set_ylabel('Ventes (en millions)')
|
||||||
|
fig.set_xticks(datafr.index)
|
||||||
|
fig.set_xticklabels(datafr['platform'], rotation=45)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
#Q5
|
||||||
|
datafr = pd.read_sql('''SELECT platform, SUM(na_sales) as total_vente_na, SUM(eu_sales) as total_vente_eu, SUM(jp_sales) as total_vente_jp, SUM(other_sales) as total_vente_autre
|
||||||
|
FROM VGSales
|
||||||
|
GROUP BY platform;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='platform', y=['total_vente_na', 'total_vente_eu', 'total_vente_jp', 'total_vente_autre'], kind='line', title='Ventes par plateforme', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
fig.set_xlabel('Platforme')
|
||||||
|
fig.set_ylabel('Ventes (en millions)')
|
||||||
|
fig.set_xticks(datafr.index)
|
||||||
|
fig.set_xticklabels(datafr['platform'], rotation=45)
|
||||||
|
plt.show()
|
||||||
|
#Q6
|
||||||
|
datafr = pd.read_sql('''SELECT platform, SUM(na_sales) as total_vente_na, SUM(eu_sales) as total_vente_eu, SUM(jp_sales) as total_vente_jp, SUM(other_sales) as total_vente_autre
|
||||||
|
FROM VGSales
|
||||||
|
GROUP BY platform;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='platform', y=['total_vente_na', 'total_vente_eu', 'total_vente_jp', 'total_vente_autre'], kind='line', title='Ventes par plateforme', figsize=(10, 5), legend=True, fontsize=12, style=['-', '--', '-.', ':'])
|
||||||
|
fig.set_xlabel('Platforme')
|
||||||
|
fig.set_ylabel('Ventes (en millions)')
|
||||||
|
fig.set_xticks(datafr.index)
|
||||||
|
fig.set_xticklabels(datafr['platform'], rotation=45)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
#Q7
|
||||||
|
datafr = pd.read_sql('''SELECT platform, SUM(na_sales) as total_vente_na, SUM(eu_sales) as total_vente_eu, SUM(jp_sales) as total_vente_jp, SUM(other_sales) as total_vente_autre
|
||||||
|
FROM VGSales
|
||||||
|
GROUP BY platform;''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.plot(x='platform', y=['total_vente_na', 'total_vente_eu', 'total_vente_jp', 'total_vente_autre'], kind='bar', title='Ventes par plateforme', figsize=(10, 5), legend=True, fontsize=12, style=['b', 'g', 'r', 'c'])
|
||||||
|
fig.set_xlabel('Platforme')
|
||||||
|
fig.set_ylabel('Ventes (en millions)')
|
||||||
|
fig.set_xticks(datafr.index)
|
||||||
|
fig.set_xticklabels(datafr['platform'], rotation=45)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
except (Exception , psy.DatabaseError ) as error :
|
||||||
|
print ( error )
|
||||||
|
finally :
|
||||||
|
if co is not None:
|
||||||
|
co.close ()
|
@ -0,0 +1,50 @@
|
|||||||
|
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:"))
|
||||||
|
|
||||||
|
#Q2 Afficher sous forme de courbe les résultats de la requête précédente.
|
||||||
|
datafr = pd.read_sql('''SELECT na_sales as total_vente_na, eu_sales as total_vente_eu, jp_sales as total_vente_jp, other_sales as total_vente_autre
|
||||||
|
FROM VGSales
|
||||||
|
WHERE name = 'Mario Kart 64';''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.transpose().plot(kind='bar', title='Ventes par plateforme', figsize=(10, 5), legend=True, fontsize=12)
|
||||||
|
fig.set_xticklabels(['NA', 'EU', 'JP', 'OTHER'], rotation=45)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
#Q3 Même question sous forme de diagramme “camembert”. Les noms des zones devront être à côté
|
||||||
|
#de la tranche concernée.
|
||||||
|
datafr = pd.read_sql('''SELECT na_sales as total_vente_na, eu_sales as total_vente_eu, jp_sales as total_vente_jp, other_sales as total_vente_autre
|
||||||
|
FROM VGSales
|
||||||
|
WHERE name = 'Mario Kart 64';''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.transpose().plot(kind='pie', legend=False ,title='Ventes par plateforme', figsize=(10, 5), fontsize=12, subplots=True)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
#Q4 Même question mais le pourcentage de ventes dans chaque zone doit apparaître à côté de la
|
||||||
|
#tranche concernée et le nom de la zone doit apparaître dans la légende
|
||||||
|
datafr = pd.read_sql('''SELECT na_sales as total_vente_na, eu_sales as total_vente_eu, jp_sales as total_vente_jp, other_sales as total_vente_autre
|
||||||
|
FROM VGSales
|
||||||
|
WHERE name = 'Mario Kart 64';''', con=co)
|
||||||
|
|
||||||
|
fig = datafr.transpose().plot(kind='pie',title='Ventes par plateforme', figsize=(10, 5), fontsize=12, subplots=True, autopct='%1.1f%%', legend=False)
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
except (Exception , psy.DatabaseError ) as error :
|
||||||
|
print ( error )
|
||||||
|
finally :
|
||||||
|
if co is not None:
|
||||||
|
co.close ()
|
@ -0,0 +1,56 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import psycopg2 as psy
|
||||||
|
import getpass
|
||||||
|
|
||||||
|
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:"))
|
||||||
|
|
||||||
|
curs = co.cursor()
|
||||||
|
|
||||||
|
curs. execute ('''DROP TABLE IF EXISTS VGSales ;''')
|
||||||
|
|
||||||
|
curs. execute ('''CREATE TABLE VGSales (
|
||||||
|
name varchar (160) ,
|
||||||
|
platform varchar(160) ,
|
||||||
|
year numeric (4),
|
||||||
|
genre varchar (160) ,
|
||||||
|
publisher varchar (160) ,
|
||||||
|
na_sales numeric (5,2) DEFAULT 0,
|
||||||
|
eu_sales numeric (5,2) DEFAULT 0,
|
||||||
|
jp_sales numeric (5,2) DEFAULT 0,
|
||||||
|
other_sales numeric (5,2) DEFAULT 0,
|
||||||
|
global_sales numeric (5,2) DEFAULT 0 ,
|
||||||
|
PRIMARY KEY (name, platform, year)
|
||||||
|
);''')
|
||||||
|
|
||||||
|
for row in df.itertuples ():
|
||||||
|
curs. execute ('''INSERT INTO VGSales VALUES (%s ,%s ,%s ,%s, %s ,%s ,%s ,%s, %s ,%s);''',
|
||||||
|
(row.Name , row.Platform , row.Year , row.Genre , row.Publisher , row.NA_Sales , row.EU_Sales , row.JP_Sales , row.Other_Sales , row.Global_Sales ))
|
||||||
|
|
||||||
|
#curs.execute('''UPDATE''')
|
||||||
|
|
||||||
|
co.commit ()
|
||||||
|
curs.close ()
|
||||||
|
except (Exception , psy.DatabaseError ) as error :
|
||||||
|
print ( error )
|
||||||
|
finally :
|
||||||
|
if co is not None:
|
||||||
|
co.close ()
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Evolution du script:
|
||||||
|
|
||||||
|
Ajout de la fonction drop_duplicates() pour supprimer les doublons dans le fichier csv.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
@ -0,0 +1,38 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import psycopg2 as psy
|
||||||
|
import getpass
|
||||||
|
|
||||||
|
co = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
co = psy.connect (host='londres',
|
||||||
|
database ='dbanperederi',
|
||||||
|
user='anperederi',
|
||||||
|
password = getpass.getpass ("Mot de passe:"))
|
||||||
|
df = pd.read_sql('''SELECT *
|
||||||
|
FROM VGSales ;''', con=co)
|
||||||
|
print(df)
|
||||||
|
except (Exception , psy. DatabaseError ) as error :
|
||||||
|
print ( error )
|
||||||
|
finally :
|
||||||
|
if co is not None:
|
||||||
|
co. close ()
|
||||||
|
|
||||||
|
#======================RESULTAT======================#
|
||||||
|
"""
|
||||||
|
name platform year genre ... eu_sales jp_sales other_sales global_sales
|
||||||
|
0 Wii Sports Wii 2006.0 Sports ... 29.02 3.77 8.46 82.74
|
||||||
|
1 Super Mario Bros. NES 1985.0 Platform ... 3.58 6.81 0.77 40.24
|
||||||
|
2 Wii Sports Resort Wii 2009.0 Sports ... 11.01 3.28 2.96 33.00
|
||||||
|
3 Tetris GB 1989.0 Puzzle ... 2.26 4.22 0.58 30.26
|
||||||
|
4 New Super Mario Bros. DS 2006.0 Platform ... 9.23 6.50 2.90 30.01
|
||||||
|
.. ... ... ... ... ... ... ... ... ...
|
||||||
|
16591 K-1 Grand Prix PS 1999.0 Fighting ... 0.01 0.00 0.00 0.02
|
||||||
|
16592 Carmageddon: Max Damage XOne 2016.0 Action ... 0.01 0.00 0.00 0.02
|
||||||
|
16593 The Ultimate Battle of the Sexes Wii 2010.0 Misc ... 0.01 0.00 0.00 0.02
|
||||||
|
16594 Help Wanted: 50 Wacky Jobs (jp sales) Wii 2008.0 Simulation ... 0.01 0.01 0.00 0.02
|
||||||
|
16595 SCORE International Baja 1000: The Official Game PS2 2008.0 Racing ... 0.00 0.00 0.00 0.00
|
||||||
|
|
||||||
|
[16596 rows x 10 columns]
|
||||||
|
|
||||||
|
"""
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Loading…
Reference in new issue