import pandas as pd import psycopg2 as psy import matplotlib.pyplot as plt data = pd.read_csv(r'co2_emission.csv') df = pd.DataFrame(data) df2 = df.drop_duplicates() co = None try : co = psy.connect(host='berlin', database = 'dbmalanone', user = 'malanone', password = 'azertyuiop') curs=co.cursor() #Delete all the lines which has no data curs.execute('''DELETE FROM CO_DEUX WHERE emission = 0''') curs.execute('''DELETE FROM CO_DEUX WHERE code LIKE 'NaN' ''') #Chart that picture the evolution of the emission in France df3 = pd.read_sql('''SELECT * FROM CO_DEUX WHERE code LIKE 'FRA';''',con=co) #Chart that picture the evolution of the emission in France print(df3) fig = df3.plot(x='year', y='emission', legend=False, style='-') fig.set_title("Quantité d'émission (tonnes) en fonction des années") fig.set_xlabel("annee") fig.set_ylabel("emissions (en tonnes)") plt.show() df4 = pd.read_sql('''SELECT max(emission)emission, year, code FROM CO_DEUX WHERE code NOT LIKE 'OWID_WRL' GROUP BY year, code,emission HAVING emission = max(emission) ORDER BY year;''',con=co) print(df4) fig = df4.plot(x='code', y='year', legend=False, kind ='bar' ,style='-') fig.set_title("Plus gros pollueur de chaque annee") fig.set_xlabel("code du pays") fig.set_ylabel("annee") fig.set_xticks(df4.index) fig.set_xticklabels(df4['code'], rotation='45') plt.show() df5 = pd.read_sql('''SELECT emission,code FROM CO_DEUX WHERE code NOT LIKE 'OWID_WRL' AND year = 2017 GROUP BY emission,code HAVING emission >= (SELECT avg(emission) FROM CO_DEUX WHERE year = 2017);''',con=co) print(df5) fig = df5.plot(y='code', autopct='%1.1f%%', kind='pie', legend=False) fig.set_title("Pays dont l'émission de CO2 en 2017 dépasse la moyenne") fig.set_ylabel("emissions (en tonnes)") fig.set_ylim(0) plt.show() df6 = pd.read_sql('''SELECT avg(emission)moy, code FROM CO_DEUX GROUP BY code;''',con=co) print(df6) fig = df6.plot(x='code', y='moy', legend=False, style='-') fig.set_title("Quantité d'émission (tonnes) en fonction des années") fig.set_xlabel("code pays") fig.set_ylabel("emissions moyennes (en tonnes)") fig.set_xticks(df6.index) fig.set_xticklabels(df6['code'], rotation='45') # df6 = pd.read_sql('''SELECT * FROM CO_DEUX HAVING ;''',con=co) # fig = df6.plot(x='year', y='emission', legend=False, style='-') # fig.set_title("Quantité d'émission (tonnes) en fonction des années") # fig.set_xlabel("annee") # fig.set_ylabel("emissions (en tonnes)") plt.show() co.commit() except (Exception, psy.DatabaseError) as error : print(error) finally : if co is not None: co.close()