From 0b6144e83e21353862dee53b0a49593fd1b7c7c0 Mon Sep 17 00:00:00 2001 From: Hanne Heggdal Date: Wed, 26 Mar 2025 14:50:27 +0100 Subject: [PATCH] notebook add, gets data for a chosen date and place --- notebooks/get_day_data_notebook.ipynb | 845 ++++++++++++++++++++++++++ 1 file changed, 845 insertions(+) create mode 100644 notebooks/get_day_data_notebook.ipynb diff --git a/notebooks/get_day_data_notebook.ipynb b/notebooks/get_day_data_notebook.ipynb new file mode 100644 index 0000000..14af281 --- /dev/null +++ b/notebooks/get_day_data_notebook.ipynb @@ -0,0 +1,845 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Velg hvilken dag du vil sjekke været for\n", + "\n", + "For å kunne hente data og gjøre en analyse trenger programmet å vite hvilken dag du vil hente ut for, også skrives alle timene fra den dagen ut.\n", + "\n", + "Dataen skrives inn slik: (yyyy, mm, dd)\n", + "Her følger et eksempel: \n", + "|Hva|Hvordan|Eksempel|\n", + "|:---|:---:|:---:|\n", + "|år|yyyy|2025|\n", + "|måned|mm|03| \n", + "|dato|dd|01| \n", + "\n", + "Denne dataen skrives da inn på følgende hvis: (2025, 03, 01)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Selected date: 2025-02-21\n", + "Unix Timestamp: 1740092400 -> 2025-02-21 00:00:00\n", + "Unix Timestamp: 1740096000 -> 2025-02-21 01:00:00\n", + "Unix Timestamp: 1740099600 -> 2025-02-21 02:00:00\n", + "Unix Timestamp: 1740103200 -> 2025-02-21 03:00:00\n", + "Unix Timestamp: 1740106800 -> 2025-02-21 04:00:00\n", + "Unix Timestamp: 1740110400 -> 2025-02-21 05:00:00\n", + "Unix Timestamp: 1740114000 -> 2025-02-21 06:00:00\n", + "Unix Timestamp: 1740117600 -> 2025-02-21 07:00:00\n", + "Unix Timestamp: 1740121200 -> 2025-02-21 08:00:00\n", + "Unix Timestamp: 1740124800 -> 2025-02-21 09:00:00\n", + "Unix Timestamp: 1740128400 -> 2025-02-21 10:00:00\n", + "Unix Timestamp: 1740132000 -> 2025-02-21 11:00:00\n", + "Unix Timestamp: 1740135600 -> 2025-02-21 12:00:00\n", + "Unix Timestamp: 1740139200 -> 2025-02-21 13:00:00\n", + "Unix Timestamp: 1740142800 -> 2025-02-21 14:00:00\n", + "Unix Timestamp: 1740146400 -> 2025-02-21 15:00:00\n", + "Unix Timestamp: 1740150000 -> 2025-02-21 16:00:00\n", + "Unix Timestamp: 1740153600 -> 2025-02-21 17:00:00\n", + "Unix Timestamp: 1740157200 -> 2025-02-21 18:00:00\n", + "Unix Timestamp: 1740160800 -> 2025-02-21 19:00:00\n", + "Unix Timestamp: 1740164400 -> 2025-02-21 20:00:00\n", + "Unix Timestamp: 1740168000 -> 2025-02-21 21:00:00\n", + "Unix Timestamp: 1740171600 -> 2025-02-21 22:00:00\n", + "Unix Timestamp: 1740175200 -> 2025-02-21 23:00:00\n" + ] + } + ], + "source": [ + "import datetime\n", + "import time\n", + "\n", + "#makes a function so the star and end date is the same date, with all hours of that date\n", + "def get_unix_timestamps_for_day():\n", + " date_input = input(\"Choose a date (yyyy, mm, dd): \")\n", + " date_components = date_input.split(\",\")\n", + " year = int(date_components[0])\n", + " month = int(date_components[1])\n", + " day = int(date_components[2])\n", + "\n", + "#goes trough all hours of the day, use %Y-%m-%d etc. from pythons strftime to convert datetime into a readable string \n", + " timestamps = []\n", + " for hour in range(24):\n", + " dt = datetime.datetime(year, month, day, hour, 0)\n", + " unix_timestamp = int(time.mktime(dt.timetuple()))\n", + " timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) \n", + "\n", + "#prints the date chosen\n", + " print(f\"\\nSelected date: {year}-{month:02d}-{day:02d}\")\n", + "\n", + "#prints the timestamp and the date an hour of the day after\n", + " for ts, readable in timestamps:\n", + " print(f\"Unix Timestamp: {ts} -> {readable}\")\n", + " \n", + " return [ts[0] for ts in timestamps]\n", + "\n", + "timestamps = get_unix_timestamps_for_day()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Velg en by i Norge og få data\n", + "\n", + "Skriv inn en by du ønsker data fra, foreløpig er det begrenset til Norge\n", + "\n", + "Programmet vil deretter hente data å lagre det i en json fil" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data fetch: ok\n" + ] + } + ], + "source": [ + "import sys\n", + "import os\n", + "\n", + "# Gets the absolute path to the src folder\n", + "sys.path.append(os.path.abspath(\"../src\"))\n", + "\n", + "# Now we can import the fucntion from the module\n", + "from my_package.fetch_data import fetch_data\n", + "\n", + "#user choose a city they want the weather data from\n", + "city_name = input(\"Enter city name: \")\n", + "start_date, end_date = timestamps[0], timestamps[-1]\n", + "weather_data,folder = fetch_data(start_date, end_date, city_name)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lagre data i en json-fil\n", + "\n", + "Skriv inn navn for til filen du vil lagre med dataen.\n", + "\n", + "Eks. test\n", + "Da vil filen lagres som data_**test**.json, i mappen \"../data/output_stedsnavn/data_{filnavn}.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data has been written to /Users/hanne/Documents/anvendt prosjekt/anvendt_mappe/data/../data/output_stedsnavn/data_test_oslo1.json\n" + ] + } + ], + "source": [ + "# Gets the absolute path to the src folder\n", + "sys.path.append(os.path.abspath(\"../src\"))\n", + "\n", + "from my_package.write_data import write_data\n", + "\n", + "filename = input(\"Write filename: \")\n", + "\n", + "write_data(weather_data, folder, filename)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lese fra fil\n", + "\n", + "Henter opp data lagret i filen, lagd over, og skriver ut lesbart ved hjelp av pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " message cod city_id calctime cnt \\\n", + "0 Count: 24 200 3143244 0.010569 24 \n", + "1 Count: 24 200 3143244 0.010569 24 \n", + "2 Count: 24 200 3143244 0.010569 24 \n", + "3 Count: 24 200 3143244 0.010569 24 \n", + "4 Count: 24 200 3143244 0.010569 24 \n", + "5 Count: 24 200 3143244 0.010569 24 \n", + "6 Count: 24 200 3143244 0.010569 24 \n", + "7 Count: 24 200 3143244 0.010569 24 \n", + "8 Count: 24 200 3143244 0.010569 24 \n", + "9 Count: 24 200 3143244 0.010569 24 \n", + "10 Count: 24 200 3143244 0.010569 24 \n", + "11 Count: 24 200 3143244 0.010569 24 \n", + "12 Count: 24 200 3143244 0.010569 24 \n", + "13 Count: 24 200 3143244 0.010569 24 \n", + "14 Count: 24 200 3143244 0.010569 24 \n", + "15 Count: 24 200 3143244 0.010569 24 \n", + "16 Count: 24 200 3143244 0.010569 24 \n", + "17 Count: 24 200 3143244 0.010569 24 \n", + "18 Count: 24 200 3143244 0.010569 24 \n", + "19 Count: 24 200 3143244 0.010569 24 \n", + "20 Count: 24 200 3143244 0.010569 24 \n", + "21 Count: 24 200 3143244 0.010569 24 \n", + "22 Count: 24 200 3143244 0.010569 24 \n", + "23 Count: 24 200 3143244 0.010569 24 \n", + "\n", + " list \n", + "0 {'dt': 1740092400, 'main': {'temp': -0.97, 'fe... \n", + "1 {'dt': 1740096000, 'main': {'temp': -0.97, 'fe... \n", + "2 {'dt': 1740099600, 'main': {'temp': -0.97, 'fe... \n", + "3 {'dt': 1740103200, 'main': {'temp': -0.97, 'fe... \n", + "4 {'dt': 1740106800, 'main': {'temp': -0.97, 'fe... \n", + "5 {'dt': 1740110400, 'main': {'temp': -0.42, 'fe... \n", + "6 {'dt': 1740114000, 'main': {'temp': 0.69000000... \n", + "7 {'dt': 1740117600, 'main': {'temp': 1.25, 'fee... \n", + "8 {'dt': 1740121200, 'main': {'temp': 1.81, 'fee... \n", + "9 {'dt': 1740124800, 'main': {'temp': 1.81, 'fee... \n", + "10 {'dt': 1740128400, 'main': {'temp': 3.31, 'fee... \n", + "11 {'dt': 1740132000, 'main': {'temp': 3.31, 'fee... \n", + "12 {'dt': 1740135600, 'main': {'temp': 3.31, 'fee... \n", + "13 {'dt': 1740139200, 'main': {'temp': 3.31, 'fee... \n", + "14 {'dt': 1740142800, 'main': {'temp': 3.87, 'fee... \n", + "15 {'dt': 1740146400, 'main': {'temp': 3.87, 'fee... \n", + "16 {'dt': 1740150000, 'main': {'temp': 3.31, 'fee... \n", + "17 {'dt': 1740153600, 'main': {'temp': 3.31, 'fee... \n", + "18 {'dt': 1740157200, 'main': {'temp': 3.31, 'fee... \n", + "19 {'dt': 1740160800, 'main': {'temp': 3.31, 'fee... \n", + "20 {'dt': 1740164400, 'main': {'temp': 2.92, 'fee... \n", + "21 {'dt': 1740168000, 'main': {'temp': 2.92, 'fee... \n", + "22 {'dt': 1740171600, 'main': {'temp': 2.92, 'fee... \n", + "23 {'dt': 1740175200, 'main': {'temp': 2.92, 'fee... \n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "weather_data = pd.read_json(f'../data/output_stedsnavn/data_{filename}.json')\n", + "\n", + "print(weather_data)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
main.tempmain.feels_likemain.pressuremain.humiditymain.temp_minmain.temp_maxwind.speedwind.degwind.gustclouds.allsnow.1hrain.1h
dt
2025-02-20 23:00:00-0.97-5.54101691-0.97-0.974.0916212.291001.94NaN
2025-02-21 00:00:00-0.97-5.23101697-0.97-0.973.6715913.071001.54NaN
2025-02-21 01:00:00-0.97-5.37101597-0.97-0.973.8516013.481002.05NaN
2025-02-21 02:00:00-0.97-5.75101597-0.97-0.974.4017612.251000.56NaN
2025-02-21 03:00:00-0.97-5.21101498-0.97-0.973.641729.68100NaNNaN
2025-02-21 04:00:00-0.42-4.16101498-0.42-0.423.181849.60100NaNNaN
2025-02-21 05:00:000.69-2.141014980.690.692.441948.92100NaNNaN
2025-02-21 06:00:001.25-1.091014981.251.252.082009.31100NaNNaN
2025-02-21 07:00:001.811.811015991.811.811.222086.28100NaNNaN
2025-02-21 08:00:001.811.811015991.811.811.231874.22100NaNNaN
2025-02-21 09:00:003.313.311016842.363.311.221804.08100NaNNaN
2025-02-21 10:00:003.313.311016842.923.311.321915.27100NaNNaN
2025-02-21 11:00:003.311.951017842.923.311.551846.56100NaNNaN
2025-02-21 12:00:003.310.991017843.313.472.4017410.09100NaNNaN
2025-02-21 13:00:003.871.741016843.473.872.311679.24100NaNNaN
2025-02-21 14:00:003.871.831016843.473.872.211759.12100NaNNaN
2025-02-21 15:00:003.311.181017882.923.312.2117910.36100NaNNaN
2025-02-21 16:00:003.311.261016882.923.312.1316910.30100NaN0.30
2025-02-21 17:00:003.311.281016882.923.312.1116510.59100NaNNaN
2025-02-21 18:00:003.311.431015882.923.311.9718612.00100NaNNaN
2025-02-21 19:00:002.920.571015992.922.922.3618313.15100NaNNaN
2025-02-21 20:00:002.920.431014992.922.922.5117312.01100NaN0.12
2025-02-21 21:00:002.920.001014992.922.923.0117512.17100NaN0.35
2025-02-21 22:00:002.92-0.241014992.922.923.3317712.50100NaN0.69
\n", + "
" + ], + "text/plain": [ + " main.temp main.feels_like main.pressure main.humidity \\\n", + "dt \n", + "2025-02-20 23:00:00 -0.97 -5.54 1016 91 \n", + "2025-02-21 00:00:00 -0.97 -5.23 1016 97 \n", + "2025-02-21 01:00:00 -0.97 -5.37 1015 97 \n", + "2025-02-21 02:00:00 -0.97 -5.75 1015 97 \n", + "2025-02-21 03:00:00 -0.97 -5.21 1014 98 \n", + "2025-02-21 04:00:00 -0.42 -4.16 1014 98 \n", + "2025-02-21 05:00:00 0.69 -2.14 1014 98 \n", + "2025-02-21 06:00:00 1.25 -1.09 1014 98 \n", + "2025-02-21 07:00:00 1.81 1.81 1015 99 \n", + "2025-02-21 08:00:00 1.81 1.81 1015 99 \n", + "2025-02-21 09:00:00 3.31 3.31 1016 84 \n", + "2025-02-21 10:00:00 3.31 3.31 1016 84 \n", + "2025-02-21 11:00:00 3.31 1.95 1017 84 \n", + "2025-02-21 12:00:00 3.31 0.99 1017 84 \n", + "2025-02-21 13:00:00 3.87 1.74 1016 84 \n", + "2025-02-21 14:00:00 3.87 1.83 1016 84 \n", + "2025-02-21 15:00:00 3.31 1.18 1017 88 \n", + "2025-02-21 16:00:00 3.31 1.26 1016 88 \n", + "2025-02-21 17:00:00 3.31 1.28 1016 88 \n", + "2025-02-21 18:00:00 3.31 1.43 1015 88 \n", + "2025-02-21 19:00:00 2.92 0.57 1015 99 \n", + "2025-02-21 20:00:00 2.92 0.43 1014 99 \n", + "2025-02-21 21:00:00 2.92 0.00 1014 99 \n", + "2025-02-21 22:00:00 2.92 -0.24 1014 99 \n", + "\n", + " main.temp_min main.temp_max wind.speed wind.deg \\\n", + "dt \n", + "2025-02-20 23:00:00 -0.97 -0.97 4.09 162 \n", + "2025-02-21 00:00:00 -0.97 -0.97 3.67 159 \n", + "2025-02-21 01:00:00 -0.97 -0.97 3.85 160 \n", + "2025-02-21 02:00:00 -0.97 -0.97 4.40 176 \n", + "2025-02-21 03:00:00 -0.97 -0.97 3.64 172 \n", + "2025-02-21 04:00:00 -0.42 -0.42 3.18 184 \n", + "2025-02-21 05:00:00 0.69 0.69 2.44 194 \n", + "2025-02-21 06:00:00 1.25 1.25 2.08 200 \n", + "2025-02-21 07:00:00 1.81 1.81 1.22 208 \n", + "2025-02-21 08:00:00 1.81 1.81 1.23 187 \n", + "2025-02-21 09:00:00 2.36 3.31 1.22 180 \n", + "2025-02-21 10:00:00 2.92 3.31 1.32 191 \n", + "2025-02-21 11:00:00 2.92 3.31 1.55 184 \n", + "2025-02-21 12:00:00 3.31 3.47 2.40 174 \n", + "2025-02-21 13:00:00 3.47 3.87 2.31 167 \n", + "2025-02-21 14:00:00 3.47 3.87 2.21 175 \n", + "2025-02-21 15:00:00 2.92 3.31 2.21 179 \n", + "2025-02-21 16:00:00 2.92 3.31 2.13 169 \n", + "2025-02-21 17:00:00 2.92 3.31 2.11 165 \n", + "2025-02-21 18:00:00 2.92 3.31 1.97 186 \n", + "2025-02-21 19:00:00 2.92 2.92 2.36 183 \n", + "2025-02-21 20:00:00 2.92 2.92 2.51 173 \n", + "2025-02-21 21:00:00 2.92 2.92 3.01 175 \n", + "2025-02-21 22:00:00 2.92 2.92 3.33 177 \n", + "\n", + " wind.gust clouds.all snow.1h rain.1h \n", + "dt \n", + "2025-02-20 23:00:00 12.29 100 1.94 NaN \n", + "2025-02-21 00:00:00 13.07 100 1.54 NaN \n", + "2025-02-21 01:00:00 13.48 100 2.05 NaN \n", + "2025-02-21 02:00:00 12.25 100 0.56 NaN \n", + "2025-02-21 03:00:00 9.68 100 NaN NaN \n", + "2025-02-21 04:00:00 9.60 100 NaN NaN \n", + "2025-02-21 05:00:00 8.92 100 NaN NaN \n", + "2025-02-21 06:00:00 9.31 100 NaN NaN \n", + "2025-02-21 07:00:00 6.28 100 NaN NaN \n", + "2025-02-21 08:00:00 4.22 100 NaN NaN \n", + "2025-02-21 09:00:00 4.08 100 NaN NaN \n", + "2025-02-21 10:00:00 5.27 100 NaN NaN \n", + "2025-02-21 11:00:00 6.56 100 NaN NaN \n", + "2025-02-21 12:00:00 10.09 100 NaN NaN \n", + "2025-02-21 13:00:00 9.24 100 NaN NaN \n", + "2025-02-21 14:00:00 9.12 100 NaN NaN \n", + "2025-02-21 15:00:00 10.36 100 NaN NaN \n", + "2025-02-21 16:00:00 10.30 100 NaN 0.30 \n", + "2025-02-21 17:00:00 10.59 100 NaN NaN \n", + "2025-02-21 18:00:00 12.00 100 NaN NaN \n", + "2025-02-21 19:00:00 13.15 100 NaN NaN \n", + "2025-02-21 20:00:00 12.01 100 NaN 0.12 \n", + "2025-02-21 21:00:00 12.17 100 NaN 0.35 \n", + "2025-02-21 22:00:00 12.50 100 NaN 0.69 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gjennomsnitts temperatur: 1.92\n", + "max temperature: 3.87\n", + "min temperature: -0.97\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "weather_data = pd.read_json(f'../data/output_stedsnavn/data_{filename}.json')\n", + "\n", + "if 'list' in weather_data:\n", + " df = pd.json_normalize(weather_data['list'])\n", + "\n", + " # Delete duplicates based on the dt row, all the other values can appear more than once, but the date should only appear once\n", + " df = df.drop_duplicates(subset=['dt'])\n", + "\n", + " # The weather column dosnt have any releated information, therefor we delete it\n", + " df = df.drop(columns=\"weather\")\n", + "\n", + " # Convert 'dt' column from Unix timestamp to datetime and set it as the index\n", + " df['dt'] = pd.to_datetime(df['dt'], unit='s')\n", + " df.set_index('dt', inplace=True)\n", + " \n", + "\n", + " # Ensure the DataFrame is displayed correctly\n", + " display(df)\n", + "\n", + "# Extract main values\n", + " temp = df['main.temp']\n", + " humidity = df['main.humidity']\n", + "\n", + " # Extract wind values\n", + " w_speed = df['wind.speed']\n", + "\n", + " # Extract other variables\n", + " clouds = df['clouds.all']\n", + "\n", + " try:\n", + " rain = df['rain.1h']\n", + " except KeyError:\n", + " print(\"'Rain' is not present in the JSON file.\")\n", + "\n", + " try:\n", + " snow = df['snow.1h']\n", + " except KeyError:\n", + " print(\"'Snow' is not present in the JSON file.\")\n", + "\n", + " # Print the average temperature\n", + " print('Gjennomsnitts temperatur: ', temp.mean().round(2))\n", + "\n", + " # Display the temperature column\n", + " # display(temp)\n", + "\n", + " max_temp = df['main.temp'].max()\n", + " min_temp = df['main.temp'].min()\n", + "\n", + " print(\"max temperature:\", max_temp)\n", + " print(\"min temperature:\", min_temp)\n", + " \n", + "else:\n", + " print(\"The 'list' key is not present in the JSON file.\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}