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()

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
