ESIMERKKI: Lumensyvyys#

Työn rakenne#

Yksinkertainen projekti noudattaa yleensä simppeliä perusrakennetta:

  1. Määritetään kiinnostuksen kohde (tutkimuskysymys)

  2. Etsitään aineistoa (datankeruu)

  3. Tarkastellaan löydöksiä (analyysi)

  4. Arvioidaan, kritisoidaan (tulokset ja johtopäätökset)

  5. Selitetään tarpeen mukaan käytetyt aineistot (lähteet)

1. Tutkimuskysymys#

Sanotaan, että meitä kiinnostaa pohtia Espoon talvien lumisuutta tällä vuosituhannella. Onko kevät 2022 tosiaan lumisin vuosiin vai tuntuuko se vain siltä?

2. Aineisto#

Ilmatieteen laitokselta löytyy reaaliaikaisia mittauksia tarjoava portaali, josta voidaan kaivaa haluttujen paikkakuntien mitta-asemilta mitattuja arvoja.

https://www.ilmatieteenlaitos.fi/havaintojen-lataus

Tässä esimerkissä on käytetty Espoon asemia vuosilta 2000-2022. Yksikin mittaus on mittaus, mutta paremman yleiskuvan saamiseksi voi olla hyödyllistä tarkastella useamman lähiaseman aineistoja. Ilmatieteen laitoksen kartasta osuu ensimmäisenä silmään Tapiolan, Nupurin ja Nuuksion asemia, joten katsotaan mitä niistä selviää.

Tiedot on noudettu palvelusta 6.3.2022

# Tuodaan tarvittavat työkalukirjastot

import pandas as pd
import matplotlib.pyplot as plt
# Huomaa lukukomennon sisään lisätty 'parse'-parametri, jolla luodaan tiedostoon yhdistelmä päivämääräsarakkeista,
# jolloin saadaan juoksevasti kasvava luku tulevan visualisoinnin aika-akseliksi.

Tapiola = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/EspooTapiola.csv",
                    parse_dates = {"Aika":["Vuosi", "Kk", "Pv", "Klo"]}, keep_date_col = True)
Nupuri = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/EspooNupuri.csv",
                    parse_dates = {"Aika":["Vuosi", "Kk", "Pv", "Klo"]}, keep_date_col = True)
Nuuksio = pd.read_csv("https://raw.githubusercontent.com/opendata-education/Tyopajat/main/materiaali/data/EspooNuuksio.csv",
                    parse_dates = {"Aika":["Vuosi", "Kk", "Pv", "Klo"]}, keep_date_col = True)
Tapiola
Aika Vuosi Kk Pv Klo Aikavyöhyke Lumensyvyys (cm)
0 2014-01-01 2014 1 1 00:00 UTC -1
1 2014-01-02 2014 1 2 00:00 UTC -1
2 2014-01-03 2014 1 3 00:00 UTC -1
3 2014-01-04 2014 1 4 00:00 UTC -1
4 2014-01-07 2014 1 7 00:00 UTC -1
... ... ... ... ... ... ... ...
2915 2022-02-24 2022 2 24 00:00 UTC 54
2916 2022-02-25 2022 2 25 00:00 UTC 47
2917 2022-02-26 2022 2 26 00:00 UTC 47
2918 2022-02-27 2022 2 27 00:00 UTC 47
2919 2022-02-28 2022 2 28 00:00 UTC 46

2920 rows × 7 columns

Nupuri
Aika Vuosi Kk Pv Klo Aikavyöhyke Lumensyvyys (cm)
0 2000-01-02 2000 1 2 00:00 UTC 21
1 2000-01-04 2000 1 4 00:00 UTC 24
2 2000-01-05 2000 1 5 00:00 UTC 20
3 2000-01-06 2000 1 6 00:00 UTC 19
4 2000-01-07 2000 1 7 00:00 UTC 16
... ... ... ... ... ... ... ...
3896 2010-12-28 2010 12 28 00:00 UTC 44
3897 2010-12-29 2010 12 29 00:00 UTC 44
3898 2010-12-30 2010 12 30 00:00 UTC 41
3899 2010-12-31 2010 12 31 00:00 UTC 48
3900 2011-01-01 2011 1 1 00:00 UTC 49

3901 rows × 7 columns

