You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.7 KiB
165 lines
4.7 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Vekstgrad-dager\n",
|
|
"\n",
|
|
"Denne notatboken laster inn temperaturdata lagret i en CSV-fil og analyserer den. Den plotter temperaturene, viser høyeste og laveste verdi for hver dag, og beregner GDD.\n",
|
|
"\n",
|
|
"For å bruke denne notatboken:\n",
|
|
"\n",
|
|
"* Kopier `temperature.csv`-filen inn i samme mappe som denne notatboken\n",
|
|
"* Kjør alle cellene ved å bruke **▶︎ Kjør**-knappen ovenfor. Dette vil kjøre den valgte cellen og deretter gå videre til neste.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"I cellen nedenfor, sett `base_temperature` til basistemperaturen for planten.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"base_temperature = 10"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"CSV-filen må nå lastes inn ved hjelp av pandas\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"# Read the temperature CSV file\n",
|
|
"df = pd.read_csv('temperature.csv')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(20, 10))\n",
|
|
"plt.plot(df['date'], df['temperature'])\n",
|
|
"plt.xticks(rotation='vertical');"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Når dataene er lest, kan de grupperes etter `date`-kolonnen, og minimums- og maksimumstemperaturene kan hentes ut for hver dato.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Convert datetimes to pure dates so we can group by the date\n",
|
|
"df['date'] = pd.to_datetime(df['date']).dt.date\n",
|
|
"\n",
|
|
"# Group the data by date so it can be analyzed by date\n",
|
|
"data_by_date = df.groupby('date')\n",
|
|
"\n",
|
|
"# Get the minimum and maximum temperatures for each date\n",
|
|
"min_by_date = data_by_date.min()\n",
|
|
"max_by_date = data_by_date.max()\n",
|
|
"\n",
|
|
"# Join the min and max temperatures into one dataframe and flatten it\n",
|
|
"min_max_by_date = min_by_date.join(max_by_date, on='date', lsuffix='_min', rsuffix='_max')\n",
|
|
"min_max_by_date = min_max_by_date.reset_index()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def calculate_gdd(row):\n",
|
|
" return ((row['temperature_max'] + row['temperature_min']) / 2) - base_temperature\n",
|
|
"\n",
|
|
"# Calculate the GDD for each row\n",
|
|
"min_max_by_date['gdd'] = min_max_by_date.apply (lambda row: calculate_gdd(row), axis=1)\n",
|
|
"\n",
|
|
"# Print the results\n",
|
|
"print(min_max_by_date[['date', 'gdd']].to_string(index=False))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"\n---\n\n**Ansvarsfraskrivelse**: \nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.1"
|
|
},
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"
|
|
}
|
|
},
|
|
"coopTranslator": {
|
|
"original_hash": "8fcf954f6042f0bf3601a2c836a09574",
|
|
"translation_date": "2025-08-27T22:59:56+00:00",
|
|
"source_file": "2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb",
|
|
"language_code": "no"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
} |