ESIMERKKI 3: Maapallon ilmakehä#

Tutustutaan ihan ensimmäisenä siihen, miten Maan ilmakehä on syntynyt. Alla on esitetty karkea aikajana niistä asioista, joilla on ollut merkittävä vaikutus siihen miten meille on muodostunut näinkin harvinaislaatuinen ilmakehä. Voit avata kuvan uuteen välilehteen, jotta pääset suurentamaan sen isommaksi.

Ilmakehän kehityksen osalta on tärkeää huomata, että meidän nykyinen biosfäärimme ylläpitää nykyistä ilmakehää, eikä päinvastoin. Happirikkaan ilmakehän muodostuminen on aiheuttanut merkittävän kriisin silloiselle elämälle, joka oli tottunut hiilidioksidipohjaiseen ilmakehään. Vastaavasti ylimääräisen hapin kerääntyminen ilmakehään, ja sitä kautta otsonikerroksen muodostuminen, on mahdollistanut uudenlaisen – hapen käyttöön pohjautuvan – elämän syntymisen ja elämän siirtymisen maalle. Jos jostain syystä nykyinen biosfääri muuttuisikin niin, että uutta happea ei enää muodostettaisi, ilmakehän happipitoisuus alkaisi laskea hiljakseen, kunnes se olisi poistunut ilmakehästä kokonaan.

Meidän nykyinen ilmakehä onkin seurausta meidän kannalta onnekkaiden tapahtumien ketjusta. Kasvihuoneilmiötä on kiittäminen ilmakehän elinkaaren alkutaipaleilla, sillä ilman sitä, Maapallolla ei todennäköisesti olisi ollut nestemäistä vettä. On arveltu, että hiilidioksidipitoisuus on voinut olla jopa 9000 ppm, mikä on hirvittävän korkea luku nykyiseen – siitä voidaankin siis kuvitella, kuinka merkittävä kasvihuoneilmiö on silloin ollut. Silloin Aurinko on ollut huomattavasti himmeämpi, todennäköisesti noin 70% nykyisestä, joten lämmittävälle vaikutukselle on todellakin ollut tarvetta. Tiesitkö, että ilman nykyistä ilmakehää Maapallon keskilämpötila olisi noin -18°C?

ilmakehan_synty


Vertaillaan myös Maapallon nykyistä ilmakehää planeettanaapureiden ilmakehiin.

Planeetta

Ilmanpaine (bar)

CO2 (%)

O2 (%)

N2 (%)

H2O (%)

Pintalämpötila (C)

Venus

92

96.5

hyvin vähän

3.5

< 0.00003

464

Maa

1

0.033

20

78

< 3

14

Mars

0.006

95.3

hyvin vähän

2.7

< 0.0001

-63

Hiilidioksidipitoisuus viimeisen 800 000 vuoden aikana#

Tarkastellaan täältä löytyvän datan avulla, miten Maan ilmakehän hiilidioksidipitoisuus on muuttunut viimeisen 800 000 vuoden aikana.

# Otetaan tarvittavat kirjastot käyttöön ajamalla tämä solu

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Ladataan datasetti ja kurkataan sisälle.

ilmasto_data = pd.read_csv('https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/ilmakehan_pitoisuudet.csv')
ilmasto_data.head()
Entity Year CO2 concentrations CH4 concentrations N2O concentrations February September Mass U.S. glaciers CSIRO IAP MRIJMA NOAA Snow cover Sea surface temp Sea surface temp (lower-bound) Sea surface temp (upper-bound) IAP.1 NOAA.1 MRIJMA.1 Arctic sea ice
0 Antarctica 1979 NaN NaN NaN 1.212361 7.027059 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 Antarctica 1980 NaN NaN NaN 1.088808 7.266443 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 Antarctica 1981 NaN NaN NaN 1.108113 7.181500 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 Antarctica 1982 NaN NaN NaN 1.208500 7.084975 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 Antarctica 1983 NaN NaN NaN 1.185334 7.177639 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
# Otetaan ne tiedot talteen, jotka koskettaa koko maapalloa.
ilmasto = ilmasto_data[(ilmasto_data['Entity']=='World')]