Nuuksio
Aika Vuosi Kk Pv Klo Aikavyöhyke Lumensyvyys (cm)
0 2014-06-14 2014 6 14 00:00 UTC -1.0
1 2014-06-15 2014 6 15 00:00 UTC -1.0
2 2014-06-16 2014 6 16 00:00 UTC -1.0
3 2014-06-17 2014 6 17 00:00 UTC -1.0
4 2014-06-18 2014 6 18 00:00 UTC -1.0
... ... ... ... ... ... ... ...
2798 2022-02-24 2022 2 24 00:00 UTC 87.0
2799 2022-02-25 2022 2 25 00:00 UTC 81.0
2800 2022-02-26 2022 2 26 00:00 UTC 83.0
2801 2022-02-27 2022 2 27 00:00 UTC 82.0
2802 2022-02-28 2022 2 28 00:00 UTC 80.0

2803 rows × 7 columns

3. Analyysi#

Kuvaajat ovat erinomainen työkalu nopeisiin arviointeihin. Otetaan ensimmäiseksi yleiskuva ajan suhteen:

plt.figure(figsize = (30, 5))
plt.scatter(Tapiola["Aika"], Tapiola["Lumensyvyys (cm)"])
plt.title("Lumensyvyys Tapiolan mitta-asemalla (cm) \n", fontsize = 30)
plt.show()

plt.figure(figsize = (30, 5))
plt.scatter(Nupuri["Aika"], Nupuri["Lumensyvyys (cm)"])
plt.title("Lumensyvyys Nupurin mitta-asemalla (cm) \n", fontsize = 30)
plt.show()

plt.figure(figsize = (30, 5))
plt.scatter(Nuuksio["Aika"], Nuuksio["Lumensyvyys (cm)"])
plt.title("Lumensyvyys Nuuksion mitta-asemalla (cm) \n", fontsize = 30)
plt.show()
../_images/0bba1d3e98f85691a67debd8786498f29242bde1b7b306722d85ca26bf2dbf34.png ../_images/56e018560d0a3f53663215ea91f5cc19d8f9bd3d81d915ce00b03a36e3fb8a4f.png ../_images/8f9c0c160b9ce29f0a7ea9203ad3523065240ff7dfc0ce3343e6b44f91632db4.png

Tapiolan ja Nuuksion tiedot näyttävät olevan samalta ajalta, mikä helpottaa rinnakkaista vertailua:

plt.figure(figsize = (30, 5))
plt.scatter(Nupuri["Aika"], Nupuri["Lumensyvyys (cm)"], c = "red", label = "Nupuri")
plt.scatter(Nuuksio["Aika"], Nuuksio["Lumensyvyys (cm)"], c = "blue", label = "Nuuksio")
plt.scatter(Tapiola["Aika"], Tapiola["Lumensyvyys (cm)"], c = "orange", label = "Tapiola")
plt.title("Lumensyvyys Espoon mitta-asemilla (cm) \n", fontsize = 30)
plt.legend(fontsize = 20)
plt.show()
../_images/54399865c3b58e5baa4c8b265fadc1c6921fd49a42d9a89d144d8a30a3295aae.png

Aineistossa näkyy muutamia poikkeuksellisia kausia, kuten poikkeuksellisen lumettomia vuosia (2008, 2020) tai korkeita kinoksia (2010, 2022). Tarkastellaan niitä vähän lähemmin.

Tapiola20 = Tapiola.query("Vuosi >= '2019'")
Nuuksio20 = Nuuksio.query("Vuosi >= '2019'")

plt.figure(figsize = (30, 5))

#plt.subplot(1,2,1)
plt.scatter(Tapiola20["Aika"], Tapiola20["Lumensyvyys (cm)"], c = "orange", label = "Tapiola")
plt.xticks(rotation = 45)

#plt.subplot(1,2,2)
plt.scatter(Nuuksio20["Aika"], Nuuksio20["Lumensyvyys (cm)"], c = "b", alpha = 0.5, label = "Nuuksio")

plt.suptitle("Lumensyvyys viime vuosina Espoon mitta-asemilla (cm) \n", fontsize = 30)
plt.xticks(rotation = 45)
plt.legend(fontsize = 20)
plt.show()
../_images/bb01d13370c3e94f980f8e822190a52ed557a4971e564262a4f0b51afea2e280.png
Tapiola21 = Tapiola.query("Vuosi >= '2021'")
Nuuksio21 = Nuuksio.query("Vuosi >= '2021'")

