Kedves Diákjaim! Az alábbi meteorológiai állomás adatainak elemzésére szolgál. Gyakorolja a szűrést, a rendezést és a haladó adatelemzést.
Feladat: Havi hőmérséklet-ingadozás és csapadékanomália elemzésA feladat leírása:
A fájl sorai pontosvesszővel elválasztva tartalmazzák az adatokat a következő formátumban: Év;Hónap;Nap;Hőmérséklet (°C);Csapadék (mm).Írj Python programot, amely az alábbi statisztikákat és elemzéseket végzi el!A program elvárt működése
Tárold el a fájl tartalmát egy megfelelő adatszerkezetben (pl. szótárakat tartalmazó listában).Adatminőség ellenőrzése: Határozd meg, hány olyan sor van, ahol a megadott értékek hiányosak (pl. nincs adat, vagy nem megfelelő formátumú).Havi csapadék maximum:
Keresd meg és írd ki, hogy melyik hónapban esett a legtöbb csapadék összesen.
Hőmérséklet-ingadozás:
Számítsd ki minden hónapra a napi minimum és maximum hőmérséklet különbségét
majd rendezd a hónapokat csökkenő sorrendbe a legnagyobb ingadozás alapján.
-------
def beolvas_adatok():
K_sorok = [
"2024;1;1;3,5;0,0",
"2024;1;2;5,0;1,2",
"2024;1;3;7,1;0,5",
"2024;2;1;6,0;12,4",
"2024;2;2;8,2;8,1",
"2024;2;3;10,0;15,0",
"2024;3;1;12,5;4,0",
"2024;3;2;15,0;2,5",
"2024;3;3;18,3;0,0",
"hibas;sor;itt",
"2024;4;1;20,1;7,7",
"2024;4;2;22,0;9,3"
]
adatok = []
hibas_sorok = 0
for sor in K_sorok:
mezok = sor.split(';')
if len(mezok) < 5:
hibas_sorok += 1
continue
try:
ev = int(mezok[0])
honap = int(mezok[1])
nap = int(mezok[2])
homerseklet = float(mezok[3].replace(',', '.'))
csapadek = float(mezok[4].replace(',', '.'))
adatok.append({
'ev': ev,
'honap': honap,
'nap': nap,
'homerseklet': homerseklet,
'csapadek': csapadek
})
except ValueError:
hibas_sorok += 1
return adatok, hibas_sorok
# 1-2. feladat: beolvasás és hibaszűrés
meresek, hibak_szama = beolvas_adatok()
print(f'Hibás vagy hiányos sorok száma: {hibak_szama}')
# 3. feladat: havi csapadék összesítése
havi_csapadek = {}
for adat in meresek:
honap = adat['honap']
havi_csapadek[honap] = havi_csapadek.get(honap, 0) + adat['csapadek']
legcsapadekosabb_honap = max(havi_csapadek, key=havi_csapadek.get)
print(f'A legcsapadékosabb hónap a(z) {legcsapadekosabb_honap}. hónap, összesen {havi_csapadek[legcsapadekosabb_honap]:.1f} mm csapadékkal.')
# 4. feladat: havi hőmérséklet-ingadozás
havi_homersekletek = {}
for adat in meresek:
honap = adat['honap']
if honap not in havi_homersekletek:
havi_homersekletek[honap] = []
havi_homersekletek[honap].append(adat['homerseklet'])
havi_ingadozasok = []
for honap, homersekletek in havi_homersekletek.items():
minimum = min(homersekletek)
maximum = max(homersekletek)
ingadozas = maximum - minimum
havi_ingadozasok.append({'honap': honap, 'ingadozas': ingadozas})
havi_ingadozasok_rendezett = sorted(havi_ingadozasok, key=lambda x: x['ingadozas'], reverse=True)
print('\nHavi hőmérséklet-ingadozások csökkenő sorrendben:')
for adat in havi_ingadozasok_rendezett:
print(f"{adat['honap']}. hónap: {adat['ingadozas']:.1f} °C ingadozás")
---------------
A legcsapadékosabb hónap a(z) 2. hónap, összesen 35.5 mm csapadékkal.
Havi hőmérséklet-ingadozások csökkenő sorrendben:
3. hónap: 5.8 °C ingadozás
2. hónap: 4.0 °C ingadozás
1. hónap: 3.6 °C ingadozás
4. hónap: 1.9 °C ingadozás
--------------
Futtatás; https://onecompiler.com/python#draft-tdxd
Nincsenek megjegyzések:
Megjegyzés küldése