{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hari Darjah Pertumbuhan\n", "\n", "Notebook ini memuatkan data suhu yang disimpan dalam fail CSV, dan menganalisisnya. Ia memplotkan suhu, menunjukkan nilai tertinggi dan terendah untuk setiap hari, dan mengira GDD.\n", "\n", "Untuk menggunakan notebook ini:\n", "\n", "* Salin fail `temperature.csv` ke dalam folder yang sama dengan notebook ini\n", "* Jalankan semua sel menggunakan butang **▶︎ Run** di atas. Ini akan menjalankan sel yang dipilih, kemudian bergerak ke sel seterusnya.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dalam sel di bawah, tetapkan `base_temperature` kepada suhu asas tumbuhan.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "base_temperature = 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fail CSV kini perlu dimuatkan, menggunakan 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": [ "Sebaik sahaja data dibaca, ia boleh dikumpulkan mengikut lajur `date`, dan suhu minimum serta maksimum boleh diekstrak untuk setiap tarikh.\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": [ "Persamaan GDD standard boleh digunakan untuk mengira GDD\n" ] }, { "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**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\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-27T23:59:55+00:00", "source_file": "2-farm/lessons/1-predict-plant-growth/code-notebook/gdd.ipynb", "language_code": "ms" } }, "nbformat": 4, "nbformat_minor": 2 }