Created
December 23, 2019 03:41
-
-
Save taruma/7f81cf0fea5250cfe47942b4e16a8a65 to your computer and use it in GitHub Desktop.
taruma_hk106_evapotranspirasi.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "colab": { | |
| "name": "taruma_hk106_evapotranspirasi.ipynb", | |
| "provenance": [], | |
| "collapsed_sections": [], | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/gist/taruma/7f81cf0fea5250cfe47942b4e16a8a65/taruma_hk106_evapotranspirasi.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "MDQsfFwsK9jC", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "Berdasarkan isu [#106](https://github.com/taruma/hidrokit/issues/106): **menghitung evapotranspirasi**\n", | |
| "\n", | |
| "Referensi Isu:\n", | |
| "- Limantara, Lily M. (2018): _Rekayasa Hidrologi, Edisi Revisi_. Penerbit Andi Offset, Yogyakarta. (hal. 31-47).\n", | |
| "\n", | |
| "Deskripsi Isu:\n", | |
| "- Menghitung Evapotranspirasi dengan tiga rumus yaitu Rumus Blaney-Criddle, Rumus Radiasi, Rumus Penman.\n", | |
| "\n", | |
| "Strategi:\n", | |
| "- Urutan pengembangan dari Blaney-Criddle, Radiasi, kemudian diakhiri Penman. Beberapa tabel yang digunakan pada Penman tersedia pada rumus sebelumnya.\n", | |
| "- Buat Tabel lampiran yang digunakan sebagai acuan. Tabel berupa:\n", | |
| " - Tabel `rel_P_LL`, hubungan $P$ dan Letak Lintang (LL) (Untuk Indonesia $5^{\\circ}$ s/d $10^{\\circ} \\text{LS}$).\n", | |
| " - Tabel `cor_C_BC`, angka koreksi $C$ menurut Blaney Criddle.\n", | |
| " - Tabel `rel_T_W`, hubungan $T$ dan $W$ (untuk Indonesia, El. $0-500\\ \\text{m}$)\n", | |
| " - Tabel `cor_C_RAD`, angka koreksi $C$ menurut Rumus Radiasi.\n", | |
| " - Tabel `val_Rg`, harga $R_\\gamma$ (Untuk Indonesia $5^{\\circ}\\ \\text{LU}$ s/d $10^{\\circ}\\ \\text{LS}$).\n", | |
| " - Tabel `cor_C_PEN`, angka koreksi $C$ menurut Penman.\n", | |
| " - Tabel `rel_T_PEN`, hubungan $T$ dengan $\\varepsilon_\\gamma, W, F(T)$.\n", | |
| "- Pengembangan fungsi mengikuti `hk89.model_NRECA()`.\n", | |
| "\n", | |
| "Catatan:\n", | |
| "- Sampel menggunakan soal latihan yang tersedia dalam buku." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "GwItO7fXgwrm", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# PERSIAPAN DAN DATASET" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "A4THrgNRK27n", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "import pandas as pd\n", | |
| "import numpy as np" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "Wpye0gMCPclZ", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# TABEL\n", | |
| "\n", | |
| "Nilai tabel mengikuti referensi buku. Tabel yang digunakan dalam perhitungan dibangkitkan dengan kode dibawah ini:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Ju1YmXlzPbuq", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "t_rel_P_LL = pd.DataFrame({\n", | |
| " '5 U': [0.27]*3 + [0.28]*6 + [0.27]*3,\n", | |
| " '2.5 U': [0.27]*3 + [0.28]*6 + [0.27]*3,\n", | |
| " '0': [.27]*12,\n", | |
| " '2.5 S': [.28]*12,\n", | |
| " '5 S': [.28]*12,\n", | |
| " '7.5 S': [.28]*4 + [.27]*4 + [.28]*3 + [.29]*1,\n", | |
| " '10 S': [.29] + [.28]*2 + [.27] + [.26]*4 + [.27] +[.28]*2 + [.29]\n", | |
| "}, index=range(1, 13))\n", | |
| "\n", | |
| "t_cor_C_BC = pd.DataFrame({\n", | |
| " 'C': [.8, .8, .75, .7, .7, .7, .7, .75, .8, .8, .8, .8]\n", | |
| "}, index=range(1, 13))\n", | |
| "\n", | |
| "t_rel_T_W = pd.DataFrame({\n", | |
| " 'suhu': np.arange(24.0, 30, 0.2),\n", | |
| " 'W': np.arange(0.735, 0.794, .002)\n", | |
| "})\n", | |
| "\n", | |
| "t_cor_C_RAD = pd.DataFrame(\n", | |
| " {'C': [.8]*2 + [.75]*5 + [.8]*5},\n", | |
| " index=range(1, 13))\n", | |
| "\n", | |
| "_data = [13.0, 14.3, 14.7, 15.0, 15.3, 15.5, 15.8, 16.1, 16.1, \n", | |
| " 14.0, 15.0, 15.3, 15.5, 15.7, 15.8, 16.0, 16.1, 16.0, \n", | |
| " 15.0, 15.5, 15.6, 15.7, 15.7, 15.6, 15.6, 15.1, 15.3, \n", | |
| " 15.1, 15.5, 15.3, 15.3, 15.1, 14.9, 14.7, 14.1, 14.0, \n", | |
| " 15.3, 14.9, 14.6, 14.4, 14.1, 13.8, 13.4, 13.1, 12.6, \n", | |
| " 15.0, 14.4, 14.2, 13.9, 13.9, 13.2, 12.8, 12.4, 12.6, \n", | |
| " 15.1, 14.6, 14.3, 14.1, 14.1, 13.4, 13.1, 12.7, 11.8, \n", | |
| " 15.3, 15.1, 14.9, 14.8, 14.8, 14.3, 14.0, 13.7, 12.2, \n", | |
| " 15.1, 15.3, 15.3, 15.3, 15.3, 15.1, 15.0, 14.9, 13.1, \n", | |
| " 15.7, 15.1, 15.3, 15.4, 15.4, 15.6, 15.7, 15.8, 14.6, \n", | |
| " 14.8, 14.5, 14.8, 15.1, 15.1, 15.5, 15.8, 16.0, 15.6, \n", | |
| " 14.6, 14.1, 14.4, 14.8, 14.8, 15.4, 15.7, 16.0, 16.0]\n", | |
| "_data = np.array(_data).reshape((12, 9)).T\n", | |
| "t_val_Rg = pd.DataFrame(_data,\n", | |
| " columns=range(1, 13),\n", | |
| " index=['5 LU', '4 LU', '2 LU', '0', \n", | |
| " '2 LS', '4 LS', '6 LS', '8 LS', \n", | |
| " '10 LS']).T\n", | |
| "\n", | |
| "t_cor_C_PEN = pd.DataFrame({\n", | |
| " 'C': [1.1]*3 + [.9]*4 + [1.1]*5,\n", | |
| "}, index=range(1, 13))\n", | |
| "\n", | |
| "t_rel_T_PEN = pd.DataFrame({\n", | |
| " 'suhu': np.arange(24., 29.1, .2),\n", | |
| " 'e_mbar': [29.85, 30.21, 30.57, 30.94, 31.31, 31.69, 32.06, 32.45, 32.83, \n", | |
| " 32.22, 33.62, 34.02, 34.42, 34.83, 35.25, 35.66, 36.09, 36.50, \n", | |
| " 36.94, 37.37, 37.81, 38.25, 38.70, 39.14, 39.61, 40.06],\n", | |
| " 'w': np.arange(0.735, 0.786, .002),\n", | |
| " 'f_t': [15.40, 15.45, 15.50, 15.55, 15.60, 15.65, 15.70, 15.75, 15.80, \n", | |
| " 15.85, 15.90, 15.94, 15.98, 16.02, 16.06, 16.10, 16.14, 16.18, \n", | |
| " 16.22, 16.26, 16.30, 16.34, 16.38, 16.42, 16.46, 16.5]\n", | |
| "})" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "U6icjtxvwqGo", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# DIAGRAM\n", | |
| "\n", | |
| "Diagram ini dibuat untuk memberikan gambaran proses perhitungan evapotranspirasi pada modul ini. Diagram dibuat oleh [taruma](https://taruma.github.io) menggunakan [draw.io](https://www.draw.io/) dengan lisensi [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/). Diagram mengacu pada buku [_Rekayasa Hidrologi: Edisi Revisi_ (2018)](https://www.gramedia.com/products/rekayasa-hidrologi-edisi-revisi) oleh Prof. Dr. Ir. Lily Montarcih Limantara, M.Sc. \n", | |
| "\n", | |
| "## Diagram Rumus Blaney Criddle dan Rumus Radiasi\n", | |
| "\n", | |
| "Dua diagram ini menggambarkan proses perhitungan pada fungsi `ETo_BlaneyCriddle()` dan `ETo_Radiation`.\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "## Diagram Rumus Penman\n", | |
| "\n", | |
| "Diagram ini menggambarkan proses perhitungan pada fungsi `ETo_Penman()`\n", | |
| "\n", | |
| "\n", | |
| "\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "zEEXWgHPgs1l", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# KODE" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "xR9ikMODl8gK", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def __lat_to_num(lat):\n", | |
| " num, lat = lat.split(' ')\n", | |
| " num = float(num)\n", | |
| " num = -num if lat.lower() == 'lu' else num\n", | |
| " return num" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "eNWwrSldgw12", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "## Blaney Criddle" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "p_WqNLTRejgX", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def BC_ETo(c, ETo_x):\n", | |
| " return c * ETo_x\n", | |
| "\n", | |
| "def BC_ETo_x(P, temp):\n", | |
| " return P * (.457*temp + 8.13)\n", | |
| "\n", | |
| "def BC_find_P(latitude, month, table=t_rel_P_LL):\n", | |
| " m = table.loc[month].values\n", | |
| " x = [-5, -2.5, 0, 2.5, 5, 7.5, 10]\n", | |
| " return np.interp(__lat_to_num(latitude), x, m)\n", | |
| "\n", | |
| "def BC_find_C(month, table=t_cor_C_BC, col='C'):\n", | |
| " return table.loc[month, col]" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "k-FOJZQRl-M9", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def ETo_BlaneyCriddle(df, temp_col, lat, \n", | |
| " as_df=True, report='ETo'):\n", | |
| "\n", | |
| " # sub_df\n", | |
| " data = df.loc[:, [temp_col]]\n", | |
| " data_array = data.values\n", | |
| "\n", | |
| " # info_df\n", | |
| " nrows = data.shape[0]\n", | |
| "\n", | |
| " # initialization\n", | |
| " (P, ETo_x, C, ETo) = (np.zeros(nrows) for _ in range(4))\n", | |
| "\n", | |
| " # calculation\n", | |
| " temp = data_array[:, 0]\n", | |
| " month = data.index.month.values\n", | |
| "\n", | |
| " for i in range(nrows):\n", | |
| " P[i] = BC_find_P(lat, month[i])\n", | |
| " ETo_x[i] = BC_ETo_x(P[i], temp[i])\n", | |
| " C[i] = BC_find_C(month[i])\n", | |
| " ETo[i] = BC_ETo(C[i], ETo_x[i])\n", | |
| "\n", | |
| " if report.lower() == 'full':\n", | |
| " results = np.stack((\n", | |
| " month, temp, P, ETo_x, C, ETo\n", | |
| " ), axis=1)\n", | |
| " columns_name = [\n", | |
| " 'Month', 'Temp', 'P', 'ETo_x', 'C', 'ETo'\n", | |
| " ]\n", | |
| " elif report.lower() == 'eto':\n", | |
| " results = ETo\n", | |
| " columns_name = ['ETo']\n", | |
| " \n", | |
| " if as_df:\n", | |
| " return pd.DataFrame(\n", | |
| " data=results, index=data.index, columns=columns_name\n", | |
| " )\n", | |
| " else:\n", | |
| " return results" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "Yd3ZkYW0sqCZ", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "## RADIASI" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "rZHb775hsh1a", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def RAD_ETo(C, ETo_x):\n", | |
| " return C * ETo_x\n", | |
| "\n", | |
| "def RAD_ETo_x(w, Rs):\n", | |
| " return w * Rs\n", | |
| "\n", | |
| "def RAD_find_W(temp, table=t_rel_T_W):\n", | |
| " t = table['suhu'].values\n", | |
| " w = table['W'].values\n", | |
| " return np.interp(temp, t, w)\n", | |
| "\n", | |
| "def RAD_find_Rg(latitude, month, table=t_val_Rg):\n", | |
| " m = table.loc[month].values\n", | |
| " x = [-5, -4, -2, 0, 2, 4, 6, 8, 10]\n", | |
| " return np.interp(__lat_to_num(latitude), x, m)\n", | |
| "\n", | |
| "def RAD_Rs(sun_duration, Rg):\n", | |
| " return (0.25 + 0.54 * sun_duration/100) * Rg\n", | |
| "\n", | |
| "def RAD_find_C(month, table=t_cor_C_RAD, col='C'):\n", | |
| " return table.loc[month, col]" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Jrz9uDHG3WQK", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def ETo_Radiation(df, temp_col, sun_col, lat,\n", | |
| " as_df=True, report='ETo'):\n", | |
| "\n", | |
| " # sub_df\n", | |
| " data = df.loc[:, [temp_col, sun_col]]\n", | |
| " data_array = data.values\n", | |
| "\n", | |
| " # info_df\n", | |
| " nrows = data.shape[0]\n", | |
| "\n", | |
| " # initialization\n", | |
| " (w, Rg, Rs, ETo_x, C, ETo) = (np.zeros(nrows) for _ in range(6))\n", | |
| "\n", | |
| " # calculation\n", | |
| " temp = data_array[:, 0]\n", | |
| " sun = data_array[:, 1]\n", | |
| " month = data.index.month.values\n", | |
| "\n", | |
| " for i in range(nrows):\n", | |
| " w[i] = RAD_find_W(temp[i])\n", | |
| " Rg[i] = RAD_find_Rg(lat, month[i])\n", | |
| " Rs[i] = RAD_Rs(sun[i], Rg[i])\n", | |
| " ETo_x[i] = RAD_ETo_x(w[i], Rs[i])\n", | |
| " C[i] = RAD_find_C(month[i])\n", | |
| " ETo[i] = RAD_ETo(C[i], ETo_x[i])\n", | |
| "\n", | |
| "\n", | |
| " if report.lower() == 'full':\n", | |
| " results = np.stack((\n", | |
| " month, temp, sun, w, Rg, Rs, ETo_x, C, ETo\n", | |
| " ), axis=1)\n", | |
| " columns_name = [\n", | |
| " 'Month', 'Temp', 'Sun', 'W', 'R_G', 'R_s', 'ETo_x', 'C', 'ETo'\n", | |
| " ]\n", | |
| " elif report.lower() == 'eto':\n", | |
| " results = ETo\n", | |
| " columns_name = ['ETo']\n", | |
| " \n", | |
| " if as_df:\n", | |
| " return pd.DataFrame(\n", | |
| " data=results, index=data.index, columns=columns_name\n", | |
| " )\n", | |
| " else:\n", | |
| " return results" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "S8fO9KhQ7NN3", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "## Penman" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "2dEmvJ1C6nHw", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def PEN_ETo(C, ETo_x):\n", | |
| " return C * ETo_x\n", | |
| "\n", | |
| "def PEN_ETo_x(w, Rs, Rn1, fU, e_g, e_d):\n", | |
| " return w * (0.75 * Rs - Rn1) + (1 - w) * fU * (e_g - e_d)\n", | |
| "\n", | |
| "def PEN_Rs(sun_duration, RG):\n", | |
| " return (0.25 + 0.54 * sun_duration / 100) * RG\n", | |
| "\n", | |
| "def PEN_Rn1(ft, fe_d, fsun):\n", | |
| " return ft * fe_d * fsun\n", | |
| "\n", | |
| "def PEN_fe_d(e_d):\n", | |
| " return 0.34 - 0.044 * np.sqrt(e_d)\n", | |
| "\n", | |
| "def PEN_e_d(e_d, RH):\n", | |
| " return e_d * RH /100\n", | |
| "\n", | |
| "def PEN_fsun(sun_duration):\n", | |
| " return 0.1 + (0.9 * sun_duration / 100)\n", | |
| "\n", | |
| "def PEN_fU(U):\n", | |
| " return 0.27 * (1 + 0.864 * U)\n", | |
| "\n", | |
| "def PEN_find_from_T(temp, table=t_rel_T_PEN):\n", | |
| " t = table['suhu'].values\n", | |
| " e = table['e_mbar'].values\n", | |
| " w = table['w'].values\n", | |
| " ft = table['f_t'].values\n", | |
| "\n", | |
| " return (\n", | |
| " np.interp(temp, t, e),\n", | |
| " np.interp(temp, t, w),\n", | |
| " np.interp(temp, t, ft)\n", | |
| " )\n", | |
| "\n", | |
| "def PEN_find_Rg(latitude, month, table=t_val_Rg):\n", | |
| " m = table.loc[month].values\n", | |
| " x = [-5, -4, -2, 0, 2, 4, 6, 8, 10]\n", | |
| " return np.interp(__lat_to_num(latitude), x, m)\n", | |
| "\n", | |
| "def PEN_find_C(month, table=t_cor_C_PEN, col='C'):\n", | |
| " return table.loc[month, col]" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "jJWaFyRx_Nmv", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "def ETo_Penman(df, temp_col, humid_col, wind_col, sun_col, lat,\n", | |
| " as_df=True, report='ETo'):\n", | |
| "\n", | |
| " # sub_df\n", | |
| " data = df.loc[:, [temp_col, humid_col, wind_col, sun_col]]\n", | |
| " data_array = data.values\n", | |
| "\n", | |
| " # info_df\n", | |
| " nrows = data.shape[0]\n", | |
| "\n", | |
| " # initialization\n", | |
| " (e_g, w, ft, fed, e_d, Rg, Rs, fsun,\n", | |
| " fU, Rn1, C, ETo_x, ETo) = (np.zeros(nrows) for _ in range(13))\n", | |
| "\n", | |
| " # calculation\n", | |
| " temp = data_array[:, 0]\n", | |
| " RH = data_array[:, 1]\n", | |
| " wind = data_array[:, 2]\n", | |
| " sun = data_array[:, 3]\n", | |
| " month = data.index.month.values\n", | |
| "\n", | |
| " for i in range(nrows):\n", | |
| " e_g[i], w[i], ft[i] = PEN_find_from_T(temp[i])\n", | |
| " e_d[i] = PEN_e_d(e_g[i], RH[i])\n", | |
| " fed[i] = PEN_fe_d(e_d[i])\n", | |
| " Rg[i] = PEN_find_Rg(lat, month[i])\n", | |
| " Rs[i] = PEN_Rs(sun[i], Rg[i])\n", | |
| " fsun[i] = PEN_fsun(sun[i])\n", | |
| " fU[i] = PEN_fU(wind[i])\n", | |
| " Rn1[i] = PEN_Rn1(ft[i], fed[i], fsun[i])\n", | |
| " C[i] = PEN_find_C(month[i])\n", | |
| " ETo_x[i] = PEN_ETo_x(w[i], Rs[i], Rn1[i], fU[i], e_g[i], e_d[i])\n", | |
| " ETo[i] = PEN_ETo(C[i], ETo_x[i])\n", | |
| "\n", | |
| "\n", | |
| " if report.lower() == 'full':\n", | |
| " results = np.stack((\n", | |
| " month, temp, RH, wind, sun, e_g, w, ft, e_d, fed, Rg, Rs,\n", | |
| " fsun, fU, Rn1, C, ETo_x, ETo\n", | |
| " ), axis=1)\n", | |
| " columns_name = [\n", | |
| " 'Month', 'Temp', 'Humidity', 'Wind', 'Sun', 'e_g', 'w', 'f_t',\n", | |
| " 'e_d', 'f_e_d', 'R_g', 'R_s', 'f_sun', 'f_U', 'R_n1', 'C', 'ETo_x',\n", | |
| " 'ETo'\n", | |
| " ]\n", | |
| " elif report.lower() == 'eto':\n", | |
| " results = ETo\n", | |
| " columns_name = ['ETo']\n", | |
| " \n", | |
| " if as_df:\n", | |
| " return pd.DataFrame(\n", | |
| " data=results, index=data.index, columns=columns_name\n", | |
| " )\n", | |
| " else:\n", | |
| " return results" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "sQmsetLse4ag", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# FUNGSI\n", | |
| "\n", | |
| "Dalam modul ini terdapat tiga fungsi utama yang memiliki rumus berbeda yaitu `ETo_BlaneyCriddle()` untuk rumus Blaney Criddle, `ETo_Radiation()` untuk rumus Radiasi, `ETo_Penman()` untuk rumus Penman.\n", | |
| "\n", | |
| "Ketiga ini memiliki keserupaan argumen dalam fungsi, berikut argumen yang terdapat pada ketiga fungsi:\n", | |
| "- `df`: dataset objek `pandas.DataFrame` dengan index berupa objek `DatetimeIndex` atau yang serupa.\n", | |
| "- `lat`: posisi lintang lokasi dalam bentuk _string_ seperti `5 LU`/`3.5 LS`. \n", | |
| "- (opsional) `as_df=True` (_default_), keluaran berupa `pandas.DataFrame`. Keluaran berupa `numpy.ndarray` jika `False`.\n", | |
| "- (opsional) `report='ETo'` (_default_), terdapat beberapa nilai yang dapat diterima oleh argumen `report`:\n", | |
| " - `full`: keluaran akan menyertakan seluruh peubah yang dihitung dalam model.\n", | |
| " - `Eto`: keluaran hanya menyertakan kolom `ETo` (hasil akhir model)." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "WNLXpo-8e58m", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "## Fungsi `ETo_BlaneyCriddle()`\n", | |
| "\n", | |
| "Selain argumen posisi `df`, `lat` dan argumen opsional `as_df`, `report`, fungsi ini membutuhkan argumen `temp_col` yaitu nama kolom suhu. " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "fF_s2gznM9Nw", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "sample = pd.DataFrame(\n", | |
| " data=[27.2,27.4,27.3,27.9,27.9,26.8,26.9,28.6,27.9,27.5,27.7,27.3],\n", | |
| " index=pd.date_range('20010101', periods=12, freq='MS'),\n", | |
| " columns=['temp_C']\n", | |
| ")" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "VUftqhQoym-o", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### default, `as_df=False`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Ws9F0TXvyqBZ", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 51 | |
| }, | |
| "outputId": "c07a25f1-8524-45e0-a52f-17fcf43961ff" | |
| }, | |
| "source": [ | |
| "ETo_BlaneyCriddle(df=sample, \n", | |
| " temp_col='temp_C', \n", | |
| " lat='7.5 LS',\n", | |
| " as_df=False)" | |
| ], | |
| "execution_count": 11, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/plain": [ | |
| "array([4.6055296, 4.6260032, 4.327281 , 4.0925388, 3.9463767, 3.8513664,\n", | |
| " 3.8600037, 4.2930405, 4.6771872, 4.63624 , 4.6567136, 4.7806152])" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 11 | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "k7yNXNbYywLp", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### `report='full'`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "jwfrbRHdyzRF", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 421 | |
| }, | |
| "outputId": "77160de6-d543-47c4-966f-b41ee8ec7dff" | |
| }, | |
| "source": [ | |
| "ETo_BlaneyCriddle(df=sample, \n", | |
| " temp_col='temp_C', \n", | |
| " lat='7.5 LS',\n", | |
| " report='full')" | |
| ], | |
| "execution_count": 12, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>Month</th>\n", | |
| " <th>Temp</th>\n", | |
| " <th>P</th>\n", | |
| " <th>ETo_x</th>\n", | |
| " <th>C</th>\n", | |
| " <th>ETo</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>2001-01-01</th>\n", | |
| " <td>1.0</td>\n", | |
| " <td>27.2</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.756912</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.605530</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-02-01</th>\n", | |
| " <td>2.0</td>\n", | |
| " <td>27.4</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.782504</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.626003</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-03-01</th>\n", | |
| " <td>3.0</td>\n", | |
| " <td>27.3</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.769708</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.327281</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-04-01</th>\n", | |
| " <td>4.0</td>\n", | |
| " <td>27.9</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.846484</td>\n", | |
| " <td>0.70</td>\n", | |
| " <td>4.092539</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-05-01</th>\n", | |
| " <td>5.0</td>\n", | |
| " <td>27.9</td>\n", | |
| " <td>0.27</td>\n", | |
| " <td>5.637681</td>\n", | |
| " <td>0.70</td>\n", | |
| " <td>3.946377</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-06-01</th>\n", | |
| " <td>6.0</td>\n", | |
| " <td>26.8</td>\n", | |
| " <td>0.27</td>\n", | |
| " <td>5.501952</td>\n", | |
| " <td>0.70</td>\n", | |
| " <td>3.851366</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-07-01</th>\n", | |
| " <td>7.0</td>\n", | |
| " <td>26.9</td>\n", | |
| " <td>0.27</td>\n", | |
| " <td>5.514291</td>\n", | |
| " <td>0.70</td>\n", | |
| " <td>3.860004</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-08-01</th>\n", | |
| " <td>8.0</td>\n", | |
| " <td>28.6</td>\n", | |
| " <td>0.27</td>\n", | |
| " <td>5.724054</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.293041</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-09-01</th>\n", | |
| " <td>9.0</td>\n", | |
| " <td>27.9</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.846484</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.677187</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-10-01</th>\n", | |
| " <td>10.0</td>\n", | |
| " <td>27.5</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.795300</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.636240</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-11-01</th>\n", | |
| " <td>11.0</td>\n", | |
| " <td>27.7</td>\n", | |
| " <td>0.28</td>\n", | |
| " <td>5.820892</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.656714</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-12-01</th>\n", | |
| " <td>12.0</td>\n", | |
| " <td>27.3</td>\n", | |
| " <td>0.29</td>\n", | |
| " <td>5.975769</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.780615</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Month Temp P ETo_x C ETo\n", | |
| "2001-01-01 1.0 27.2 0.28 5.756912 0.80 4.605530\n", | |
| "2001-02-01 2.0 27.4 0.28 5.782504 0.80 4.626003\n", | |
| "2001-03-01 3.0 27.3 0.28 5.769708 0.75 4.327281\n", | |
| "2001-04-01 4.0 27.9 0.28 5.846484 0.70 4.092539\n", | |
| "2001-05-01 5.0 27.9 0.27 5.637681 0.70 3.946377\n", | |
| "2001-06-01 6.0 26.8 0.27 5.501952 0.70 3.851366\n", | |
| "2001-07-01 7.0 26.9 0.27 5.514291 0.70 3.860004\n", | |
| "2001-08-01 8.0 28.6 0.27 5.724054 0.75 4.293041\n", | |
| "2001-09-01 9.0 27.9 0.28 5.846484 0.80 4.677187\n", | |
| "2001-10-01 10.0 27.5 0.28 5.795300 0.80 4.636240\n", | |
| "2001-11-01 11.0 27.7 0.28 5.820892 0.80 4.656714\n", | |
| "2001-12-01 12.0 27.3 0.29 5.975769 0.80 4.780615" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 12 | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "fy1su-emfZme", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "## Fungsi `ETo_Radiation()`\n", | |
| "\n", | |
| "Selain argumen posisi `df`, `lat` dan argumen opsional `as_df`, `report`, fungsi ini membutuhkan argumen:\n", | |
| "- `temp_col` yaitu nama kolom suhu.\n", | |
| "- `sun_col` yaitu nama kolom penyinaran matahari. " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "8YJ9TNBDfcI0", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "sample_2 = pd.DataFrame({\n", | |
| " 'temp': [25.4, 25.7, 26.1, 26.9, 26.4, 26.6, 26.2, 25.9,\n", | |
| " 26.6, 27.9, 28.4, 27.2],\n", | |
| " 'sun': [41.8, 41.8, 53.6, 49.1, 60.0, 63.6, 60.9, 57.3,\n", | |
| " 61.8, 65.5, 61.8, 47.3],\n", | |
| "}, index=pd.date_range('20010101', periods=12, freq='MS'))" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "whPiY3XdzLDg", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### default, `report='full'`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "q2qteeV8zNkg", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 421 | |
| }, | |
| "outputId": "3ff9baef-aa19-4d35-fb7c-85be5e9efb5b" | |
| }, | |
| "source": [ | |
| "ETo_Radiation(df=sample_2, \n", | |
| " temp_col='temp', \n", | |
| " sun_col='sun', \n", | |
| " lat='7.5 LS', \n", | |
| " report='full')" | |
| ], | |
| "execution_count": 14, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>Month</th>\n", | |
| " <th>Temp</th>\n", | |
| " <th>Sun</th>\n", | |
| " <th>W</th>\n", | |
| " <th>R_G</th>\n", | |
| " <th>R_s</th>\n", | |
| " <th>ETo_x</th>\n", | |
| " <th>C</th>\n", | |
| " <th>ETo</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>2001-01-01</th>\n", | |
| " <td>1.0</td>\n", | |
| " <td>25.4</td>\n", | |
| " <td>41.8</td>\n", | |
| " <td>0.749</td>\n", | |
| " <td>16.025</td>\n", | |
| " <td>7.623413</td>\n", | |
| " <td>5.709936</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.567949</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-02-01</th>\n", | |
| " <td>2.0</td>\n", | |
| " <td>25.7</td>\n", | |
| " <td>41.8</td>\n", | |
| " <td>0.752</td>\n", | |
| " <td>16.075</td>\n", | |
| " <td>7.647199</td>\n", | |
| " <td>5.750694</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.600555</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-03-01</th>\n", | |
| " <td>3.0</td>\n", | |
| " <td>26.1</td>\n", | |
| " <td>53.6</td>\n", | |
| " <td>0.756</td>\n", | |
| " <td>15.225</td>\n", | |
| " <td>8.212974</td>\n", | |
| " <td>6.209008</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.656756</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-04-01</th>\n", | |
| " <td>4.0</td>\n", | |
| " <td>26.9</td>\n", | |
| " <td>49.1</td>\n", | |
| " <td>0.764</td>\n", | |
| " <td>14.250</td>\n", | |
| " <td>7.340745</td>\n", | |
| " <td>5.608329</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.206247</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-05-01</th>\n", | |
| " <td>5.0</td>\n", | |
| " <td>26.4</td>\n", | |
| " <td>60.0</td>\n", | |
| " <td>0.759</td>\n", | |
| " <td>13.175</td>\n", | |
| " <td>7.562450</td>\n", | |
| " <td>5.739900</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.304925</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-06-01</th>\n", | |
| " <td>6.0</td>\n", | |
| " <td>26.6</td>\n", | |
| " <td>63.6</td>\n", | |
| " <td>0.761</td>\n", | |
| " <td>12.500</td>\n", | |
| " <td>7.418000</td>\n", | |
| " <td>5.645098</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.233823</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-07-01</th>\n", | |
| " <td>7.0</td>\n", | |
| " <td>26.2</td>\n", | |
| " <td>60.9</td>\n", | |
| " <td>0.757</td>\n", | |
| " <td>12.800</td>\n", | |
| " <td>7.409408</td>\n", | |
| " <td>5.608922</td>\n", | |
| " <td>0.75</td>\n", | |
| " <td>4.206691</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-08-01</th>\n", | |
| " <td>8.0</td>\n", | |
| " <td>25.9</td>\n", | |
| " <td>57.3</td>\n", | |
| " <td>0.754</td>\n", | |
| " <td>13.775</td>\n", | |
| " <td>7.706010</td>\n", | |
| " <td>5.810332</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.648266</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-09-01</th>\n", | |
| " <td>9.0</td>\n", | |
| " <td>26.6</td>\n", | |
| " <td>61.8</td>\n", | |
| " <td>0.761</td>\n", | |
| " <td>14.925</td>\n", | |
| " <td>8.712021</td>\n", | |
| " <td>6.629848</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>5.303878</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-10-01</th>\n", | |
| " <td>10.0</td>\n", | |
| " <td>27.9</td>\n", | |
| " <td>65.5</td>\n", | |
| " <td>0.774</td>\n", | |
| " <td>15.775</td>\n", | |
| " <td>9.523368</td>\n", | |
| " <td>7.371086</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>5.896869</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-11-01</th>\n", | |
| " <td>11.0</td>\n", | |
| " <td>28.4</td>\n", | |
| " <td>61.8</td>\n", | |
| " <td>0.779</td>\n", | |
| " <td>15.950</td>\n", | |
| " <td>9.310334</td>\n", | |
| " <td>7.252750</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>5.802200</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-12-01</th>\n", | |
| " <td>12.0</td>\n", | |
| " <td>27.2</td>\n", | |
| " <td>47.3</td>\n", | |
| " <td>0.767</td>\n", | |
| " <td>15.925</td>\n", | |
| " <td>8.048813</td>\n", | |
| " <td>6.173440</td>\n", | |
| " <td>0.80</td>\n", | |
| " <td>4.938752</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Month Temp Sun W ... R_s ETo_x C ETo\n", | |
| "2001-01-01 1.0 25.4 41.8 0.749 ... 7.623413 5.709936 0.80 4.567949\n", | |
| "2001-02-01 2.0 25.7 41.8 0.752 ... 7.647199 5.750694 0.80 4.600555\n", | |
| "2001-03-01 3.0 26.1 53.6 0.756 ... 8.212974 6.209008 0.75 4.656756\n", | |
| "2001-04-01 4.0 26.9 49.1 0.764 ... 7.340745 5.608329 0.75 4.206247\n", | |
| "2001-05-01 5.0 26.4 60.0 0.759 ... 7.562450 5.739900 0.75 4.304925\n", | |
| "2001-06-01 6.0 26.6 63.6 0.761 ... 7.418000 5.645098 0.75 4.233823\n", | |
| "2001-07-01 7.0 26.2 60.9 0.757 ... 7.409408 5.608922 0.75 4.206691\n", | |
| "2001-08-01 8.0 25.9 57.3 0.754 ... 7.706010 5.810332 0.80 4.648266\n", | |
| "2001-09-01 9.0 26.6 61.8 0.761 ... 8.712021 6.629848 0.80 5.303878\n", | |
| "2001-10-01 10.0 27.9 65.5 0.774 ... 9.523368 7.371086 0.80 5.896869\n", | |
| "2001-11-01 11.0 28.4 61.8 0.779 ... 9.310334 7.252750 0.80 5.802200\n", | |
| "2001-12-01 12.0 27.2 47.3 0.767 ... 8.048813 6.173440 0.80 4.938752\n", | |
| "\n", | |
| "[12 rows x 9 columns]" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 14 | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "ABkJ4updfmbY", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "## Fungsi `ETo_Penman()`\n", | |
| "\n", | |
| "Selain argumen posisi `df` dan `lat`; argumen opsional `as_df` dan `report`, fungsi ini membutuhkan argumen:\n", | |
| "- `temp_col`: nama kolom suhu.\n", | |
| "- `sun_col`: nama kolom penyinaran matahari. \n", | |
| "- `humid_col`: nama kolom kelembaban.\n", | |
| "- `wind_col`: nama kolom kecepatan angin." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "O_oyJmosfoW6", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "sample_3 = pd.DataFrame({\n", | |
| " 'temp': [25.4, 25.7, 26.1, 26.9, 26.4, 26.6, 26.2, 25.9,\n", | |
| " 26.6, 27.9, 28.4, 27.2],\n", | |
| " 'humid': [76.6, 79.6, 74.4, 78.0, 79.1, 78.8, 79.6, 79.8,\n", | |
| " 77.4, 79.4, 77.2, 77.7],\n", | |
| " 'wind': [2.3, 1.8, 1.9, 2.0, 2.0, 2.4, 2.5, 3.0, 3.3, 3.0, 2.0, 2.4],\n", | |
| " 'sun': [41.8, 41.8, 53.6, 49.1, 60.0, 63.6, 60.9, 57.3, 61.8, \n", | |
| " 65.5, 61.8, 47.3]\n", | |
| "}, index=pd.date_range('20010101', periods=12, freq='MS'))" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "DEIP-9Pczwl6", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 421 | |
| }, | |
| "outputId": "9bbcebb5-63d3-4f3e-f5b3-b8b24978d137" | |
| }, | |
| "source": [ | |
| "ETo_Penman(df=sample_3, \n", | |
| " temp_col='temp', \n", | |
| " humid_col='humid', \n", | |
| " wind_col='wind', \n", | |
| " sun_col='sun', \n", | |
| " lat='7.5 LS', \n", | |
| " report='full')" | |
| ], | |
| "execution_count": 16, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>Month</th>\n", | |
| " <th>Temp</th>\n", | |
| " <th>Humidity</th>\n", | |
| " <th>Wind</th>\n", | |
| " <th>Sun</th>\n", | |
| " <th>e_g</th>\n", | |
| " <th>w</th>\n", | |
| " <th>f_t</th>\n", | |
| " <th>e_d</th>\n", | |
| " <th>f_e_d</th>\n", | |
| " <th>R_g</th>\n", | |
| " <th>R_s</th>\n", | |
| " <th>f_sun</th>\n", | |
| " <th>f_U</th>\n", | |
| " <th>R_n1</th>\n", | |
| " <th>C</th>\n", | |
| " <th>ETo_x</th>\n", | |
| " <th>ETo</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>2001-01-01</th>\n", | |
| " <td>1.0</td>\n", | |
| " <td>25.4</td>\n", | |
| " <td>76.6</td>\n", | |
| " <td>2.3</td>\n", | |
| " <td>41.8</td>\n", | |
| " <td>32.450</td>\n", | |
| " <td>0.749</td>\n", | |
| " <td>15.750</td>\n", | |
| " <td>24.85670</td>\n", | |
| " <td>0.120631</td>\n", | |
| " <td>16.025</td>\n", | |
| " <td>7.623413</td>\n", | |
| " <td>0.4762</td>\n", | |
| " <td>0.806544</td>\n", | |
| " <td>0.904754</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>5.141999</td>\n", | |
| " <td>5.656198</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-02-01</th>\n", | |
| " <td>2.0</td>\n", | |
| " <td>25.7</td>\n", | |
| " <td>79.6</td>\n", | |
| " <td>1.8</td>\n", | |
| " <td>41.8</td>\n", | |
| " <td>32.525</td>\n", | |
| " <td>0.752</td>\n", | |
| " <td>15.825</td>\n", | |
| " <td>25.88990</td>\n", | |
| " <td>0.116119</td>\n", | |
| " <td>16.075</td>\n", | |
| " <td>7.647199</td>\n", | |
| " <td>0.4762</td>\n", | |
| " <td>0.689904</td>\n", | |
| " <td>0.875055</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>4.790219</td>\n", | |
| " <td>5.269241</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-03-01</th>\n", | |
| " <td>3.0</td>\n", | |
| " <td>26.1</td>\n", | |
| " <td>74.4</td>\n", | |
| " <td>1.9</td>\n", | |
| " <td>53.6</td>\n", | |
| " <td>33.820</td>\n", | |
| " <td>0.756</td>\n", | |
| " <td>15.920</td>\n", | |
| " <td>25.16208</td>\n", | |
| " <td>0.119288</td>\n", | |
| " <td>15.225</td>\n", | |
| " <td>8.212974</td>\n", | |
| " <td>0.5824</td>\n", | |
| " <td>0.713232</td>\n", | |
| " <td>1.106015</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>5.327334</td>\n", | |
| " <td>5.860068</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-04-01</th>\n", | |
| " <td>4.0</td>\n", | |
| " <td>26.9</td>\n", | |
| " <td>78.0</td>\n", | |
| " <td>2.0</td>\n", | |
| " <td>49.1</td>\n", | |
| " <td>35.455</td>\n", | |
| " <td>0.764</td>\n", | |
| " <td>16.080</td>\n", | |
| " <td>27.65490</td>\n", | |
| " <td>0.108613</td>\n", | |
| " <td>14.250</td>\n", | |
| " <td>7.340745</td>\n", | |
| " <td>0.5419</td>\n", | |
| " <td>0.736560</td>\n", | |
| " <td>0.946428</td>\n", | |
| " <td>0.9</td>\n", | |
| " <td>4.839053</td>\n", | |
| " <td>4.355148</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-05-01</th>\n", | |
| " <td>5.0</td>\n", | |
| " <td>26.4</td>\n", | |
| " <td>79.1</td>\n", | |
| " <td>2.0</td>\n", | |
| " <td>60.0</td>\n", | |
| " <td>34.420</td>\n", | |
| " <td>0.759</td>\n", | |
| " <td>15.980</td>\n", | |
| " <td>27.22622</td>\n", | |
| " <td>0.110413</td>\n", | |
| " <td>13.175</td>\n", | |
| " <td>7.562450</td>\n", | |
| " <td>0.6400</td>\n", | |
| " <td>0.736560</td>\n", | |
| " <td>1.129221</td>\n", | |
| " <td>0.9</td>\n", | |
| " <td>4.724821</td>\n", | |
| " <td>4.252339</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-06-01</th>\n", | |
| " <td>6.0</td>\n", | |
| " <td>26.6</td>\n", | |
| " <td>78.8</td>\n", | |
| " <td>2.4</td>\n", | |
| " <td>63.6</td>\n", | |
| " <td>34.830</td>\n", | |
| " <td>0.761</td>\n", | |
| " <td>16.020</td>\n", | |
| " <td>27.44604</td>\n", | |
| " <td>0.109489</td>\n", | |
| " <td>12.500</td>\n", | |
| " <td>7.418000</td>\n", | |
| " <td>0.6724</td>\n", | |
| " <td>0.829872</td>\n", | |
| " <td>1.179394</td>\n", | |
| " <td>0.9</td>\n", | |
| " <td>4.800835</td>\n", | |
| " <td>4.320751</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-07-01</th>\n", | |
| " <td>7.0</td>\n", | |
| " <td>26.2</td>\n", | |
| " <td>79.6</td>\n", | |
| " <td>2.5</td>\n", | |
| " <td>60.9</td>\n", | |
| " <td>34.020</td>\n", | |
| " <td>0.757</td>\n", | |
| " <td>15.940</td>\n", | |
| " <td>27.07992</td>\n", | |
| " <td>0.111031</td>\n", | |
| " <td>12.800</td>\n", | |
| " <td>7.409408</td>\n", | |
| " <td>0.6481</td>\n", | |
| " <td>0.853200</td>\n", | |
| " <td>1.147031</td>\n", | |
| " <td>0.9</td>\n", | |
| " <td>4.777259</td>\n", | |
| " <td>4.299533</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-08-01</th>\n", | |
| " <td>8.0</td>\n", | |
| " <td>25.9</td>\n", | |
| " <td>79.8</td>\n", | |
| " <td>3.0</td>\n", | |
| " <td>57.3</td>\n", | |
| " <td>32.920</td>\n", | |
| " <td>0.754</td>\n", | |
| " <td>15.875</td>\n", | |
| " <td>26.27016</td>\n", | |
| " <td>0.114481</td>\n", | |
| " <td>13.775</td>\n", | |
| " <td>7.706010</td>\n", | |
| " <td>0.6157</td>\n", | |
| " <td>0.969840</td>\n", | |
| " <td>1.118960</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>5.100576</td>\n", | |
| " <td>5.610634</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-09-01</th>\n", | |
| " <td>9.0</td>\n", | |
| " <td>26.6</td>\n", | |
| " <td>77.4</td>\n", | |
| " <td>3.3</td>\n", | |
| " <td>61.8</td>\n", | |
| " <td>34.830</td>\n", | |
| " <td>0.761</td>\n", | |
| " <td>16.020</td>\n", | |
| " <td>26.95842</td>\n", | |
| " <td>0.111545</td>\n", | |
| " <td>14.925</td>\n", | |
| " <td>8.712021</td>\n", | |
| " <td>0.6562</td>\n", | |
| " <td>1.039824</td>\n", | |
| " <td>1.172601</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>6.036265</td>\n", | |
| " <td>6.639892</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-10-01</th>\n", | |
| " <td>10.0</td>\n", | |
| " <td>27.9</td>\n", | |
| " <td>79.4</td>\n", | |
| " <td>3.0</td>\n", | |
| " <td>65.5</td>\n", | |
| " <td>37.590</td>\n", | |
| " <td>0.774</td>\n", | |
| " <td>16.280</td>\n", | |
| " <td>29.84646</td>\n", | |
| " <td>0.099620</td>\n", | |
| " <td>15.775</td>\n", | |
| " <td>9.523368</td>\n", | |
| " <td>0.6895</td>\n", | |
| " <td>0.969840</td>\n", | |
| " <td>1.118236</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>6.360059</td>\n", | |
| " <td>6.996065</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-11-01</th>\n", | |
| " <td>11.0</td>\n", | |
| " <td>28.4</td>\n", | |
| " <td>77.2</td>\n", | |
| " <td>2.0</td>\n", | |
| " <td>61.8</td>\n", | |
| " <td>38.700</td>\n", | |
| " <td>0.779</td>\n", | |
| " <td>16.380</td>\n", | |
| " <td>29.87640</td>\n", | |
| " <td>0.099499</td>\n", | |
| " <td>15.950</td>\n", | |
| " <td>9.310334</td>\n", | |
| " <td>0.6562</td>\n", | |
| " <td>0.736560</td>\n", | |
| " <td>1.069471</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>6.042748</td>\n", | |
| " <td>6.647023</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2001-12-01</th>\n", | |
| " <td>12.0</td>\n", | |
| " <td>27.2</td>\n", | |
| " <td>77.7</td>\n", | |
| " <td>2.4</td>\n", | |
| " <td>47.3</td>\n", | |
| " <td>36.090</td>\n", | |
| " <td>0.767</td>\n", | |
| " <td>16.140</td>\n", | |
| " <td>28.04193</td>\n", | |
| " <td>0.107000</td>\n", | |
| " <td>15.925</td>\n", | |
| " <td>8.048813</td>\n", | |
| " <td>0.5257</td>\n", | |
| " <td>0.829872</td>\n", | |
| " <td>0.907870</td>\n", | |
| " <td>1.1</td>\n", | |
| " <td>5.489920</td>\n", | |
| " <td>6.038912</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Month Temp Humidity Wind ... R_n1 C ETo_x ETo\n", | |
| "2001-01-01 1.0 25.4 76.6 2.3 ... 0.904754 1.1 5.141999 5.656198\n", | |
| "2001-02-01 2.0 25.7 79.6 1.8 ... 0.875055 1.1 4.790219 5.269241\n", | |
| "2001-03-01 3.0 26.1 74.4 1.9 ... 1.106015 1.1 5.327334 5.860068\n", | |
| "2001-04-01 4.0 26.9 78.0 2.0 ... 0.946428 0.9 4.839053 4.355148\n", | |
| "2001-05-01 5.0 26.4 79.1 2.0 ... 1.129221 0.9 4.724821 4.252339\n", | |
| "2001-06-01 6.0 26.6 78.8 2.4 ... 1.179394 0.9 4.800835 4.320751\n", | |
| "2001-07-01 7.0 26.2 79.6 2.5 ... 1.147031 0.9 4.777259 4.299533\n", | |
| "2001-08-01 8.0 25.9 79.8 3.0 ... 1.118960 1.1 5.100576 5.610634\n", | |
| "2001-09-01 9.0 26.6 77.4 3.3 ... 1.172601 1.1 6.036265 6.639892\n", | |
| "2001-10-01 10.0 27.9 79.4 3.0 ... 1.118236 1.1 6.360059 6.996065\n", | |
| "2001-11-01 11.0 28.4 77.2 2.0 ... 1.069471 1.1 6.042748 6.647023\n", | |
| "2001-12-01 12.0 27.2 77.7 2.4 ... 0.907870 1.1 5.489920 6.038912\n", | |
| "\n", | |
| "[12 rows x 18 columns]" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 16 | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "jkDVjFnRz9f-", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# Changelog\n", | |
| "\n", | |
| "```\n", | |
| "- 20191223 - 1.0.0 - Initial\n", | |
| "```\n", | |
| "\n", | |
| "#### Copyright © 2019 [Taruma Sakti Megariansyah](https://taruma.github.io)\n", | |
| "\n", | |
| "Source code in this notebook is licensed under a [MIT License](https://choosealicense.com/licenses/mit/). Data in this notebook is licensed under a [Creative Common Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/). \n" | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment