Informaatiota ilmakehästä

Informaatiota ilmakehästä#

Demo ICOS-aineistoilla. Tarkastellaan tässä yhteydessä hiilidioksidiarvoja mittausasemien ilmapiirissä.

1. Työkalut ja aineistot#

# Kirjastot
# AJA TÄMÄ SOLU ENSIMMÄISENÄ!

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Kaikki tässä oleva haettu Obspackista 1972-2024
# https://meta.icos-cp.eu/objects/xfK_Mjw7m3jN1LIzq-wtsCYq 

# Aineistot, paikat ja mittauskorkeudet

# Puijo, Itä-Suomi, 47 m
PuiCO2 = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/refs/heads/main/materiaali/data/Pui470.csv")
# Hyytiälä, Keski-Suomi, 67.2 m
HyyCO2 = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/refs/heads/main/materiaali/data/Hyy672.csv")
# Zeppelin, Huippuvuoret, 15 m
ZepCO2 = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/refs/heads/main/materiaali/data/Zep150.csv")
# Izaña, Teneriffa, 29 m
IzoCO2 = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/refs/heads/main/materiaali/data/Izo290.csv")

2. Katsaus aineistoihin#

Alla olevalla koodilla nähdään mitä muuttujan sisällä on.

TEE ITSE: vaihda muuttujan nimeä tarkistaaksesi jonkun toisenkin aseman tiedot. Voit myös vaihtaa .head()-komennon sisässä olevaa numeroa.

PuiCO2.head(6)
datetimeISO year month day hour minute second value
0 2020-04-22T18:30:00.022465Z 2020 4 22 18 30 0 420.614
1 2020-04-22T19:29:59.916483Z 2020 4 22 19 30 0 420.918
2 2020-04-22T20:30:00.126721Z 2020 4 22 20 30 0 420.610
3 2020-04-22T21:30:00.020738Z 2020 4 22 21 30 0 421.096
4 2020-04-22T22:29:59.914755Z 2020 4 22 22 30 0 421.282
5 2020-04-22T23:30:00.124993Z 2020 4 22 23 30 0 421.546

3. Analyysi#

Aikasarake “datetimeISO” on hitusen kummallinen. Luodaan aineistoihin uudet päivämääräsarakkeet.

TEE ITSE: lisää sarake muihinkin muuttujiin.

# Päivämäärän lisääminen
PuiCO2['PVM'] = pd.to_datetime(PuiCO2['datetimeISO'], format = "mixed")
# Tarkistusvilkaisu
PuiCO2
datetimeISO year month day hour minute second value PVM
0 2020-04-22T18:30:00.022465Z 2020 4 22 18 30 0 420.614 2020-04-22 18:30:00.022465+00:00
1 2020-04-22T19:29:59.916483Z 2020 4 22 19 30 0 420.918 2020-04-22 19:29:59.916483+00:00
2 2020-04-22T20:30:00.126721Z 2020 4 22 20 30 0 420.610 2020-04-22 20:30:00.126721+00:00
3 2020-04-22T21:30:00.020738Z 2020 4 22 21 30 0 421.096 2020-04-22 21:30:00.020738+00:00
4 2020-04-22T22:29:59.914755Z 2020 4 22 22 30 0 421.282 2020-04-22 22:29:59.914755+00:00
... ... ... ... ... ... ... ... ... ...
36365 2024-07-28T19:30:00.156670Z 2024 7 28 19 30 0 414.640 2024-07-28 19:30:00.156670+00:00
36366 2024-07-28T20:30:00.050687Z 2024 7 28 20 30 0 412.889 2024-07-28 20:30:00.050687+00:00
36367 2024-07-28T21:29:59.944704Z 2024 7 28 21 30 0 416.178 2024-07-28 21:29:59.944704+00:00
36368 2024-07-28T22:30:00.154942Z 2024 7 28 22 30 0 417.794 2024-07-28 22:30:00.154942+00:00
36369 2024-07-28T23:30:00.048959Z 2024 7 28 23 30 0 431.505 2024-07-28 23:30:00.048959+00:00

36370 rows × 9 columns

Nyt voidaan luoda testiksi simppeli kuvaaja aineistosta.

TEE ITSE: lisää samaan kuvaajaan muutkin mitta-asemat!

# Asetetaan kuvaajan koko
plt.figure(figsize = (20, 10))

# Valitaan piirrettävät suureet
plt.plot(PuiCO2["PVM"], PuiCO2["value"], label = "Puijo", color = "green", alpha = 0.5)

# Lisätään muotoilutermejä oman maun mukaan
plt.ylabel("Hiilidioksidikonsentraatio ilmassa (µmol mol-1) \n", fontsize = 15)
plt.xlabel("\n Aika (vuosi)", fontsize = 15)
plt.title("CO2-fraktio ilmakehässä ICOS-asemilla \n", fontsize = 20)
plt.legend(loc = "upper left", fontsize = 20)

# Piirretään lopputulos
plt.show()
../_images/7ad9990267bf378fc3eb4b25c94cf26fccc9c63310d5c8301bb757850ebfcc01.png

Pelkkä mittausten esittely harvoin riittää. Mennään siis syvemmälle aineistoihin vaikkapa pidemmän ajan keskiarvojen avulla.

TEE ITSE: vertaile eri asemien kuukausikeskiarvojen käyttäytymistä.

# Kokeillaan kuukausikeskiarvojen laskemista.

KA = PuiCO2.groupby(["month"]).mean(numeric_only = True)

print("Valitun aineiston kuukausittaiset keskiarvot (ppm) ovat: ")
print(KA["value"])

k = ["tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"]

plt.figure(figsize = (20, 10))
plt.plot(k, KA["value"], c = "y")
plt.scatter(k, KA["value"], c = "red", label = "CO2")

plt.ylabel("Konsentraatio ilmassa (µmol mol-1) \n", fontsize = 15)
plt.xlabel("\n Aika (kuukausi)", fontsize = 15)
plt.title("Hiilidioksidifraktio ilmakehässä valitulla mitta-asemalla, kuukausikeskiarvo \n", fontsize = 20)
plt.legend(loc = "center right", fontsize = 15)

plt.show()
Valitun aineiston kuukausittaiset keskiarvot (ppm) ovat: 
month
1     429.876166
2     430.434377
3     429.105119
4     426.800243
5     423.032549
6     415.790524
7     411.649983
8     409.556995
9     415.121189
10    422.267049
11    426.972222
12    431.625042
Name: value, dtype: float64
../_images/ba3df840516f7a49ca153b46f2d3b3ba7795ddf2d886768bb4866c40b8132ca4.png