plt.figure(figsize = (15, 5))

#plt.subplot(1,2,1)
plt.scatter(Tapiola21["Aika"], Tapiola21["Lumensyvyys (cm)"], c = "orange", label = "Tapiola")
plt.xticks(rotation = 45)

#plt.subplot(1,2,2)
plt.scatter(Nuuksio21["Aika"], Nuuksio21["Lumensyvyys (cm)"], c = "b", alpha = 0.5, label = "Nuuksio")

plt.suptitle("Lumensyvyys 21-22 Espoon mitta-asemilla (cm) \n", fontsize = 30)
plt.xticks(rotation = 45)
plt.legend(fontsize = 20)
plt.show()
../_images/3a5871d96572a281b66a2cb525b715dcb551192039d34dd15618f1607ebc93c5.png

4. Arviointi#

Ilmatieteen laitoksen sivuilta saa jonkinlaista kuvaa mittausten tarkkuudesta ja asemien paikkatiedoista.

Lumensyvyyden hetkelliseksi tarkkuudeksi ilmoitetaan ± 2 cm. Vuorokausiarvoja, joita tässäkin käytettiin, ei keskiarvoisteta läpi päivän vaan ne ilmoitetaan kello 8 (kesällä 9) havainnoista.

Asemista kerrotaan seuraavaa.

Nuuksio: Asema sijaitsee laajalla metsäisellä, harvaan asutulla ja hyvin rikkonaisella järviylängöllä jonka korkeustaso on keskimäärin 80-110 m mpy, mutta syvät murroslaaksot 30-60 m mpy. Järviylänkö on sade- ja lumimaksimialuetta. Laajemmat alavat, tyypilliset Etelä-Suomen jokimaat (20-50 m mpy) sijaitsevat lähimmillään kaakossa ja lounaassa n. 6 km päässä asemasta. Sääasema sijaitsee pienellä metsäaukiolla korkean mäen reunamalla.

Tapiola: Asema sijaitsee rannikolla, pääkaupunkiseudun (asukasluku n. 1,1 milj.) esikaupunkialueella. Keskimääräiseen rannikkoviivaan on etäisyyttä n. 2 km sektorissa 120-240 astetta, lisäksi Laajalahden-Seurasaaren lahti sijaitsee n. 2,5 km päässä idässä ja koillisessa. Maa-aluetta hallitsevat kallio/moreeniselänteet (20-50 m mpy) ja näiden väliset savitasangot (0-20 m mpy). Sääasema sijaitsee Gräsanojan loivassa laaksossa, laajan ulkoilualueen melko avoimessa puistossa, jossa muutamien lehtipuiden lisäksi 30 metriä korkea rakennus lounaassa n. 25 m päässä asemasta.

Nupurin aseman toiminta lopetettiin vuonna 2011.


Ylläolevan perusteella ei liene ihmeellistä, että piirretyssä aineistossa havaitaan Nuuksion ylittävän reippaasti Tapiolan arvot. Syitä löytyy niin maantieteen (paikallinen lumimaksimi, pohjoisempana) kuin ihmistoiminnankin vuoksi (Tapiola sijaitsee tiiviimmin asutetulla alueella). Trendit noudattavat kuitenkin toisiaan, kuten nähdään erittäin lumisesta vuodesta 2022 tai käytännössä lumettomasta vuodesta 2020.

Lumiaineistot ovat näillä asemilla kuitenkin harmillisen lyhyitä. Kaivelemalla latauspalvelusta vanhempia asemia tai tekemällä johtopäätöksiä yleisten sademäärien kautta pystyisi syventämään väitteitään alueen ilmaston aikakehityksestä. Jatkopohdintana voi miettiä, miten lumettomien ja hyvin lumisten vuosien heiluminen tilastoissa liittyy yleisesti ilmastonmuutoksen tuomiin säähäiriöihin.

5. Lähteet#

https://www.ilmatieteenlaitos.fi/havaintojen-lataus

https://www.ilmatieteenlaitos.fi/havaintoasemat

https://www.ilmatieteenlaitos.fi/nuuksion-saahavaintoasema