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", + " | main.temp | \n", + "main.feels_like | \n", + "main.pressure | \n", + "main.humidity | \n", + "main.temp_min | \n", + "main.temp_max | \n", + "wind.speed | \n", + "wind.deg | \n", + "wind.gust | \n", + "clouds.all | \n", + "snow.1h | \n", + "rain.1h | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dt | \n", + "\n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " | \n", + " |
| 2025-02-20 23:00:00 | \n", + "-0.97 | \n", + "-5.54 | \n", + "1016 | \n", + "91 | \n", + "-0.97 | \n", + "-0.97 | \n", + "4.09 | \n", + "162 | \n", + "12.29 | \n", + "100 | \n", + "1.94 | \n", + "NaN | \n", + "
| 2025-02-21 00:00:00 | \n", + "-0.97 | \n", + "-5.23 | \n", + "1016 | \n", + "97 | \n", + "-0.97 | \n", + "-0.97 | \n", + "3.67 | \n", + "159 | \n", + "13.07 | \n", + "100 | \n", + "1.54 | \n", + "NaN | \n", + "
| 2025-02-21 01:00:00 | \n", + "-0.97 | \n", + "-5.37 | \n", + "1015 | \n", + "97 | \n", + "-0.97 | \n", + "-0.97 | \n", + "3.85 | \n", + "160 | \n", + "13.48 | \n", + "100 | \n", + "2.05 | \n", + "NaN | \n", + "
| 2025-02-21 02:00:00 | \n", + "-0.97 | \n", + "-5.75 | \n", + "1015 | \n", + "97 | \n", + "-0.97 | \n", + "-0.97 | \n", + "4.40 | \n", + "176 | \n", + "12.25 | \n", + "100 | \n", + "0.56 | \n", + "NaN | \n", + "
| 2025-02-21 03:00:00 | \n", + "-0.97 | \n", + "-5.21 | \n", + "1014 | \n", + "98 | \n", + "-0.97 | \n", + "-0.97 | \n", + "3.64 | \n", + "172 | \n", + "9.68 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 04:00:00 | \n", + "-0.42 | \n", + "-4.16 | \n", + "1014 | \n", + "98 | \n", + "-0.42 | \n", + "-0.42 | \n", + "3.18 | \n", + "184 | \n", + "9.60 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 05:00:00 | \n", + "0.69 | \n", + "-2.14 | \n", + "1014 | \n", + "98 | \n", + "0.69 | \n", + "0.69 | \n", + "2.44 | \n", + "194 | \n", + "8.92 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 06:00:00 | \n", + "1.25 | \n", + "-1.09 | \n", + "1014 | \n", + "98 | \n", + "1.25 | \n", + "1.25 | \n", + "2.08 | \n", + "200 | \n", + "9.31 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 07:00:00 | \n", + "1.81 | \n", + "1.81 | \n", + "1015 | \n", + "99 | \n", + "1.81 | \n", + "1.81 | \n", + "1.22 | \n", + "208 | \n", + "6.28 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 08:00:00 | \n", + "1.81 | \n", + "1.81 | \n", + "1015 | \n", + "99 | \n", + "1.81 | \n", + "1.81 | \n", + "1.23 | \n", + "187 | \n", + "4.22 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 09:00:00 | \n", + "3.31 | \n", + "3.31 | \n", + "1016 | \n", + "84 | \n", + "2.36 | \n", + "3.31 | \n", + "1.22 | \n", + "180 | \n", + "4.08 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 10:00:00 | \n", + "3.31 | \n", + "3.31 | \n", + "1016 | \n", + "84 | \n", + "2.92 | \n", + "3.31 | \n", + "1.32 | \n", + "191 | \n", + "5.27 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 11:00:00 | \n", + "3.31 | \n", + "1.95 | \n", + "1017 | \n", + "84 | \n", + "2.92 | \n", + "3.31 | \n", + "1.55 | \n", + "184 | \n", + "6.56 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 12:00:00 | \n", + "3.31 | \n", + "0.99 | \n", + "1017 | \n", + "84 | \n", + "3.31 | \n", + "3.47 | \n", + "2.40 | \n", + "174 | \n", + "10.09 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 13:00:00 | \n", + "3.87 | \n", + "1.74 | \n", + "1016 | \n", + "84 | \n", + "3.47 | \n", + "3.87 | \n", + "2.31 | \n", + "167 | \n", + "9.24 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 14:00:00 | \n", + "3.87 | \n", + "1.83 | \n", + "1016 | \n", + "84 | \n", + "3.47 | \n", + "3.87 | \n", + "2.21 | \n", + "175 | \n", + "9.12 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 15:00:00 | \n", + "3.31 | \n", + "1.18 | \n", + "1017 | \n", + "88 | \n", + "2.92 | \n", + "3.31 | \n", + "2.21 | \n", + "179 | \n", + "10.36 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 16:00:00 | \n", + "3.31 | \n", + "1.26 | \n", + "1016 | \n", + "88 | \n", + "2.92 | \n", + "3.31 | \n", + "2.13 | \n", + "169 | \n", + "10.30 | \n", + "100 | \n", + "NaN | \n", + "0.30 | \n", + "
| 2025-02-21 17:00:00 | \n", + "3.31 | \n", + "1.28 | \n", + "1016 | \n", + "88 | \n", + "2.92 | \n", + "3.31 | \n", + "2.11 | \n", + "165 | \n", + "10.59 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 18:00:00 | \n", + "3.31 | \n", + "1.43 | \n", + "1015 | \n", + "88 | \n", + "2.92 | \n", + "3.31 | \n", + "1.97 | \n", + "186 | \n", + "12.00 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 19:00:00 | \n", + "2.92 | \n", + "0.57 | \n", + "1015 | \n", + "99 | \n", + "2.92 | \n", + "2.92 | \n", + "2.36 | \n", + "183 | \n", + "13.15 | \n", + "100 | \n", + "NaN | \n", + "NaN | \n", + "
| 2025-02-21 20:00:00 | \n", + "2.92 | \n", + "0.43 | \n", + "1014 | \n", + "99 | \n", + "2.92 | \n", + "2.92 | \n", + "2.51 | \n", + "173 | \n", + "12.01 | \n", + "100 | \n", + "NaN | \n", + "0.12 | \n", + "
| 2025-02-21 21:00:00 | \n", + "2.92 | \n", + "0.00 | \n", + "1014 | \n", + "99 | \n", + "2.92 | \n", + "2.92 | \n", + "3.01 | \n", + "175 | \n", + "12.17 | \n", + "100 | \n", + "NaN | \n", + "0.35 | \n", + "
| 2025-02-21 22:00:00 | \n", + "2.92 | \n", + "-0.24 | \n", + "1014 | \n", + "99 | \n", + "2.92 | \n", + "2.92 | \n", + "3.33 | \n", + "177 | \n", + "12.50 | \n", + "100 | \n", + "NaN | \n", + "0.69 | \n", + "