# Ja tallennetaan omiin muuttujiin x- ja y-akselille tulevat tiedot.
vuosi = ilmasto['Year']
co2 = ilmasto['CO2 concentrations'] # yksikkö on ppm = parts per million eli miljoonasosa
# Sitten piirretään kuvaaja.

plt.figure(figsize = (20, 10)) # Voit muokata kuvaajan kokoa.

plt.plot(vuosi, co2)

plt.title('Otsikko') # Määritä kuvaajalle otsikko
plt.xlabel('x-akselin nimi') # ja molempien akseleiden nimet ja yksiköt
plt.ylabel('y-akselin nimi')
plt.xticks(rotation=90)

#plt.xlim(1700, 1800) # Tämän komennon avulla voit skaalata x-akselia, esimerkkinä näytetään 1700 - 1800 -luvut.

plt.show()
../_images/40a11280f32006409022461f42876e7b046fc1d87cbaa0f96da1c86538bbb8d5.png

Pohdintaa

Komennon plt.xlim(min,max) avulla voit tarkastella erilaisia ajankohtia ylemmästä kuvaajasta. Käyttäkää kyseistä komentoa ja käykää vieruskaverin kanssa läpi seuraavat kysymykset:

  1. Millä tavalla CO2-pitoisuus on muuttunut viimeisen 2000 vuoden aikana?

  2. Löydätkö kuvaajasta xlim-komennon vuosia vaihtamalla sen kohdan, milloin säännöllisten mittausten ottaminen on aloitettu?

  3. Jos mietitään ajanjaksoa ennen 1800-lukua, mikä on ollut korkein CO2-pitoisuus viimeisen 800 000 vuoden aikana? Milloin tämä korkein lukema on ollut?

Hiilipitoisuuden vertailu muihin arvoihin#

Tarkastellaan ihan mielenkiinnon vuoksi, että miten muutamat muut mitattavat suureet ovat muuttuneet lähivuosien aikana hiilidioksidipitoisuuteen verrattuna. Ilmakehällä on sormensa pelissä monessa eri sopassa, mutta onko ihan kaikissa? Siinäpä meillä on pohdittavaa. Mitäs mieltä sinä olet näistä trendeistä?


Tässä alla on muutama solu, joissa valmistellaan muutama datasetti valmiiksi vertailua varten. Voit ajaa solut ilman sen suurempaa tarkastelua.

# Valmistellaan fossiilisien polttoaineiden kulutukseen liittyvä datasetti.

# Tämän solun ajamisesta tulee punainen "virheilmoitus", mutta se ei menoa haittaa. Eteenpäin vain.

fossiiliset_polttoaineet_data = pd.read_csv('https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/fossil-fuel-consumption-by-fuel-type.csv')

fossiiliset_polttoaineet = fossiiliset_polttoaineet_data[(fossiiliset_polttoaineet_data['Entity']=='World')]
fossiiliset_polttoaineet = fossiiliset_polttoaineet.reset_index(drop = True)
fossiiliset_polttoaineet.head()

yht = np.zeros(len(fossiiliset_polttoaineet))
fossiiliset_polttoaineet["Yht"] = yht

for i in range(len(fossiiliset_polttoaineet)):
    fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
/tmp/ipykernel_2143/2983891996.py:15: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  fossiiliset_polttoaineet["Yht"][i] = (fossiiliset_polttoaineet['Gas Consumption - TWh'][i] + fossiiliset_polttoaineet['Coal Consumption - TWh'][i] + fossiiliset_polttoaineet['Oil Consumption - TWh'][i])
# Valmistellaan raportoituihin katastrofeihin liittyvä datasetti.

katastrofit_data = pd.read_csv('https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/number-of-natural-disaster-events.csv')
katastrofit = katastrofit_data[(katastrofit_data['Entity']=='All natural disasters')]
# Valmistellaan eri muuttujiin halutut tiedot dataseteistä valmiiksi.

metaani = ilmasto['CH4 concentrations']
typpi_oksidi = ilmasto['N2O concentrations']
fossiiliset_kulutus = fossiiliset_polttoaineet['Yht']
fossiiliset_vuosi = fossiiliset_polttoaineet['Year']
katastrofit_maara = katastrofit['Number of disasters (EMDAT (2020))']
katastrofit_vuosi = katastrofit['Year']
# Tyhjä koodisolu, jos lopuksi haluat lisätä omia kuvaajia tarkasteltavaksi.

