Skip to content

Commit

Permalink
handel nordic(æøå), handel missing values, data cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
torave committed Mar 30, 2025
1 parent 0fbde5c commit 40d09e6
Showing 1 changed file with 58 additions and 4 deletions.
62 changes: 58 additions & 4 deletions notebooks/notebook_one_day_data.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### Velg en by i Norge og få data\n",
"### Velg et sted i Norge og få data\n",
"\n",
"Skriv inn en by du ønsker data fra, foreløpig er det begrenset til Norge\n",
"Skriv inn et sted du ønsker data fra, foreløpig er det begrenset til Norge\n",
"\n",
"Programmet vil deretter hente data å lagre det i en json fil"
]
Expand All @@ -99,6 +99,12 @@
"# User choose a city they want the weather data from\n",
"city_name = input(\"Enter city name: \")\n",
"\n",
"for letter in city_name:\n",
" if letter in 'æøå':\n",
" city_name = city_name.replace('æ', 'ae')\n",
" city_name = city_name.replace('ø', 'o')\n",
" city_name = city_name.replace('å', 'aa')\n",
"\n",
"# Start_date is the first timestamp, end_date is the last\n",
"start_date, end_date = timestamps[0], timestamps[-1]\n",
"\n",
Expand Down Expand Up @@ -358,7 +364,11 @@
"### Endre manglende verdier\n",
"I de fleste tilfeller virker dataene å være tilnærmet \"perfekte\", men de inkluderer bare snø og regn dersom det er snø eller regn. Derfor vil vi fa NaN verdier i de målingene det ikke har regnet/snødd. \n",
"\n",
"Under sjekker vi først om regn eller snø er i målingen, og hvis den er, bytter vi ut NaN med 0."
"Under sjekker vi først om regn eller snø er i målingen, og hvis de er, bytter vi ut NaN med 0. \n",
"\n",
"Så sjekker vi om alle verdiene i en kolonne er 'NaN', isåfall så fjerner vi hele kolonnen. Grunne til at dette ikke inkluderer snø og regn, er fordi vi senere plotter disse verdiene, og da får vi ikke feil om verdien er 0, men vil få om hele kolonnen mangler.\n",
"\n",
"Deretter sjekker vi andre verdier, og bytter enten 'NaN' med 0, eller med verdien før. Verdiene vi setter til 0 gjelder da snø, regn og vind, resten blir satt til verdien før."
]
},
{
Expand All @@ -379,7 +389,49 @@
"except KeyError:\n",
" print(\"['snow.1h'], not in df\")\n",
"\n",
"# Display the df, now without NaN (atleast for rain and snow)\n",
"# Drops all the columns, if it has 'NaN' value.\n",
"df = df.dropna(axis='columns', how='all')\n",
"\n",
"# If wind_gust is stored, fill the NaN with 0\n",
"try: \n",
" df['wind.gust'] = df['wind.gust'].fillna(0)\n",
"except KeyError:\n",
" print(\"['wind.gust'], not in df\")\n",
"\n",
"# If wind_deg is stored, fill the NaN with 0\n",
"try: \n",
" df['wind.deg'] = df['wind.deg'].fillna(0)\n",
"except KeyError:\n",
" print(\"['wind.deg'], not in df\")\n",
"\n",
"# If wind_speed is stored, fill the NaN with 0\n",
"try: \n",
" df['wind.speed'] = df['wind.speed'].fillna(0)\n",
"except KeyError:\n",
" print(\"['wind.speed'], not in df\")\n",
"\n",
"# If temperature is missing, take the same as the one before\n",
"df['main.temp'] = df['main.temp'].fillna('obj.ffill()')\n",
"\n",
"# Forward fill missing values in what the temperature feels like\n",
"df['main.feels_like'] = df['main.feels_like'].fillna('obj.ffill()')\n",
"\n",
"# Forward fill missing values in the pressure\n",
"df['main.pressure'] = df['main.pressure'].fillna('obj.ffill()')\n",
"\n",
"# Forward fill missing values in the humidity\n",
"df['main.humidity'] = df['main.humidity'].fillna('obj.ffill()')\n",
"\n",
"# Forward fill missing values in the lowest temperature \n",
"df['main.temp_min'] = df['main.temp_min'].fillna('obj.ffill()')\n",
"\n",
"# Forward fill missing values in the highest temperature \n",
"df['main.temp_max'] = df['main.temp_max'].fillna('obj.ffill()')\n",
"\n",
"# Forward fill missing values of clouds\n",
"df['clouds.all'] = df['clouds.all'].fillna('obj.ffill()')\n",
"\n",
"# Display the df, now without NaN\n",
"display(df)"
]
},
Expand Down Expand Up @@ -440,6 +492,7 @@
"snow = df['snow.1h']\n",
"wind_gust = df['wind.gust']\n",
"wind_speed = df['wind.speed']\n",
"temp_mean = temp.mean().round(2)\n",
"\n",
"# Two vertically stacked axis, (2 rows, 1 column), width and height of the figure, and the axis share the same x_axis\n",
"fig, (ax1, ax3) = plt.subplots(2, 1,figsize=(15, 8), sharex=True)\n",
Expand All @@ -452,6 +505,7 @@
"\n",
"# Design the y-axis for temperatur\n",
"ax1.set_ylabel('Temperature (°C)', color='tab:red')\n",
"ax1.axhline(y=temp_mean, color='tab:red', linestyle='dashed', label='Mean temperature (°C)')\n",
"ax1.tick_params(axis='y', labelcolor='tab:red')\n",
"\n",
"# Plot Precipitation as bars on the secondary y-axis\n",
Expand Down

0 comments on commit 40d09e6

Please sign in to comment.