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.
100 lines
4.8 KiB
100 lines
4.8 KiB
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()
|
|
|
|
|
|
df6 = 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)
|
|
|
|
|
|
co.commit()
|
|
|
|
|
|
|
|
|
|
|
|
except (Exception, psy.DatabaseError) as error :
|
|
print(error)
|
|
|
|
finally :
|
|
if co is not None:
|
|
co.close()
|
|
|