Ja tähän loppuu datasettien valmistelu.


Nyt piirretään kuva, johon voidaan plotata samaan aikaan kaksi eri kuvaajaa. Ax1-komennolla ohjaillaan ensimmäistä kuvaajaa ja ax2-komennoilla toista kuvaajaa. Tarkoituksena on vertailla erilaisia käyriä aiemman hiilidioksidipitoisuus-käyrän kanssa. Alla on listattu valmiiksi neljä eri vaihtoehtoa toiselle kuvaajalle, joita voit vaihdella vapaasti sen mukaan, mikä rivi on näkyvillä ja mitkä kommentoitu piiloon.

Vertailtavat kuvaajat ovat:

  1. Ilmakehän metaanipitoisuus, yksikkö on ppb = parts per billion eli miljardisosa

  2. Ilmakehän typpioksidipitoisuus, yksikkö on ppb

  3. Globaali fossiilisten polttoaineiden kulutus, yksikkö on TWh

  4. Globaali tilasto raportoiduista luonnonkatastrofeista

fig, ax1 = plt.subplots(figsize = (20,10))

#########
# Valmistellaan kuvaaja

ax1.set_xlabel('X1-axis') 
ax1.set_ylabel('Y1-axis', color = 'red', fontsize = 15)
ax1.tick_params(axis ='y', labelcolor = 'red')

ax2 = ax1.twinx() 
ax2.set_ylabel('Y2-axis', color = 'blue', fontsize = 15) 
ax2.tick_params(axis ='y', labelcolor = 'blue') 

#########
# Kuvaajavaihtoehdot

ax1.plot(vuosi, co2, label = 'co2', color = 'red')
#ax2.plot(vuosi, metaani, label = 'metaani', color = 'blue') # metaanipitoisuuden yksikkö on ppb = parts per billion eli miljardisosa
#ax2.plot(vuosi, typpi_oksidi, label = 'typpioksidi', color = 'black') # typpi-oksidipitoisuuden yksikkö on ppb
#ax2.plot(fossiiliset_vuosi, fossiiliset_kulutus, label = 'fossiiliset', color = 'orange') # fossiilisten polttoaineiden kulutuksen yksikkö on TWh
ax2.plot(katastrofit_vuosi, katastrofit_maara, label = 'katastrofit', color = 'purple') # raportoidut katastrofit

#########
# Asetukset, kuten x-akselin skaalaus ja otsikointi.

plt.xlim(1900,2022)

plt.title('Otsikko', fontsize = 20)
plt.figlegend(loc = "upper right", fontsize = 15)

plt.show()
../_images/89d6dc32993c0683787281d18687718b729f0412146943e7e33767913c90c951.png

Pohdintaa

  1. Miten metaani- ja typpioksidipitoisuus ovat muuttuneet lähivuosien aikana? Milloin näitä suureita on alettu mittaamaan tarkemmin? Löydätkö jotakin poikkeamia tai erilaisuuksia niistä verrattuna hiilidioksidikuvaajaan?

  2. Miten fossiilisten polttoaineiden kulutus on muuttunut? Onko sillä yhtenevyyttä hiilidioksidipitoisuuksien kanssa?

  3. Pohdi katastrofien lukumäärään liittyvän kuvaajan luotettavuutta? Miksi kuvaajan mukaan näyttäisi siltä, että ennen ei ole tapahtunut katastrofeja juuri lainkaan nykymäärään verrattuna?


Jos aikaa riittää, voit lisätä myös 1-3 muuta kuvaajaa tarkasteluun kirjoittamalla niille sopivat koodit. Voit kopioida tästä linkin datasettiin ja kirjoittaa koodin ylempänä olevaan tyhjään koodisoluun. Komennot kopioituvat aiemmista koodisoluista, kunhan vain kirjoittaa uudet muuttujat.

  1. Facebookin käyttäjämäärät (https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/users-by-social-media-platform.csv)

  2. Ihmisten elinajanodote (https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/life-expectancy.csv)

  3. Globaalit hiilidioksidipäästöt, lukuarvot annettu tonneissa (https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/annual-co2-emissions-per-country.csv)