import pandas as pd import psycopg2 as psy import matplotlib.pyplot as plt import seaborn as sns 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' ''') df = pd.read_sql('''SELECT sum(emission)emissions,entity FROM CO_DEUX WHERE code LIKE 'DEU' AND year BETWEEN 1930 AND 1945 OR code LIKE 'FRA' AND year BETWEEN 1930 AND 1945 OR code LIKE 'USA' AND year BETWEEN 1930 AND 1945 OR code LIKE 'JPN' AND year BETWEEN 1930 AND 1945 OR code LIKE 'GBR' AND year BETWEEN 1930 AND 1945 OR code LIKE 'CHN' AND year BETWEEN 1930 AND 1945 GROUP BY entity;''',con=co) fig = df.plot(y='emissions', autopct='%1.1f%%', labels=df['entity'], kind='pie', legend=False) fig.set_title("Emissions (en tonnes) des grandes puissances lors de la Seconde Guerre Mondiale (hors URSS)") fig.set_ylabel("emissions (en tonnes)") fig.set_ylim(0) plt.show() df1 = pd.read_sql('''SELECT sum(emission)emissions,entity FROM CO_DEUX WHERE code LIKE 'DEU' AND year BETWEEN 1960 AND 1991 OR code LIKE 'FRA' AND year BETWEEN 1960 AND 1991 OR code LIKE 'USA' AND year BETWEEN 1960 AND 1991 OR code LIKE 'RUS' AND year BETWEEN 1960 AND 1991 OR code LIKE 'JPN' AND year BETWEEN 1960 AND 1991 OR code LIKE 'GBR' AND year BETWEEN 1960 AND 1991 OR code LIKE 'CHN' AND year BETWEEN 1960 AND 1991 GROUP BY entity;''',con=co) fig = df1.plot(y='emissions', autopct='%1.1f%%', labels=df1['entity'], kind='pie', legend=False) fig.set_title("Emissions (en tonnes) des grandes puissances lors de la Guerre Froide (à partir de 1960)") fig.set_ylabel("emissions (en tonnes)") fig.set_ylim(0) plt.show() df1 = pd.read_sql('''SELECT sum(emission)emissions,entity,to_char(year,'9999')years FROM CO_DEUX WHERE code LIKE 'USA' AND year BETWEEN 1960 AND 1991 OR code LIKE 'RUS' AND year BETWEEN 1960 AND 1991 OR code LIKE 'CHN' AND year BETWEEN 1960 AND 1991 GROUP BY entity,year;''',con=co) sns.barplot(data=df1 , x='years', y='emissions', hue='entity') fig.set_title("Emissions (en tonnes) des grandes puissances lors de la Guerre Froide (à partir de 1960)") fig.set_xlabel("code du pays") fig.set_ylabel("emissions (en tonnes)") fig.set_xticks(df1.index) plt.show() df2 = pd.read_sql('''SELECT entity, to_char(year,'9999')years,emission FROM CO_DEUX WHERE emission = ANY(SELECT max(emission)emission FROM CO_DEUX WHERE year BETWEEN 2000 AND 2017 AND code NOT LIKE 'OWID_WRL' GROUP BY year) ORDER BY year;''',con=co) fig = df2.plot(x='entity', y='emission', legend=False, style='-') sns.barplot(data=df2 , x='years', y='emission', hue='entity') fig.set_title("Plus gros pollueur de chaque annee, de 2000 à 2017") fig.set_xlabel("code du pays") fig.set_ylabel("emissions (en tonnes)") fig.set_xticks(df2.index) fig.set_xticklabels(df2['years'], rotation='45') plt.show() #Chart that picture the evolution of the emission in France df3 = pd.read_sql('''SELECT * FROM CO_DEUX WHERE code LIKE 'FRA';''',con=co) fig = df3.plot(x='year', y='emission', legend=False, style='-') fig.set_title("Quantité d'émission (tonnes) de la France en fonction des années") fig.set_xlabel("annee") fig.set_ylabel("emissions (en tonnes)") plt.show() df4 = pd.read_sql('''SELECT entity, emission FROM CO_DEUX WHERE code NOT LIKE 'OWID_WRL' AND year = 2017 AND emission > (SELECT avg(emission) FROM CO_DEUX WHERE code NOT LIKE 'OWID_WRL' AND year = 2017);''',con=co) fig = df4.plot(y='emission', autopct='%1.1f%%', labels=df4['entity'], kind='pie', legend=False) fig.set_title("Pays dont l'émission de CO2 en 2017 dépasse la moyenne en fonction de leur poids dans le grapĥique") fig.set_ylabel("emissions (en tonnes)") fig.set_ylim(0) plt.show() df5 = pd.read_sql('''SELECT *,to_char(year,'9999')years FROM CO_DEUX WHERE code LIKE 'USA' AND year BETWEEN 1980 AND 2017 OR code LIKE 'CHN' AND year BETWEEN 1980 AND 2017;''',con=co) #Chart that picture the evolution of the emission in China fig.set_title("Emissions américaines et chinoises (en tonnes) en fonction des années") fig.set_xlabel("annee") fig.set_ylabel("emissions (en tonnes)") sns.catplot(data=df5, kind="bar", x="years", y="emission", hue="entity") plt.show() co.commit() except (Exception, psy.DatabaseError) as error : print(error) finally : if co is not None: co.close()