Last active
April 13, 2024 04:57
-
-
Save taruma/b00880905f297013f046dad95dc2e284 to your computer and use it in GitHub Desktop.
taruma_hk73_bmkg.ipynb
This file contains 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_hk73_bmkg.ipynb", | |
"provenance": [], | |
"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/b00880905f297013f046dad95dc2e284/taruma_hk73_bmkg.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "C7uQLNtOfUqQ" | |
}, | |
"source": [ | |
"Berdasarkan isu [#73](https://github.com/taruma/hidrokit/issues/73): **request: mengolah berkas dari data bmkg**\n", | |
"\n", | |
"Deskripsi:\n", | |
"- mengolah berkas excel yang diperoleh dari data online bmkg untuk siap dipakai\n", | |
"- memeriksa kondisi data\n", | |
"\n", | |
"Fungsi yang diharapkan:\n", | |
"\n", | |
"__Umum / General__\n", | |
"- Memeriksa apakah data lengkap atau tidak? Jika tidak, data apa dan pada tanggal berapa?\n", | |
"- Memeriksa apakah data tidak ada data / tidak ada pengukuran (9999) atau data tidak diukur (8888)? Jika ada, data apa dan pada tanggal berapa?\n", | |
"- Menampilkan \"potongan\" baris yang tidak memiliki data / tidak melakukan pengukuran?\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "CAXMkTucfi5r" | |
}, | |
"source": [ | |
"# DATASET" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "BppR0eMif41Y" | |
}, | |
"source": [ | |
"# Upload berkas excel bmkg\n", | |
"FILE_NAME = \"data_bmkg_jawa_barat_96783_1975_2000_stasiun_geofisika_bandung.xlsx\"\n", | |
"DATASET_PATH = '/content/' + FILE_NAME" | |
], | |
"execution_count": 1, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "rzXF7v0BtnYq" | |
}, | |
"source": [ | |
"# FUNGSI" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"\"\"\"\n", | |
"This module provides functions for reading and analyzing\n", | |
" BMKG (Meteorology, Climatology, and Geophysics Agency) data.\n", | |
"\n", | |
"For more information, refer to the manual:\n", | |
" https://gist.github.com/taruma/b00880905f297013f046dad95dc2e284\n", | |
"\n", | |
"Functions:\n", | |
"- read_bmkg_excel(io): Read BMKG data from an Excel file.\n", | |
"- has_nan_values(dataframe): Check if the given dataset contains any NaN values.\n", | |
"- get_missing_data_indices(nan_indicator_vector): Get the indices of missing data\n", | |
" in the given nan_indicator_vector.\n", | |
"- get_nan_indices_by_column(dataframe): Get the indices of missing values (NaN)\n", | |
" for each column in a DataFrame.\n", | |
"- get_unrecorded_indices(dataframe): Get the indices of unrecorded data in the given dataframe.\n", | |
"- get_nan_indices_if_exists(dataframe): Returns the indices of NaN values\n", | |
" in the given dataframe if NaN values exist.\n", | |
"- get_columns_with_nan_values(dataframe): Get the columns with NaN values in the given dataframe.\n", | |
"- group_consecutive_elements(input_list): Groups consecutive elements in the input list.\n", | |
"- format_group_indices(group_list, indices=None, format_date=\"%Y%m%d\", date_range_format=\"{}-{}\"):\n", | |
" Formats the group indices based on the given parameters.\n", | |
"\n", | |
"Deprecated Functions:\n", | |
"- _read_bmkg(*args, **kwargs): Deprecated version of read_bmkg_excel.\n", | |
"- _have_nan(*args, **kwargs): Deprecated version of has_nan_values.\n", | |
"- _get_index1D(*args, **kwargs): Deprecated version of get_missing_data_indices.\n", | |
"- _get_nan(*args, **kwargs): Deprecated version of get_nan_indices_by_column.\n", | |
"- _get_missing(*args, **kwargs): Deprecated version of get_unrecorded_indices.\n", | |
"- _check_nan(*args, **kwargs): Deprecated version of get_nan_indices_if_exists.\n", | |
"- _get_nan_columns(*args, **kwargs): Deprecated version of get_columns_with_nan_values.\n", | |
"- _group_as_list(*args, **kwargs): Deprecated version of group_consecutive_elements.\n", | |
"- _group_as_index(group_list, index=None, date_format=\"%Y%m%d\", format_date=\"{}-{}\"):\n", | |
" Deprecated version of format_group_indices.\n", | |
"\"\"\"" | |
], | |
"metadata": { | |
"id": "PVXaK7BEqP93", | |
"outputId": "8bed83ae-5c67-479f-ab99-a56447765e2e", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 122 | |
} | |
}, | |
"execution_count": 2, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"'\\nThis module provides functions for reading and analyzing \\n BMKG (Meteorology, Climatology, and Geophysics Agency) data.\\n\\nFor more information, refer to the manual: \\n https://gist.github.com/taruma/b00880905f297013f046dad95dc2e284\\n\\nFunctions:\\n- read_bmkg_excel(io): Read BMKG data from an Excel file.\\n- has_nan_values(dataframe): Check if the given dataset contains any NaN values.\\n- get_missing_data_indices(nan_indicator_vector): Get the indices of missing data \\n in the given nan_indicator_vector.\\n- get_nan_indices_by_column(dataframe): Get the indices of missing values (NaN) \\n for each column in a DataFrame.\\n- get_unrecorded_indices(dataframe): Get the indices of unrecorded data in the given dataframe.\\n- get_nan_indices_if_exists(dataframe): Returns the indices of NaN values \\n in the given dataframe if NaN values exist.\\n- get_columns_with_nan_values(dataframe): Get the columns with NaN values in the given dataframe.\\n- group_consecutive_elements(input_list): Groups consecutive elements in the input list.\\n- format_group_indices(group_list, indices=None, format_date=\"%Y%m%d\", date_range_format=\"{}-{}\"): \\n Formats the group indices based on the given parameters.\\n\\nDeprecated Functions:\\n- _read_bmkg(*args, **kwargs): Deprecated version of read_bmkg_excel.\\n- _have_nan(*args, **kwargs): Deprecated version of has_nan_values.\\n- _get_index1D(*args, **kwargs): Deprecated version of get_missing_data_indices.\\n- _get_nan(*args, **kwargs): Deprecated version of get_nan_indices_by_column.\\n- _get_missing(*args, **kwargs): Deprecated version of get_unrecorded_indices.\\n- _check_nan(*args, **kwargs): Deprecated version of get_nan_indices_if_exists.\\n- _get_nan_columns(*args, **kwargs): Deprecated version of get_columns_with_nan_values.\\n- _group_as_list(*args, **kwargs): Deprecated version of group_consecutive_elements.\\n- _group_as_index(group_list, index=None, date_format=\"%Y%m%d\", format_date=\"{}-{}\"): \\n Deprecated version of format_group_indices.\\n'" | |
], | |
"application/vnd.google.colaboratory.intrinsic+json": { | |
"type": "string" | |
} | |
}, | |
"metadata": {}, | |
"execution_count": 2 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"import warnings\n", | |
"import functools\n", | |
"\n", | |
"\n", | |
"def deprecated(new_func_name):\n", | |
" \"\"\"\n", | |
" Decorator to mark a function as deprecated.\n", | |
"\n", | |
" Parameters:\n", | |
" - new_func_name (str): The name of the new function that should be used instead.\n", | |
"\n", | |
" Returns:\n", | |
" - wrapper (function): The decorated function.\n", | |
"\n", | |
" Example:\n", | |
" @deprecated(\"new_function\")\n", | |
" def old_function():\n", | |
" pass\n", | |
"\n", | |
" The above example will generate a warning when `old_function` is called,\n", | |
" suggesting to use `new_function` instead.\n", | |
" \"\"\"\n", | |
"\n", | |
" def decorator(func):\n", | |
" @functools.wraps(func)\n", | |
" def wrapper(*args, **kwargs):\n", | |
" warnings.warn(\n", | |
" f\"{func.__name__} is deprecated, use {new_func_name} instead\",\n", | |
" DeprecationWarning,\n", | |
" )\n", | |
" return func(*args, **kwargs)\n", | |
"\n", | |
" return wrapper\n", | |
"\n", | |
" return decorator" | |
], | |
"metadata": { | |
"id": "J7Ca2-JWji3I" | |
}, | |
"execution_count": 3, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "8MwMIU0bwEwK" | |
}, | |
"source": [ | |
"from itertools import groupby\n", | |
"from operator import itemgetter\n", | |
"from typing import List\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"\n", | |
"\n", | |
"def read_bmkg_excel(io):\n", | |
" \"\"\"\n", | |
" Read BMKG data from an Excel file.\n", | |
"\n", | |
" Parameters:\n", | |
" - io: str or file-like object\n", | |
" The file path or file-like object to read the Excel data from.\n", | |
"\n", | |
" Returns:\n", | |
" - pandas.DataFrame\n", | |
" The data read from the Excel file.\n", | |
"\n", | |
" \"\"\"\n", | |
" return pd.read_excel(\n", | |
" io,\n", | |
" skiprows=8,\n", | |
" skipfooter=16,\n", | |
" header=0,\n", | |
" index_col=0,\n", | |
" parse_dates=True,\n", | |
" date_format=\"%d-%m-%Y\",\n", | |
" )\n", | |
"\n", | |
"\n", | |
"def _has_nan_values(dataframe):\n", | |
" \"\"\"\n", | |
" Check if the given dataset contains any NaN values.\n", | |
"\n", | |
" Parameters:\n", | |
" dataframe (pandas.DataFrame): The dataset to check for NaN values.\n", | |
"\n", | |
" Returns:\n", | |
" bool: True if the dataset contains NaN values, False otherwise.\n", | |
" \"\"\"\n", | |
" return bool(dataframe.isna().any().any())\n", | |
"\n", | |
"\n", | |
"def _get_missing_data_indices(nan_indicator_vector):\n", | |
" \"\"\"\n", | |
" Get the indices of missing data in the given nan_indicator_vector.\n", | |
"\n", | |
" Parameters:\n", | |
" nan_indicator_vector (numpy.ndarray): A boolean array indicating missing data.\n", | |
"\n", | |
" Returns:\n", | |
" numpy.ndarray: An array of indices where missing data is present.\n", | |
" \"\"\"\n", | |
" return np.argwhere(nan_indicator_vector).reshape(\n", | |
" -1,\n", | |
" )\n", | |
"\n", | |
"\n", | |
"def _get_nan_indices_by_column(dataframe):\n", | |
" \"\"\"\n", | |
" Get the indices of missing values (NaN) for each column in a DataFrame.\n", | |
"\n", | |
" Parameters:\n", | |
" dataframe (pandas.DataFrame): The input DataFrame.\n", | |
"\n", | |
" Returns:\n", | |
" dict: A dictionary where the keys are the column names and the values are lists of indices\n", | |
" where missing values occur in each column.\n", | |
" \"\"\"\n", | |
" nan = {}\n", | |
" for col in dataframe.columns:\n", | |
" nan[col] = _get_missing_data_indices(dataframe[col].isna().values).tolist()\n", | |
" return nan\n", | |
"\n", | |
"\n", | |
"def _get_unrecorded_indices(dataframe):\n", | |
" \"\"\"\n", | |
" Get the indices of unrecorded data in the given dataframe.\n", | |
"\n", | |
" Parameters:\n", | |
" dataframe (pandas.DataFrame): The input dataframe.\n", | |
"\n", | |
" Returns:\n", | |
" dict: A dictionary where the keys are the column names and the values are\n", | |
" the indices of unrecorded data in each column.\n", | |
" \"\"\"\n", | |
" unrecorded_indices = {}\n", | |
"\n", | |
" for col in dataframe.columns:\n", | |
" masking = (dataframe[col] == 8888) | (dataframe[col] == 9999)\n", | |
" unrecorded_indices[col] = _get_missing_data_indices(masking.values)\n", | |
"\n", | |
" return unrecorded_indices\n", | |
"\n", | |
"\n", | |
"def _get_nan_indices_if_exists(dataframe):\n", | |
" \"\"\"\n", | |
" Returns the indices of NaN values in the given dataframe if NaN values exist.\n", | |
"\n", | |
" Parameters:\n", | |
" dataframe (pandas.DataFrame): The input dataframe.\n", | |
"\n", | |
" Returns:\n", | |
" dict or None: A dictionary with keys as column names and values as lists of\n", | |
" indices where missing values occur, or None if no NaN values exist.\n", | |
" \"\"\"\n", | |
" if _has_nan_values(dataframe):\n", | |
" return _get_nan_indices_by_column(dataframe)\n", | |
" else:\n", | |
" return None\n", | |
"\n", | |
"\n", | |
"def _get_columns_with_nan_values(dataframe):\n", | |
" return dataframe.columns[dataframe.isna().any()].tolist()\n", | |
"\n", | |
"\n", | |
"def _group_consecutive_elements(input_list: List) -> List[List]:\n", | |
" \"\"\"\n", | |
" Groups consecutive elements in the input list.\n", | |
"\n", | |
" Args:\n", | |
" input_list (List): The list of elements to be grouped.\n", | |
"\n", | |
" Returns:\n", | |
" List[List]: A list of lists, where each inner list contains consecutive elements\n", | |
" from the input list.\n", | |
"\n", | |
" Example:\n", | |
" >>> input_list = [1, 2, 3, 5, 6, 8, 9]\n", | |
" >>> _group_consecutive_elements(input_list)\n", | |
" [[1, 2, 3], [5, 6], [8, 9]]\n", | |
" \"\"\"\n", | |
" # based on https://stackoverflow.com/a/15276206\n", | |
" group_list = []\n", | |
" for _, g in groupby(enumerate(input_list), lambda x: x[0] - x[1]):\n", | |
" single_list = sorted(list(map(itemgetter(1), g)))\n", | |
" group_list.append(single_list)\n", | |
" return group_list\n", | |
"\n", | |
"\n", | |
"def _format_group_indices(\n", | |
" group_list, indices=None, format_date=\"%Y%m%d\", date_range_format=\"{}-{}\"\n", | |
"):\n", | |
" \"\"\"\n", | |
" Formats the group indices based on the given parameters.\n", | |
"\n", | |
" Args:\n", | |
" group_list (list): The list of groups.\n", | |
" indices (pd.Index or pd.DatetimeIndex, optional): The indices to format. Defaults to None.\n", | |
" format_date (str, optional): The date format string. Defaults to \"%Y%m%d\".\n", | |
" date_range_format (str, optional): The format string for date ranges. Defaults to \"{}-{}\".\n", | |
"\n", | |
" Returns:\n", | |
" list: The formatted group indices.\n", | |
" \"\"\"\n", | |
" formatted_indices = []\n", | |
" is_date_index = isinstance(indices, pd.DatetimeIndex)\n", | |
"\n", | |
" for item in group_list:\n", | |
" if len(item) == 1:\n", | |
" if is_date_index:\n", | |
" formatted_indices.append(indices[item[0]].strftime(format_date))\n", | |
" else:\n", | |
" formatted_indices.append(indices[item[0]])\n", | |
" else:\n", | |
" if is_date_index:\n", | |
" formatted_indices.append(\n", | |
" date_range_format.format(\n", | |
" indices[item[0]].strftime(format_date),\n", | |
" indices[item[-1]].strftime(format_date),\n", | |
" )\n", | |
" )\n", | |
" else:\n", | |
" formatted_indices.append(\n", | |
" date_range_format.format(indices[item[0]], indices[item[-1]])\n", | |
" )\n", | |
"\n", | |
" return formatted_indices\n", | |
"\n", | |
"\n", | |
"# for backward compatibility\n", | |
"@deprecated(\"read_bmkg_excel\")\n", | |
"def _read_bmkg(*args, **kwargs):\n", | |
" return read_bmkg_excel(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_has_nan_values\")\n", | |
"def _have_nan(*args, **kwargs):\n", | |
" return _has_nan_values(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_get_missing_data_indices\")\n", | |
"def _get_index1D(*args, **kwargs):\n", | |
" return _get_missing_data_indices(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_get_nan_indices_by_column\")\n", | |
"def _get_nan(*args, **kwargs):\n", | |
" return _get_nan_indices_by_column(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_get_unrecorded_indices\")\n", | |
"def _get_missing(*args, **kwargs):\n", | |
" return _get_unrecorded_indices(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_get_nan_indices_if_exists\")\n", | |
"def _check_nan(*args, **kwargs):\n", | |
" return _get_nan_indices_if_exists(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_get_columns_with_nan_values\")\n", | |
"def _get_nan_columns(*args, **kwargs):\n", | |
" return _get_columns_with_nan_values(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_group_consecutive_elements\")\n", | |
"def _group_as_list(*args, **kwargs):\n", | |
" return _group_consecutive_elements(*args, **kwargs)\n", | |
"\n", | |
"\n", | |
"@deprecated(\"_format_group_indices\")\n", | |
"def _group_as_index(\n", | |
" group_list, index=None, date_format=\"%Y%m%d\", format_date=\"{}-{}\"\n", | |
"):\n", | |
" return _format_group_indices(\n", | |
" group_list,\n", | |
" indices=index,\n", | |
" format_date=date_format,\n", | |
" date_range_format=format_date,\n", | |
" )\n" | |
], | |
"execution_count": 4, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "zdCnFSrSgN-p" | |
}, | |
"source": [ | |
"# PENGGUNAAN" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XvkIulXMenWc" | |
}, | |
"source": [ | |
"## Fungsi `_read_bmkg`\n", | |
"\n", | |
"Tujuan: Impor berkas excel bmkg ke dataframe" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Y_x0pjyAgQZ8", | |
"outputId": "996a165b-bdde-4bc4-ffd5-d4ff9da95ceb", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 272 | |
} | |
}, | |
"source": [ | |
"dataset = _read_bmkg(DATASET_PATH)\n", | |
"dataset.head()" | |
], | |
"execution_count": 5, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _read_bmkg is deprecated, use read_bmkg_excel instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
" Tn Tx Tavg RH_avg RR ss ff_x ddd_x ff_avg ddd_car\n", | |
"Tanggal \n", | |
"1975-01-01 20.0 28.8 23.4 76.0 0.0 7.5 NaN NaN NaN NaN\n", | |
"1975-01-02 19.0 28.6 23.7 72.0 0.0 3.3 NaN NaN NaN NaN\n", | |
"1975-01-03 20.0 28.9 23.3 78.0 0.0 5.1 NaN NaN NaN NaN\n", | |
"1975-01-04 21.0 30.0 23.7 82.0 0.0 5.7 NaN NaN NaN NaN\n", | |
"1975-01-05 19.0 28.8 22.2 86.0 8.0 3.1 NaN NaN NaN NaN" | |
], | |
"text/html": [ | |
"\n", | |
" <div id=\"df-5f0d15b8-4684-429c-a6b6-0c4d9e35a8dd\" class=\"colab-df-container\">\n", | |
" <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>Tn</th>\n", | |
" <th>Tx</th>\n", | |
" <th>Tavg</th>\n", | |
" <th>RH_avg</th>\n", | |
" <th>RR</th>\n", | |
" <th>ss</th>\n", | |
" <th>ff_x</th>\n", | |
" <th>ddd_x</th>\n", | |
" <th>ff_avg</th>\n", | |
" <th>ddd_car</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Tanggal</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>1975-01-01</th>\n", | |
" <td>20.0</td>\n", | |
" <td>28.8</td>\n", | |
" <td>23.4</td>\n", | |
" <td>76.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>7.5</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-01-02</th>\n", | |
" <td>19.0</td>\n", | |
" <td>28.6</td>\n", | |
" <td>23.7</td>\n", | |
" <td>72.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>3.3</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-01-03</th>\n", | |
" <td>20.0</td>\n", | |
" <td>28.9</td>\n", | |
" <td>23.3</td>\n", | |
" <td>78.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>5.1</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-01-04</th>\n", | |
" <td>21.0</td>\n", | |
" <td>30.0</td>\n", | |
" <td>23.7</td>\n", | |
" <td>82.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>5.7</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-01-05</th>\n", | |
" <td>19.0</td>\n", | |
" <td>28.8</td>\n", | |
" <td>22.2</td>\n", | |
" <td>86.0</td>\n", | |
" <td>8.0</td>\n", | |
" <td>3.1</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>\n", | |
" <div class=\"colab-df-buttons\">\n", | |
"\n", | |
" <div class=\"colab-df-container\">\n", | |
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-5f0d15b8-4684-429c-a6b6-0c4d9e35a8dd')\"\n", | |
" title=\"Convert this dataframe to an interactive table.\"\n", | |
" style=\"display:none;\">\n", | |
"\n", | |
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n", | |
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n", | |
" </svg>\n", | |
" </button>\n", | |
"\n", | |
" <style>\n", | |
" .colab-df-container {\n", | |
" display:flex;\n", | |
" gap: 12px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-convert {\n", | |
" background-color: #E8F0FE;\n", | |
" border: none;\n", | |
" border-radius: 50%;\n", | |
" cursor: pointer;\n", | |
" display: none;\n", | |
" fill: #1967D2;\n", | |
" height: 32px;\n", | |
" padding: 0 0 0 0;\n", | |
" width: 32px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-convert:hover {\n", | |
" background-color: #E2EBFA;\n", | |
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n", | |
" fill: #174EA6;\n", | |
" }\n", | |
"\n", | |
" .colab-df-buttons div {\n", | |
" margin-bottom: 4px;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-convert {\n", | |
" background-color: #3B4455;\n", | |
" fill: #D2E3FC;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-convert:hover {\n", | |
" background-color: #434B5C;\n", | |
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n", | |
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n", | |
" fill: #FFFFFF;\n", | |
" }\n", | |
" </style>\n", | |
"\n", | |
" <script>\n", | |
" const buttonEl =\n", | |
" document.querySelector('#df-5f0d15b8-4684-429c-a6b6-0c4d9e35a8dd button.colab-df-convert');\n", | |
" buttonEl.style.display =\n", | |
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n", | |
"\n", | |
" async function convertToInteractive(key) {\n", | |
" const element = document.querySelector('#df-5f0d15b8-4684-429c-a6b6-0c4d9e35a8dd');\n", | |
" const dataTable =\n", | |
" await google.colab.kernel.invokeFunction('convertToInteractive',\n", | |
" [key], {});\n", | |
" if (!dataTable) return;\n", | |
"\n", | |
" const docLinkHtml = 'Like what you see? Visit the ' +\n", | |
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n", | |
" + ' to learn more about interactive tables.';\n", | |
" element.innerHTML = '';\n", | |
" dataTable['output_type'] = 'display_data';\n", | |
" await google.colab.output.renderOutput(dataTable, element);\n", | |
" const docLink = document.createElement('div');\n", | |
" docLink.innerHTML = docLinkHtml;\n", | |
" element.appendChild(docLink);\n", | |
" }\n", | |
" </script>\n", | |
" </div>\n", | |
"\n", | |
"\n", | |
"<div id=\"df-ccf7d95c-d0da-4732-9eaf-47f8d80c7b05\">\n", | |
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ccf7d95c-d0da-4732-9eaf-47f8d80c7b05')\"\n", | |
" title=\"Suggest charts\"\n", | |
" style=\"display:none;\">\n", | |
"\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n", | |
" width=\"24px\">\n", | |
" <g>\n", | |
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n", | |
" </g>\n", | |
"</svg>\n", | |
" </button>\n", | |
"\n", | |
"<style>\n", | |
" .colab-df-quickchart {\n", | |
" --bg-color: #E8F0FE;\n", | |
" --fill-color: #1967D2;\n", | |
" --hover-bg-color: #E2EBFA;\n", | |
" --hover-fill-color: #174EA6;\n", | |
" --disabled-fill-color: #AAA;\n", | |
" --disabled-bg-color: #DDD;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-quickchart {\n", | |
" --bg-color: #3B4455;\n", | |
" --fill-color: #D2E3FC;\n", | |
" --hover-bg-color: #434B5C;\n", | |
" --hover-fill-color: #FFFFFF;\n", | |
" --disabled-bg-color: #3B4455;\n", | |
" --disabled-fill-color: #666;\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart {\n", | |
" background-color: var(--bg-color);\n", | |
" border: none;\n", | |
" border-radius: 50%;\n", | |
" cursor: pointer;\n", | |
" display: none;\n", | |
" fill: var(--fill-color);\n", | |
" height: 32px;\n", | |
" padding: 0;\n", | |
" width: 32px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart:hover {\n", | |
" background-color: var(--hover-bg-color);\n", | |
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n", | |
" fill: var(--button-hover-fill-color);\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart-complete:disabled,\n", | |
" .colab-df-quickchart-complete:disabled:hover {\n", | |
" background-color: var(--disabled-bg-color);\n", | |
" fill: var(--disabled-fill-color);\n", | |
" box-shadow: none;\n", | |
" }\n", | |
"\n", | |
" .colab-df-spinner {\n", | |
" border: 2px solid var(--fill-color);\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" animation:\n", | |
" spin 1s steps(1) infinite;\n", | |
" }\n", | |
"\n", | |
" @keyframes spin {\n", | |
" 0% {\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" border-left-color: var(--fill-color);\n", | |
" }\n", | |
" 20% {\n", | |
" border-color: transparent;\n", | |
" border-left-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" }\n", | |
" 30% {\n", | |
" border-color: transparent;\n", | |
" border-left-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" border-right-color: var(--fill-color);\n", | |
" }\n", | |
" 40% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" }\n", | |
" 60% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" }\n", | |
" 80% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" }\n", | |
" 90% {\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" }\n", | |
" }\n", | |
"</style>\n", | |
"\n", | |
" <script>\n", | |
" async function quickchart(key) {\n", | |
" const quickchartButtonEl =\n", | |
" document.querySelector('#' + key + ' button');\n", | |
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n", | |
" quickchartButtonEl.classList.add('colab-df-spinner');\n", | |
" try {\n", | |
" const charts = await google.colab.kernel.invokeFunction(\n", | |
" 'suggestCharts', [key], {});\n", | |
" } catch (error) {\n", | |
" console.error('Error during call to suggestCharts:', error);\n", | |
" }\n", | |
" quickchartButtonEl.classList.remove('colab-df-spinner');\n", | |
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n", | |
" }\n", | |
" (() => {\n", | |
" let quickchartButtonEl =\n", | |
" document.querySelector('#df-ccf7d95c-d0da-4732-9eaf-47f8d80c7b05 button');\n", | |
" quickchartButtonEl.style.display =\n", | |
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n", | |
" })();\n", | |
" </script>\n", | |
"</div>\n", | |
" </div>\n", | |
" </div>\n" | |
], | |
"application/vnd.google.colaboratory.intrinsic+json": { | |
"type": "dataframe", | |
"variable_name": "dataset", | |
"summary": "{\n \"name\": \"dataset\",\n \"rows\": 9497,\n \"fields\": [\n {\n \"column\": \"Tanggal\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"1975-01-01 00:00:00\",\n \"max\": \"2000-12-31 00:00:00\",\n \"num_unique_values\": 9497,\n \"samples\": [\n \"1979-02-22 00:00:00\",\n \"1998-03-12 00:00:00\",\n \"1986-02-07 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.4858238194831097,\n \"min\": 11.0,\n \"max\": 27.0,\n \"num_unique_values\": 15,\n \"samples\": [\n 25.0,\n 22.0,\n 20.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tx\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.454382948790635,\n \"min\": 16.0,\n \"max\": 34.2,\n \"num_unique_values\": 112,\n \"samples\": [\n 29.0,\n 23.0,\n 26.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tavg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.9191089152951978,\n \"min\": 17.8,\n \"max\": 28.2,\n \"num_unique_values\": 76,\n \"samples\": [\n 21.9,\n 21.4,\n 24.1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"RH_avg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.631941314135817,\n \"min\": 44.0,\n \"max\": 96.0,\n \"num_unique_values\": 51,\n \"samples\": [\n 44.0,\n 96.0,\n 47.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"RR\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1777.728251958913,\n \"min\": 0.0,\n \"max\": 8888.0,\n \"num_unique_values\": 443,\n \"samples\": [\n 29.5,\n 1.1,\n 39.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ss\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.199949675862862,\n \"min\": 0.0,\n \"max\": 8.0,\n \"num_unique_values\": 81,\n \"samples\": [\n 1.1,\n 7.5,\n 4.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ff_x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.3764084491523396,\n \"min\": 0.0,\n \"max\": 44.0,\n \"num_unique_values\": 14,\n \"samples\": [\n 10.0,\n 0.0,\n 4.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ddd_x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 104.14385919761148,\n \"min\": 0.0,\n \"max\": 360.0,\n \"num_unique_values\": 11,\n \"samples\": [\n 315.0,\n 22.0,\n 45.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ff_avg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.0996532687360956,\n \"min\": 0.0,\n \"max\": 11.0,\n \"num_unique_values\": 9,\n \"samples\": [\n 8.0,\n 0.0,\n 11.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ddd_car\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 8,\n \"samples\": [\n \"N \",\n \"NW\",\n \"W \"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" | |
} | |
}, | |
"metadata": {}, | |
"execution_count": 5 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "3PJwY1ODe5XS", | |
"outputId": "53ad85f3-0d3e-44a5-cc7e-74dd78b8dda0", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 238 | |
} | |
}, | |
"source": [ | |
"dataset.tail()" | |
], | |
"execution_count": 6, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
" Tn Tx Tavg RH_avg RR ss ff_x ddd_x ff_avg ddd_car\n", | |
"Tanggal \n", | |
"2000-12-27 19.0 28.6 22.9 79.0 8.8 3.3 3.0 270.0 3.0 W \n", | |
"2000-12-28 19.0 30.2 23.3 78.0 3.1 5.2 3.0 270.0 3.0 W \n", | |
"2000-12-29 19.0 29.8 23.3 76.0 0.0 6.0 3.0 270.0 3.0 W \n", | |
"2000-12-30 21.0 28.4 23.8 77.0 0.0 2.2 0.0 0.0 0.0 N \n", | |
"2000-12-31 20.0 29.2 22.6 82.0 9.6 5.4 3.0 360.0 3.0 N " | |
], | |
"text/html": [ | |
"\n", | |
" <div id=\"df-5aefbac1-1133-43f1-94c7-d8c2e6685b65\" class=\"colab-df-container\">\n", | |
" <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>Tn</th>\n", | |
" <th>Tx</th>\n", | |
" <th>Tavg</th>\n", | |
" <th>RH_avg</th>\n", | |
" <th>RR</th>\n", | |
" <th>ss</th>\n", | |
" <th>ff_x</th>\n", | |
" <th>ddd_x</th>\n", | |
" <th>ff_avg</th>\n", | |
" <th>ddd_car</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Tanggal</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2000-12-27</th>\n", | |
" <td>19.0</td>\n", | |
" <td>28.6</td>\n", | |
" <td>22.9</td>\n", | |
" <td>79.0</td>\n", | |
" <td>8.8</td>\n", | |
" <td>3.3</td>\n", | |
" <td>3.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-28</th>\n", | |
" <td>19.0</td>\n", | |
" <td>30.2</td>\n", | |
" <td>23.3</td>\n", | |
" <td>78.0</td>\n", | |
" <td>3.1</td>\n", | |
" <td>5.2</td>\n", | |
" <td>3.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-29</th>\n", | |
" <td>19.0</td>\n", | |
" <td>29.8</td>\n", | |
" <td>23.3</td>\n", | |
" <td>76.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>6.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-30</th>\n", | |
" <td>21.0</td>\n", | |
" <td>28.4</td>\n", | |
" <td>23.8</td>\n", | |
" <td>77.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>2.2</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>N</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-31</th>\n", | |
" <td>20.0</td>\n", | |
" <td>29.2</td>\n", | |
" <td>22.6</td>\n", | |
" <td>82.0</td>\n", | |
" <td>9.6</td>\n", | |
" <td>5.4</td>\n", | |
" <td>3.0</td>\n", | |
" <td>360.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>N</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>\n", | |
" <div class=\"colab-df-buttons\">\n", | |
"\n", | |
" <div class=\"colab-df-container\">\n", | |
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-5aefbac1-1133-43f1-94c7-d8c2e6685b65')\"\n", | |
" title=\"Convert this dataframe to an interactive table.\"\n", | |
" style=\"display:none;\">\n", | |
"\n", | |
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n", | |
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n", | |
" </svg>\n", | |
" </button>\n", | |
"\n", | |
" <style>\n", | |
" .colab-df-container {\n", | |
" display:flex;\n", | |
" gap: 12px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-convert {\n", | |
" background-color: #E8F0FE;\n", | |
" border: none;\n", | |
" border-radius: 50%;\n", | |
" cursor: pointer;\n", | |
" display: none;\n", | |
" fill: #1967D2;\n", | |
" height: 32px;\n", | |
" padding: 0 0 0 0;\n", | |
" width: 32px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-convert:hover {\n", | |
" background-color: #E2EBFA;\n", | |
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n", | |
" fill: #174EA6;\n", | |
" }\n", | |
"\n", | |
" .colab-df-buttons div {\n", | |
" margin-bottom: 4px;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-convert {\n", | |
" background-color: #3B4455;\n", | |
" fill: #D2E3FC;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-convert:hover {\n", | |
" background-color: #434B5C;\n", | |
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n", | |
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n", | |
" fill: #FFFFFF;\n", | |
" }\n", | |
" </style>\n", | |
"\n", | |
" <script>\n", | |
" const buttonEl =\n", | |
" document.querySelector('#df-5aefbac1-1133-43f1-94c7-d8c2e6685b65 button.colab-df-convert');\n", | |
" buttonEl.style.display =\n", | |
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n", | |
"\n", | |
" async function convertToInteractive(key) {\n", | |
" const element = document.querySelector('#df-5aefbac1-1133-43f1-94c7-d8c2e6685b65');\n", | |
" const dataTable =\n", | |
" await google.colab.kernel.invokeFunction('convertToInteractive',\n", | |
" [key], {});\n", | |
" if (!dataTable) return;\n", | |
"\n", | |
" const docLinkHtml = 'Like what you see? Visit the ' +\n", | |
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n", | |
" + ' to learn more about interactive tables.';\n", | |
" element.innerHTML = '';\n", | |
" dataTable['output_type'] = 'display_data';\n", | |
" await google.colab.output.renderOutput(dataTable, element);\n", | |
" const docLink = document.createElement('div');\n", | |
" docLink.innerHTML = docLinkHtml;\n", | |
" element.appendChild(docLink);\n", | |
" }\n", | |
" </script>\n", | |
" </div>\n", | |
"\n", | |
"\n", | |
"<div id=\"df-f5e16650-0030-4d23-89c4-fd413caa1e87\">\n", | |
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f5e16650-0030-4d23-89c4-fd413caa1e87')\"\n", | |
" title=\"Suggest charts\"\n", | |
" style=\"display:none;\">\n", | |
"\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n", | |
" width=\"24px\">\n", | |
" <g>\n", | |
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n", | |
" </g>\n", | |
"</svg>\n", | |
" </button>\n", | |
"\n", | |
"<style>\n", | |
" .colab-df-quickchart {\n", | |
" --bg-color: #E8F0FE;\n", | |
" --fill-color: #1967D2;\n", | |
" --hover-bg-color: #E2EBFA;\n", | |
" --hover-fill-color: #174EA6;\n", | |
" --disabled-fill-color: #AAA;\n", | |
" --disabled-bg-color: #DDD;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-quickchart {\n", | |
" --bg-color: #3B4455;\n", | |
" --fill-color: #D2E3FC;\n", | |
" --hover-bg-color: #434B5C;\n", | |
" --hover-fill-color: #FFFFFF;\n", | |
" --disabled-bg-color: #3B4455;\n", | |
" --disabled-fill-color: #666;\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart {\n", | |
" background-color: var(--bg-color);\n", | |
" border: none;\n", | |
" border-radius: 50%;\n", | |
" cursor: pointer;\n", | |
" display: none;\n", | |
" fill: var(--fill-color);\n", | |
" height: 32px;\n", | |
" padding: 0;\n", | |
" width: 32px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart:hover {\n", | |
" background-color: var(--hover-bg-color);\n", | |
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n", | |
" fill: var(--button-hover-fill-color);\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart-complete:disabled,\n", | |
" .colab-df-quickchart-complete:disabled:hover {\n", | |
" background-color: var(--disabled-bg-color);\n", | |
" fill: var(--disabled-fill-color);\n", | |
" box-shadow: none;\n", | |
" }\n", | |
"\n", | |
" .colab-df-spinner {\n", | |
" border: 2px solid var(--fill-color);\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" animation:\n", | |
" spin 1s steps(1) infinite;\n", | |
" }\n", | |
"\n", | |
" @keyframes spin {\n", | |
" 0% {\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" border-left-color: var(--fill-color);\n", | |
" }\n", | |
" 20% {\n", | |
" border-color: transparent;\n", | |
" border-left-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" }\n", | |
" 30% {\n", | |
" border-color: transparent;\n", | |
" border-left-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" border-right-color: var(--fill-color);\n", | |
" }\n", | |
" 40% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" }\n", | |
" 60% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" }\n", | |
" 80% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" }\n", | |
" 90% {\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" }\n", | |
" }\n", | |
"</style>\n", | |
"\n", | |
" <script>\n", | |
" async function quickchart(key) {\n", | |
" const quickchartButtonEl =\n", | |
" document.querySelector('#' + key + ' button');\n", | |
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n", | |
" quickchartButtonEl.classList.add('colab-df-spinner');\n", | |
" try {\n", | |
" const charts = await google.colab.kernel.invokeFunction(\n", | |
" 'suggestCharts', [key], {});\n", | |
" } catch (error) {\n", | |
" console.error('Error during call to suggestCharts:', error);\n", | |
" }\n", | |
" quickchartButtonEl.classList.remove('colab-df-spinner');\n", | |
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n", | |
" }\n", | |
" (() => {\n", | |
" let quickchartButtonEl =\n", | |
" document.querySelector('#df-f5e16650-0030-4d23-89c4-fd413caa1e87 button');\n", | |
" quickchartButtonEl.style.display =\n", | |
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n", | |
" })();\n", | |
" </script>\n", | |
"</div>\n", | |
" </div>\n", | |
" </div>\n" | |
], | |
"application/vnd.google.colaboratory.intrinsic+json": { | |
"type": "dataframe", | |
"summary": "{\n \"name\": \"dataset\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"Tanggal\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2000-12-27 00:00:00\",\n \"max\": \"2000-12-31 00:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2000-12-28 00:00:00\",\n \"2000-12-31 00:00:00\",\n \"2000-12-29 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.8944271909999159,\n \"min\": 19.0,\n \"max\": 21.0,\n \"num_unique_values\": 3,\n \"samples\": [\n 19.0,\n 21.0,\n 20.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tx\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.7668115805072325,\n \"min\": 28.4,\n \"max\": 30.2,\n \"num_unique_values\": 5,\n \"samples\": [\n 30.2,\n 29.2,\n 29.8\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tavg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4549725266430931,\n \"min\": 22.6,\n \"max\": 23.8,\n \"num_unique_values\": 4,\n \"samples\": [\n 23.3,\n 22.6,\n 22.9\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"RH_avg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.3021728866442674,\n \"min\": 76.0,\n \"max\": 82.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 78.0,\n 82.0,\n 76.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"RR\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4.657252408878008,\n \"min\": 0.0,\n \"max\": 9.6,\n \"num_unique_values\": 4,\n \"samples\": [\n 3.1,\n 9.6,\n 8.8\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ss\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.600624877977348,\n \"min\": 2.2,\n \"max\": 6.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 5.2,\n 5.4,\n 6.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ff_x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.3416407864998738,\n \"min\": 0.0,\n \"max\": 3.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.0,\n 3.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ddd_x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 136.49175799292792,\n \"min\": 0.0,\n \"max\": 360.0,\n \"num_unique_values\": 3,\n \"samples\": [\n 270.0,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ff_avg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.3416407864998738,\n \"min\": 0.0,\n \"max\": 3.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.0,\n 3.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ddd_car\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"N \",\n \"W \"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" | |
} | |
}, | |
"metadata": {}, | |
"execution_count": 6 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "qY3RdEtXe885" | |
}, | |
"source": [ | |
"## Fungsi `_have_nan()`\n", | |
"\n", | |
"Tujuan: Memeriksa apakah di dalam tabel memiliki nilai yang hilang (np.nan)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "6zmDPDupfG7x", | |
"outputId": "25128f17-3834-41cf-9532-ddd7ffbe4b21", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_have_nan(dataset)" | |
], | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _have_nan is deprecated, use _has_nan_values instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"True" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 7 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "xcj4-4--f8P7" | |
}, | |
"source": [ | |
"## Fungsi `_get_index1D()`\n", | |
"\n", | |
"Tujuan: Memperoleh index data yang hilang untuk setiap array" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "wHdn_BWdgEZc", | |
"outputId": "0949ceab-7359-4271-9d71-124a2e2aac3a", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_get_index1D(dataset['RH_avg'].isna().values)" | |
], | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_index1D is deprecated, use _get_missing_data_indices instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([ 781, 962, 990, 991, 1010, 1117, 1236, 1264, 2831, 2835, 2839,\n", | |
" 2860, 3255, 3346, 3568, 4977, 5028, 5368, 5706, 5786, 5791, 5961,\n", | |
" 5962, 6059, 6122, 6131, 6350, 7212, 7217, 8283, 8289, 8290, 8291,\n", | |
" 8297, 8304, 8320, 8321, 8322, 8325, 8326, 8328, 8329, 8332, 8338,\n", | |
" 8339, 8340, 8405, 8565])" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 8 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XXFJxVfqfJ8N" | |
}, | |
"source": [ | |
"## Fungsi `_get_nan()`\n", | |
"\n", | |
"Tujuan: Memperoleh index data yang hilang untuk setiap kolom dalam bentuk `dictionary`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "7RrL9iG0fT9P", | |
"outputId": "d6c8ef24-c68c-48de-faa3-0f54505211a2", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_get_nan(dataset).keys()" | |
], | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_nan is deprecated, use _get_nan_indices_by_column instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict_keys(['Tn', 'Tx', 'Tavg', 'RH_avg', 'RR', 'ss', 'ff_x', 'ddd_x', 'ff_avg', 'ddd_car'])" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 9 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "tJG-IJ_8fYVF", | |
"outputId": "bcc9c8dc-fb14-47ee-ac7d-43358876387f", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"print(_get_nan(dataset)['RH_avg'])" | |
], | |
"execution_count": 10, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"[781, 962, 990, 991, 1010, 1117, 1236, 1264, 2831, 2835, 2839, 2860, 3255, 3346, 3568, 4977, 5028, 5368, 5706, 5786, 5791, 5961, 5962, 6059, 6122, 6131, 6350, 7212, 7217, 8283, 8289, 8290, 8291, 8297, 8304, 8320, 8321, 8322, 8325, 8326, 8328, 8329, 8332, 8338, 8339, 8340, 8405, 8565]\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_nan is deprecated, use _get_nan_indices_by_column instead\n", | |
" warnings.warn(\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "vAW_kMxEh_6N" | |
}, | |
"source": [ | |
"## Fungsi `_get_nan_columns()`\n", | |
"\n", | |
"Tujuan: Memperoleh nama kolom yang memiliki nilai yang hilang `NaN`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "V-sHtOb1h_aT", | |
"outputId": "83d2183c-a41a-4ee9-d578-352484ff0f88", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_get_nan_columns(dataset)" | |
], | |
"execution_count": 11, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_nan_columns is deprecated, use _get_columns_with_nan_values instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"['Tn', 'Tavg', 'RH_avg', 'ss', 'ff_x', 'ddd_x', 'ff_avg', 'ddd_car']" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 11 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "L09Uw9DcfkjG" | |
}, | |
"source": [ | |
"## Fungsi `_check_nan()`\n", | |
"\n", | |
"Tujuan: Gabungan dari `_have_nan()` dan `_get_nan()`. Memeriksa apakah dataset memiliki `NaN`, jika iya, memberikan nilai hasil `_get_nan()`, jika tidak memberikan nilai `None`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "yE2uLd0shma4", | |
"outputId": "a5443c09-1626-4069-874f-5a3311c47d79", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_check_nan(dataset).items()" | |
], | |
"execution_count": 12, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _check_nan is deprecated, use _get_nan_indices_if_exists instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"dict_items([('Tn', [3255, 3256, 3470, 4876, 4877, 4878, 5521, 5522, 5523, 5524, 5525, 5526, 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5548, 5549, 5550, 5551, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6418, 6419, 6420, 6421, 6422, 6423, 6424, 6425, 6426, 6427, 6428, 6429, 6430, 6431, 6432, 6433, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 6444, 6445, 6446, 6447, 6448, 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6459, 6460, 6461, 6462, 6463, 6464, 6465, 6466, 6467, 6468, 6469, 6470, 6471, 6472, 6473, 6474, 6475, 6476, 6477, 6478, 6479, 6480, 6481, 6482, 6483, 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, 6497, 6498, 6499, 6500, 6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509, 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6522, 6523, 6524, 6525, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, 6534, 6535, 6536, 6537, 6538, 6539, 6540, 6541, 6542, 6543, 6544, 6545, 6546, 6547, 6548, 6549, 6550, 6551, 6552, 6553, 6554, 6555, 6556, 6557, 6558, 6559, 6560, 6561, 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585, 6586, 6587]), ('Tx', []), ('Tavg', [781, 962, 1117, 1236, 1264, 4977, 8565]), ('RH_avg', [781, 962, 990, 991, 1010, 1117, 1236, 1264, 2831, 2835, 2839, 2860, 3255, 3346, 3568, 4977, 5028, 5368, 5706, 5786, 5791, 5961, 5962, 6059, 6122, 6131, 6350, 7212, 7217, 8283, 8289, 8290, 8291, 8297, 8304, 8320, 8321, 8322, 8325, 8326, 8328, 8329, 8332, 8338, 8339, 8340, 8405, 8565]), ('RR', []), ('ss', [1103, 1296, 1520, 1526, 1815, 2461, 2512, 2518, 2521, 2551, 2570, 2571, 2580, 2602, 2682, 2683, 2711, 2732, 2733, 2794, 2797, 2817, 2820, 2844, 2920, 2921, 2939, 2943, 2947, 2948, 2999, 3055, 3069, 3121, 3166, 3224, 3247, 3248, 3304, 3309, 3353, 3419, 3423, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3527, 3528, 3529, 3530, 3584, 3588, 3600, 3614, 3626, 3633, 3634, 3635, 3697, 3713, 3714, 3735, 3977, 4037, 4048, 4059, 4180, 4207, 4269, 4277, 4299, 4383, 4407, 4421, 4531, 4536, 4730, 4734, 4771, 4909, 4917, 4973, 5036, 5043, 5099, 5118, 5143, 5313, 5415, 5461, 5483, 5501, 5614, 5863, 5871, 5877, 5878, 5892, 5897, 5950, 5951, 5971, 6155, 6185, 6188, 6207, 6229, 6232, 6254, 6322, 6323, 6363, 6389, 6603, 6604, 6758, 6892, 6912, 6955, 6960, 6961, 6986, 7020, 7021, 7022, 7098, 7120, 7235, 7277, 7278, 7289, 7308, 7318, 7368, 7427, 7475, 7634, 7651, 7670, 7673, 7674, 7675, 7685, 7708, 7762, 7774, 7833, 7963, 7997, 8006, 8017, 8018, 8057, 8058, 8069, 8091, 8139, 8148, 8524, 8667, 8671, 8692, 8698, 8706, 8733, 8766, 8767, 8791, 8792, 8798, 8891, 8896, 8899, 8923, 8931, 9008, 9068, 9077, 9112, 9116, 9124, 9125, 9148, 9156, 9157, 9285, 9300, 9303, 9420, 9421, 9431, 9436, 9437, 9460]), ('ff_x', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 3561, 3713, 4208, 4502, 5569]), ('ddd_x', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 3530, 3561, 3834, 3835, 3836, 3837, 3838, 3839, 3840, 3841, 3842, 3843, 3844, 3845, 3846, 3847, 3848, 3849, 3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857, 3858, 3859, 3860, 3861, 3862, 3863, 3864, 4502, 5569, 7513, 7744, 7748, 7759, 8418]), ('ff_avg', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 3145, 4502, 5569]), ('ddd_car', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 2922, 3145, 3530, 4502, 7056, 7309, 7432, 7435, 7439, 7454, 7455, 7462, 7482, 7483, 7484, 7513, 7559, 7566, 7573, 7578, 7579, 7585, 7587, 7593, 7597, 7609, 7611, 7614, 7615, 7622, 7634, 7682, 7744, 7748, 7759, 7767, 7779, 7800, 7806, 7896, 7904, 7906, 7919, 7922, 7979, 8109, 8156, 8233, 8238, 8279, 8281, 8282, 8300, 8305, 8320, 8324, 8348, 8358, 8410, 8432, 8439, 8499, 8576, 8643, 8998, 9000, 9011, 9013, 9014, 9030, 9034, 9052, 9223, 9313])])" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 12 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "66nIQJcLhviR", | |
"outputId": "bd151b4e-74bc-4ede-bdae-79270ed7c6c0", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"# Jika tidak memiliki nilai nan\n", | |
"print(_check_nan(dataset.drop(_get_nan_columns(dataset), axis=1)))" | |
], | |
"execution_count": 13, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"None\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_nan_columns is deprecated, use _get_columns_with_nan_values instead\n", | |
" warnings.warn(\n", | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _check_nan is deprecated, use _get_nan_indices_if_exists instead\n", | |
" warnings.warn(\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "TwvE5jb6iPQp" | |
}, | |
"source": [ | |
"## Fungsi `_group_as_list()`\n", | |
"\n", | |
"Tujuan: Mengelompokkan kelompok array yang bersifat kontinu (nilainya berurutan) dalam masing-masing list.\n", | |
"\n", | |
"Referensi: https://stackoverflow.com/a/15276206 (dimodifikasi untuk Python 3.x dan kemudahan membaca)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "YrEFvgtri0UO", | |
"outputId": "d925ff68-f944-457c-ecd5-52d426861321", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"missing_dict = _get_nan(dataset)\n", | |
"missing_RH_avg = missing_dict['RH_avg']\n", | |
"print(missing_RH_avg)" | |
], | |
"execution_count": 14, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"[781, 962, 990, 991, 1010, 1117, 1236, 1264, 2831, 2835, 2839, 2860, 3255, 3346, 3568, 4977, 5028, 5368, 5706, 5786, 5791, 5961, 5962, 6059, 6122, 6131, 6350, 7212, 7217, 8283, 8289, 8290, 8291, 8297, 8304, 8320, 8321, 8322, 8325, 8326, 8328, 8329, 8332, 8338, 8339, 8340, 8405, 8565]\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_nan is deprecated, use _get_nan_indices_by_column instead\n", | |
" warnings.warn(\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "KHstC8RfjG1H", | |
"outputId": "48f9447e-8423-45a4-a9e4-814ca0c35ef8", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"print(_group_as_list(missing_RH_avg))" | |
], | |
"execution_count": 15, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"[[781], [962], [990, 991], [1010], [1117], [1236], [1264], [2831], [2835], [2839], [2860], [3255], [3346], [3568], [4977], [5028], [5368], [5706], [5786], [5791], [5961, 5962], [6059], [6122], [6131], [6350], [7212], [7217], [8283], [8289, 8290, 8291], [8297], [8304], [8320, 8321, 8322], [8325, 8326], [8328, 8329], [8332], [8338, 8339, 8340], [8405], [8565]]\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _group_as_list is deprecated, use _group_consecutive_elements instead\n", | |
" warnings.warn(\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "5Ui1dYZwhFQn" | |
}, | |
"source": [ | |
"## Fungsi `_group_as_index()`\n", | |
"\n", | |
"Tujuan: Mengubah hasil pengelompokkan menjadi jenis index dataset (dalam kasus ini dalam bentuk tanggal dibandingkan dalam bentuk angka-index dataset)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Lab87rO_jaUJ", | |
"outputId": "8c246961-1150-4a04-ae8c-33c9565023a8", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_group_as_index(_group_as_list(missing_RH_avg), index=dataset.index, date_format='%d %b %Y')" | |
], | |
"execution_count": 16, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _group_as_list is deprecated, use _group_consecutive_elements instead\n", | |
" warnings.warn(\n", | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _group_as_index is deprecated, use _format_group_indices instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"['20 Feb 1977',\n", | |
" '20 Aug 1977',\n", | |
" '17 Sep 1977-18 Sep 1977',\n", | |
" '07 Oct 1977',\n", | |
" '22 Jan 1978',\n", | |
" '21 May 1978',\n", | |
" '18 Jun 1978',\n", | |
" '02 Oct 1982',\n", | |
" '06 Oct 1982',\n", | |
" '10 Oct 1982',\n", | |
" '31 Oct 1982',\n", | |
" '30 Nov 1983',\n", | |
" '29 Feb 1984',\n", | |
" '08 Oct 1984',\n", | |
" '17 Aug 1988',\n", | |
" '07 Oct 1988',\n", | |
" '12 Sep 1989',\n", | |
" '16 Aug 1990',\n", | |
" '04 Nov 1990',\n", | |
" '09 Nov 1990',\n", | |
" '28 Apr 1991-29 Apr 1991',\n", | |
" '04 Aug 1991',\n", | |
" '06 Oct 1991',\n", | |
" '15 Oct 1991',\n", | |
" '21 May 1992',\n", | |
" '30 Sep 1994',\n", | |
" '05 Oct 1994',\n", | |
" '05 Sep 1997',\n", | |
" '11 Sep 1997-13 Sep 1997',\n", | |
" '19 Sep 1997',\n", | |
" '26 Sep 1997',\n", | |
" '12 Oct 1997-14 Oct 1997',\n", | |
" '17 Oct 1997-18 Oct 1997',\n", | |
" '20 Oct 1997-21 Oct 1997',\n", | |
" '24 Oct 1997',\n", | |
" '30 Oct 1997-01 Nov 1997',\n", | |
" '05 Jan 1998',\n", | |
" '14 Jun 1998']" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 16 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "8rZUej-Bl-Rd" | |
}, | |
"source": [ | |
"## Fungsi `_get_missing()`\n", | |
"\n", | |
"Tujuan: Memperoleh index yang memiliki nilai tidak terukur (bernilai `8888` atau `9999`) untuk setiap kolomnya" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "rwNiOYjSl9wE", | |
"outputId": "39b49fe8-2006-4659-b8f3-35c73a3ecbfb", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_get_missing(dataset)" | |
], | |
"execution_count": 17, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_missing is deprecated, use _get_unrecorded_indices instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"{'Tn': array([], dtype=int64),\n", | |
" 'Tx': array([], dtype=int64),\n", | |
" 'Tavg': array([], dtype=int64),\n", | |
" 'RH_avg': array([], dtype=int64),\n", | |
" 'RR': array([ 29, 32, 33, 35, 47, 57, 60, 69, 98, 113, 124,\n", | |
" 135, 138, 163, 164, 199, 227, 276, 310, 336, 338, 349,\n", | |
" 360, 387, 427, 436, 465, 467, 479, 491, 512, 514, 517,\n", | |
" 552, 603, 692, 700, 702, 744, 754, 756, 760, 765, 779,\n", | |
" 799, 858, 897, 912, 974, 1019, 1058, 1107, 1108, 1132, 1150,\n", | |
" 1179, 1199, 1202, 1214, 1216, 1227, 1237, 1246, 1247, 1258, 1306,\n", | |
" 1379, 1407, 1410, 1412, 1440, 1459, 1478, 1522, 1532, 1545, 1588,\n", | |
" 1613, 1675, 1809, 1827, 1828, 1830, 1832, 1834, 1853, 1854, 1856,\n", | |
" 1859, 1867, 1869, 1871, 1876, 1885, 1905, 1906, 1909, 1913, 1928,\n", | |
" 1929, 1966, 1978, 1996, 2024, 2031, 2043, 2045, 2054, 2071, 2075,\n", | |
" 2086, 2087, 2100, 2130, 2177, 2189, 2194, 2227, 2231, 2235, 2253,\n", | |
" 2271, 2275, 2278, 2295, 2313, 2322, 2323, 2337, 2340, 2341, 2349,\n", | |
" 2356, 2367, 2377, 2379, 2388, 2401, 2410, 2423, 2442, 2443, 2453,\n", | |
" 2456, 2462, 2549, 2550, 2578, 2582, 2583, 2595, 2682, 2708, 2743,\n", | |
" 2759, 2762, 2771, 2785, 2818, 2872, 2931, 2995, 2999, 3028, 3033,\n", | |
" 3070, 3071, 3213, 3290, 3296, 3336, 3356, 3472, 3473, 3477, 3495,\n", | |
" 3501, 3510, 3521, 3568, 3583, 3608, 3637, 3638, 3652, 3665, 3668,\n", | |
" 3729, 3740, 3755, 3765, 3772, 3786, 3792, 3804, 3826, 3833, 3854,\n", | |
" 3895, 3943, 3965, 3975, 4018, 4031, 4043, 4080, 4148, 4160, 4172,\n", | |
" 4173, 4182, 4331, 4333, 4389, 4418, 4468, 4483, 4496, 4672, 4733,\n", | |
" 4741, 4775, 4782, 4832, 4852, 4875, 4928, 4973, 5062, 5064, 5082,\n", | |
" 5086, 5135, 5262, 5265, 5280, 5320, 5349, 5350, 5397, 5538, 5574,\n", | |
" 5694, 5718, 5805, 5809, 5822, 5849, 5858, 5869, 5904, 5915, 5927,\n", | |
" 5934, 5949, 5965, 6133, 6139, 6173, 6196, 6205, 6207, 6251, 6259,\n", | |
" 6309, 6313, 6356, 6370, 6484, 6514, 6515, 6516, 6547, 6595, 6606,\n", | |
" 6608, 6620, 6676, 6688, 6692, 6700, 6770, 6880, 6924, 6926, 6935,\n", | |
" 6946, 7052, 7208, 7263, 7276, 7283, 7294, 7315, 7326, 7336, 7351,\n", | |
" 7367, 7375, 7406, 7415, 7417, 7429, 7430, 7549, 7567, 7638, 7646,\n", | |
" 7663, 7779, 7809, 7833, 7894, 7915, 8015, 8028, 8031, 8040, 8044,\n", | |
" 8057, 8063, 8087, 8090, 8091, 8092, 8147, 8150, 8177, 8185, 8191,\n", | |
" 8199, 8200, 8208, 8220, 8255, 8277, 8350, 8351, 8360, 8383, 8388,\n", | |
" 8390, 8413, 8454, 8457, 8459, 8486, 8488, 8496, 8501, 8503, 8514,\n", | |
" 8519, 8539, 8548, 8565, 8572, 8603, 8611, 8641, 8650, 8701, 8727,\n", | |
" 8784, 8798, 8804, 8805, 8807, 8826, 8882, 8923, 8974, 9002, 9081,\n", | |
" 9114, 9127, 9149, 9153, 9155, 9171, 9193, 9201, 9230, 9302, 9308,\n", | |
" 9312, 9348, 9374, 9398, 9404, 9415, 9442, 9461, 9462, 9476, 9481,\n", | |
" 9482]),\n", | |
" 'ss': array([], dtype=int64),\n", | |
" 'ff_x': array([], dtype=int64),\n", | |
" 'ddd_x': array([], dtype=int64),\n", | |
" 'ff_avg': array([], dtype=int64),\n", | |
" 'ddd_car': array([], dtype=int64)}" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 17 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "DGRLHHnFj3b_" | |
}, | |
"source": [ | |
"# Penerapan" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "7kzIN8r_mb1Q" | |
}, | |
"source": [ | |
"## Menampilkan index yang bermasalah\n", | |
"\n", | |
"Tujuan: Setelah memperoleh index dari hasil `_get_missing()` atau `_get_nan()`, bisa menampilkan potongan index tersebut dalam dataframe." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "qAk3dPyHOYk2", | |
"outputId": "8841c973-ecee-4d25-f756-99a5357af3d9", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 490 | |
} | |
}, | |
"source": [ | |
"dataset.iloc[_get_missing(dataset)['RR']]" | |
], | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_missing is deprecated, use _get_unrecorded_indices instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
" Tn Tx Tavg RH_avg RR ss ff_x ddd_x ff_avg ddd_car\n", | |
"Tanggal \n", | |
"1975-01-30 20.0 28.0 23.0 89.0 8888.0 4.3 NaN NaN NaN NaN\n", | |
"1975-02-02 20.0 26.6 23.0 86.0 8888.0 0.5 NaN NaN NaN NaN\n", | |
"1975-02-03 20.0 27.9 23.0 84.0 8888.0 3.8 NaN NaN NaN NaN\n", | |
"1975-02-05 19.0 27.6 22.7 84.0 8888.0 2.9 NaN NaN NaN NaN\n", | |
"1975-02-17 19.0 24.8 21.9 86.0 8888.0 0.7 NaN NaN NaN NaN\n", | |
"... ... ... ... ... ... ... ... ... ... ...\n", | |
"2000-11-26 21.0 25.0 22.6 84.0 8888.0 0.1 3.0 270.0 2.0 W \n", | |
"2000-11-27 20.0 29.0 23.3 80.0 8888.0 4.4 5.0 270.0 3.0 W \n", | |
"2000-12-11 21.0 29.4 24.3 77.0 8888.0 4.0 4.0 270.0 3.0 W \n", | |
"2000-12-16 20.0 29.4 23.8 72.0 8888.0 4.9 5.0 270.0 3.0 W \n", | |
"2000-12-17 19.0 28.2 23.7 79.0 8888.0 4.9 5.0 270.0 3.0 W \n", | |
"\n", | |
"[397 rows x 10 columns]" | |
], | |
"text/html": [ | |
"\n", | |
" <div id=\"df-f0f7d355-7af7-4c7a-b0cb-59f5f3a46eff\" class=\"colab-df-container\">\n", | |
" <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>Tn</th>\n", | |
" <th>Tx</th>\n", | |
" <th>Tavg</th>\n", | |
" <th>RH_avg</th>\n", | |
" <th>RR</th>\n", | |
" <th>ss</th>\n", | |
" <th>ff_x</th>\n", | |
" <th>ddd_x</th>\n", | |
" <th>ff_avg</th>\n", | |
" <th>ddd_car</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Tanggal</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>1975-01-30</th>\n", | |
" <td>20.0</td>\n", | |
" <td>28.0</td>\n", | |
" <td>23.0</td>\n", | |
" <td>89.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>4.3</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-02-02</th>\n", | |
" <td>20.0</td>\n", | |
" <td>26.6</td>\n", | |
" <td>23.0</td>\n", | |
" <td>86.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>0.5</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-02-03</th>\n", | |
" <td>20.0</td>\n", | |
" <td>27.9</td>\n", | |
" <td>23.0</td>\n", | |
" <td>84.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>3.8</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-02-05</th>\n", | |
" <td>19.0</td>\n", | |
" <td>27.6</td>\n", | |
" <td>22.7</td>\n", | |
" <td>84.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>2.9</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1975-02-17</th>\n", | |
" <td>19.0</td>\n", | |
" <td>24.8</td>\n", | |
" <td>21.9</td>\n", | |
" <td>86.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>0.7</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>...</th>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-11-26</th>\n", | |
" <td>21.0</td>\n", | |
" <td>25.0</td>\n", | |
" <td>22.6</td>\n", | |
" <td>84.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>0.1</td>\n", | |
" <td>3.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-11-27</th>\n", | |
" <td>20.0</td>\n", | |
" <td>29.0</td>\n", | |
" <td>23.3</td>\n", | |
" <td>80.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>4.4</td>\n", | |
" <td>5.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-11</th>\n", | |
" <td>21.0</td>\n", | |
" <td>29.4</td>\n", | |
" <td>24.3</td>\n", | |
" <td>77.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>4.0</td>\n", | |
" <td>4.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-16</th>\n", | |
" <td>20.0</td>\n", | |
" <td>29.4</td>\n", | |
" <td>23.8</td>\n", | |
" <td>72.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>4.9</td>\n", | |
" <td>5.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2000-12-17</th>\n", | |
" <td>19.0</td>\n", | |
" <td>28.2</td>\n", | |
" <td>23.7</td>\n", | |
" <td>79.0</td>\n", | |
" <td>8888.0</td>\n", | |
" <td>4.9</td>\n", | |
" <td>5.0</td>\n", | |
" <td>270.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>W</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>397 rows × 10 columns</p>\n", | |
"</div>\n", | |
" <div class=\"colab-df-buttons\">\n", | |
"\n", | |
" <div class=\"colab-df-container\">\n", | |
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f0f7d355-7af7-4c7a-b0cb-59f5f3a46eff')\"\n", | |
" title=\"Convert this dataframe to an interactive table.\"\n", | |
" style=\"display:none;\">\n", | |
"\n", | |
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n", | |
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n", | |
" </svg>\n", | |
" </button>\n", | |
"\n", | |
" <style>\n", | |
" .colab-df-container {\n", | |
" display:flex;\n", | |
" gap: 12px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-convert {\n", | |
" background-color: #E8F0FE;\n", | |
" border: none;\n", | |
" border-radius: 50%;\n", | |
" cursor: pointer;\n", | |
" display: none;\n", | |
" fill: #1967D2;\n", | |
" height: 32px;\n", | |
" padding: 0 0 0 0;\n", | |
" width: 32px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-convert:hover {\n", | |
" background-color: #E2EBFA;\n", | |
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n", | |
" fill: #174EA6;\n", | |
" }\n", | |
"\n", | |
" .colab-df-buttons div {\n", | |
" margin-bottom: 4px;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-convert {\n", | |
" background-color: #3B4455;\n", | |
" fill: #D2E3FC;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-convert:hover {\n", | |
" background-color: #434B5C;\n", | |
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n", | |
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n", | |
" fill: #FFFFFF;\n", | |
" }\n", | |
" </style>\n", | |
"\n", | |
" <script>\n", | |
" const buttonEl =\n", | |
" document.querySelector('#df-f0f7d355-7af7-4c7a-b0cb-59f5f3a46eff button.colab-df-convert');\n", | |
" buttonEl.style.display =\n", | |
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n", | |
"\n", | |
" async function convertToInteractive(key) {\n", | |
" const element = document.querySelector('#df-f0f7d355-7af7-4c7a-b0cb-59f5f3a46eff');\n", | |
" const dataTable =\n", | |
" await google.colab.kernel.invokeFunction('convertToInteractive',\n", | |
" [key], {});\n", | |
" if (!dataTable) return;\n", | |
"\n", | |
" const docLinkHtml = 'Like what you see? Visit the ' +\n", | |
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n", | |
" + ' to learn more about interactive tables.';\n", | |
" element.innerHTML = '';\n", | |
" dataTable['output_type'] = 'display_data';\n", | |
" await google.colab.output.renderOutput(dataTable, element);\n", | |
" const docLink = document.createElement('div');\n", | |
" docLink.innerHTML = docLinkHtml;\n", | |
" element.appendChild(docLink);\n", | |
" }\n", | |
" </script>\n", | |
" </div>\n", | |
"\n", | |
"\n", | |
"<div id=\"df-d599fccb-e615-4bd6-9fc7-b640d6230f0d\">\n", | |
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-d599fccb-e615-4bd6-9fc7-b640d6230f0d')\"\n", | |
" title=\"Suggest charts\"\n", | |
" style=\"display:none;\">\n", | |
"\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n", | |
" width=\"24px\">\n", | |
" <g>\n", | |
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n", | |
" </g>\n", | |
"</svg>\n", | |
" </button>\n", | |
"\n", | |
"<style>\n", | |
" .colab-df-quickchart {\n", | |
" --bg-color: #E8F0FE;\n", | |
" --fill-color: #1967D2;\n", | |
" --hover-bg-color: #E2EBFA;\n", | |
" --hover-fill-color: #174EA6;\n", | |
" --disabled-fill-color: #AAA;\n", | |
" --disabled-bg-color: #DDD;\n", | |
" }\n", | |
"\n", | |
" [theme=dark] .colab-df-quickchart {\n", | |
" --bg-color: #3B4455;\n", | |
" --fill-color: #D2E3FC;\n", | |
" --hover-bg-color: #434B5C;\n", | |
" --hover-fill-color: #FFFFFF;\n", | |
" --disabled-bg-color: #3B4455;\n", | |
" --disabled-fill-color: #666;\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart {\n", | |
" background-color: var(--bg-color);\n", | |
" border: none;\n", | |
" border-radius: 50%;\n", | |
" cursor: pointer;\n", | |
" display: none;\n", | |
" fill: var(--fill-color);\n", | |
" height: 32px;\n", | |
" padding: 0;\n", | |
" width: 32px;\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart:hover {\n", | |
" background-color: var(--hover-bg-color);\n", | |
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n", | |
" fill: var(--button-hover-fill-color);\n", | |
" }\n", | |
"\n", | |
" .colab-df-quickchart-complete:disabled,\n", | |
" .colab-df-quickchart-complete:disabled:hover {\n", | |
" background-color: var(--disabled-bg-color);\n", | |
" fill: var(--disabled-fill-color);\n", | |
" box-shadow: none;\n", | |
" }\n", | |
"\n", | |
" .colab-df-spinner {\n", | |
" border: 2px solid var(--fill-color);\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" animation:\n", | |
" spin 1s steps(1) infinite;\n", | |
" }\n", | |
"\n", | |
" @keyframes spin {\n", | |
" 0% {\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" border-left-color: var(--fill-color);\n", | |
" }\n", | |
" 20% {\n", | |
" border-color: transparent;\n", | |
" border-left-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" }\n", | |
" 30% {\n", | |
" border-color: transparent;\n", | |
" border-left-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" border-right-color: var(--fill-color);\n", | |
" }\n", | |
" 40% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" border-top-color: var(--fill-color);\n", | |
" }\n", | |
" 60% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" }\n", | |
" 80% {\n", | |
" border-color: transparent;\n", | |
" border-right-color: var(--fill-color);\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" }\n", | |
" 90% {\n", | |
" border-color: transparent;\n", | |
" border-bottom-color: var(--fill-color);\n", | |
" }\n", | |
" }\n", | |
"</style>\n", | |
"\n", | |
" <script>\n", | |
" async function quickchart(key) {\n", | |
" const quickchartButtonEl =\n", | |
" document.querySelector('#' + key + ' button');\n", | |
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n", | |
" quickchartButtonEl.classList.add('colab-df-spinner');\n", | |
" try {\n", | |
" const charts = await google.colab.kernel.invokeFunction(\n", | |
" 'suggestCharts', [key], {});\n", | |
" } catch (error) {\n", | |
" console.error('Error during call to suggestCharts:', error);\n", | |
" }\n", | |
" quickchartButtonEl.classList.remove('colab-df-spinner');\n", | |
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n", | |
" }\n", | |
" (() => {\n", | |
" let quickchartButtonEl =\n", | |
" document.querySelector('#df-d599fccb-e615-4bd6-9fc7-b640d6230f0d button');\n", | |
" quickchartButtonEl.style.display =\n", | |
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n", | |
" })();\n", | |
" </script>\n", | |
"</div>\n", | |
" </div>\n", | |
" </div>\n" | |
], | |
"application/vnd.google.colaboratory.intrinsic+json": { | |
"type": "dataframe", | |
"summary": "{\n \"name\": \"dataset\",\n \"rows\": 397,\n \"fields\": [\n {\n \"column\": \"Tanggal\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"1975-01-30 00:00:00\",\n \"max\": \"2000-12-17 00:00:00\",\n \"num_unique_values\": 397,\n \"samples\": [\n \"1980-12-17 00:00:00\",\n \"1993-04-24 00:00:00\",\n \"1989-08-24 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tn\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.3514928366078944,\n \"min\": 13.0,\n \"max\": 22.0,\n \"num_unique_values\": 10,\n \"samples\": [\n 13.0,\n 19.0,\n 16.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tx\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.564603788141466,\n \"min\": 16.0,\n \"max\": 32.6,\n \"num_unique_values\": 69,\n \"samples\": [\n 27.1,\n 28.0,\n 29.1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Tavg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.845311648836912,\n \"min\": 20.4,\n \"max\": 25.7,\n \"num_unique_values\": 41,\n \"samples\": [\n 23.8,\n 23.5,\n 22.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"RH_avg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.253278263801212,\n \"min\": 56.0,\n \"max\": 95.0,\n \"num_unique_values\": 34,\n \"samples\": [\n 81.0,\n 91.0,\n 90.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"RR\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 8888.0,\n \"max\": 8888.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 8888.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ss\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.191180638991747,\n \"min\": 0.0,\n \"max\": 8.0,\n \"num_unique_values\": 79,\n \"samples\": [\n 5.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ff_x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.4935572024046992,\n \"min\": 0.0,\n \"max\": 13.0,\n \"num_unique_values\": 9,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ddd_x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 105.67132331634998,\n \"min\": 0.0,\n \"max\": 360.0,\n \"num_unique_values\": 9,\n \"samples\": [\n 180.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ff_avg\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.1323560570509896,\n \"min\": 0.0,\n \"max\": 6.0,\n \"num_unique_values\": 6,\n \"samples\": [\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ddd_car\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"W \"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" | |
} | |
}, | |
"metadata": {}, | |
"execution_count": 18 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "1QSK1QI3nAK9", | |
"outputId": "428b681f-58c2-4648-c6cb-0b3e3f0864e7", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_group_as_list(_get_missing(dataset)['RR'])" | |
], | |
"execution_count": 19, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _get_missing is deprecated, use _get_unrecorded_indices instead\n", | |
" warnings.warn(\n", | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _group_as_list is deprecated, use _group_consecutive_elements instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"[[29],\n", | |
" [32, 33],\n", | |
" [35],\n", | |
" [47],\n", | |
" [57],\n", | |
" [60],\n", | |
" [69],\n", | |
" [98],\n", | |
" [113],\n", | |
" [124],\n", | |
" [135],\n", | |
" [138],\n", | |
" [163, 164],\n", | |
" [199],\n", | |
" [227],\n", | |
" [276],\n", | |
" [310],\n", | |
" [336],\n", | |
" [338],\n", | |
" [349],\n", | |
" [360],\n", | |
" [387],\n", | |
" [427],\n", | |
" [436],\n", | |
" [465],\n", | |
" [467],\n", | |
" [479],\n", | |
" [491],\n", | |
" [512],\n", | |
" [514],\n", | |
" [517],\n", | |
" [552],\n", | |
" [603],\n", | |
" [692],\n", | |
" [700],\n", | |
" [702],\n", | |
" [744],\n", | |
" [754],\n", | |
" [756],\n", | |
" [760],\n", | |
" [765],\n", | |
" [779],\n", | |
" [799],\n", | |
" [858],\n", | |
" [897],\n", | |
" [912],\n", | |
" [974],\n", | |
" [1019],\n", | |
" [1058],\n", | |
" [1107, 1108],\n", | |
" [1132],\n", | |
" [1150],\n", | |
" [1179],\n", | |
" [1199],\n", | |
" [1202],\n", | |
" [1214],\n", | |
" [1216],\n", | |
" [1227],\n", | |
" [1237],\n", | |
" [1246, 1247],\n", | |
" [1258],\n", | |
" [1306],\n", | |
" [1379],\n", | |
" [1407],\n", | |
" [1410],\n", | |
" [1412],\n", | |
" [1440],\n", | |
" [1459],\n", | |
" [1478],\n", | |
" [1522],\n", | |
" [1532],\n", | |
" [1545],\n", | |
" [1588],\n", | |
" [1613],\n", | |
" [1675],\n", | |
" [1809],\n", | |
" [1827, 1828],\n", | |
" [1830],\n", | |
" [1832],\n", | |
" [1834],\n", | |
" [1853, 1854],\n", | |
" [1856],\n", | |
" [1859],\n", | |
" [1867],\n", | |
" [1869],\n", | |
" [1871],\n", | |
" [1876],\n", | |
" [1885],\n", | |
" [1905, 1906],\n", | |
" [1909],\n", | |
" [1913],\n", | |
" [1928, 1929],\n", | |
" [1966],\n", | |
" [1978],\n", | |
" [1996],\n", | |
" [2024],\n", | |
" [2031],\n", | |
" [2043],\n", | |
" [2045],\n", | |
" [2054],\n", | |
" [2071],\n", | |
" [2075],\n", | |
" [2086, 2087],\n", | |
" [2100],\n", | |
" [2130],\n", | |
" [2177],\n", | |
" [2189],\n", | |
" [2194],\n", | |
" [2227],\n", | |
" [2231],\n", | |
" [2235],\n", | |
" [2253],\n", | |
" [2271],\n", | |
" [2275],\n", | |
" [2278],\n", | |
" [2295],\n", | |
" [2313],\n", | |
" [2322, 2323],\n", | |
" [2337],\n", | |
" [2340, 2341],\n", | |
" [2349],\n", | |
" [2356],\n", | |
" [2367],\n", | |
" [2377],\n", | |
" [2379],\n", | |
" [2388],\n", | |
" [2401],\n", | |
" [2410],\n", | |
" [2423],\n", | |
" [2442, 2443],\n", | |
" [2453],\n", | |
" [2456],\n", | |
" [2462],\n", | |
" [2549, 2550],\n", | |
" [2578],\n", | |
" [2582, 2583],\n", | |
" [2595],\n", | |
" [2682],\n", | |
" [2708],\n", | |
" [2743],\n", | |
" [2759],\n", | |
" [2762],\n", | |
" [2771],\n", | |
" [2785],\n", | |
" [2818],\n", | |
" [2872],\n", | |
" [2931],\n", | |
" [2995],\n", | |
" [2999],\n", | |
" [3028],\n", | |
" [3033],\n", | |
" [3070, 3071],\n", | |
" [3213],\n", | |
" [3290],\n", | |
" [3296],\n", | |
" [3336],\n", | |
" [3356],\n", | |
" [3472, 3473],\n", | |
" [3477],\n", | |
" [3495],\n", | |
" [3501],\n", | |
" [3510],\n", | |
" [3521],\n", | |
" [3568],\n", | |
" [3583],\n", | |
" [3608],\n", | |
" [3637, 3638],\n", | |
" [3652],\n", | |
" [3665],\n", | |
" [3668],\n", | |
" [3729],\n", | |
" [3740],\n", | |
" [3755],\n", | |
" [3765],\n", | |
" [3772],\n", | |
" [3786],\n", | |
" [3792],\n", | |
" [3804],\n", | |
" [3826],\n", | |
" [3833],\n", | |
" [3854],\n", | |
" [3895],\n", | |
" [3943],\n", | |
" [3965],\n", | |
" [3975],\n", | |
" [4018],\n", | |
" [4031],\n", | |
" [4043],\n", | |
" [4080],\n", | |
" [4148],\n", | |
" [4160],\n", | |
" [4172, 4173],\n", | |
" [4182],\n", | |
" [4331],\n", | |
" [4333],\n", | |
" [4389],\n", | |
" [4418],\n", | |
" [4468],\n", | |
" [4483],\n", | |
" [4496],\n", | |
" [4672],\n", | |
" [4733],\n", | |
" [4741],\n", | |
" [4775],\n", | |
" [4782],\n", | |
" [4832],\n", | |
" [4852],\n", | |
" [4875],\n", | |
" [4928],\n", | |
" [4973],\n", | |
" [5062],\n", | |
" [5064],\n", | |
" [5082],\n", | |
" [5086],\n", | |
" [5135],\n", | |
" [5262],\n", | |
" [5265],\n", | |
" [5280],\n", | |
" [5320],\n", | |
" [5349, 5350],\n", | |
" [5397],\n", | |
" [5538],\n", | |
" [5574],\n", | |
" [5694],\n", | |
" [5718],\n", | |
" [5805],\n", | |
" [5809],\n", | |
" [5822],\n", | |
" [5849],\n", | |
" [5858],\n", | |
" [5869],\n", | |
" [5904],\n", | |
" [5915],\n", | |
" [5927],\n", | |
" [5934],\n", | |
" [5949],\n", | |
" [5965],\n", | |
" [6133],\n", | |
" [6139],\n", | |
" [6173],\n", | |
" [6196],\n", | |
" [6205],\n", | |
" [6207],\n", | |
" [6251],\n", | |
" [6259],\n", | |
" [6309],\n", | |
" [6313],\n", | |
" [6356],\n", | |
" [6370],\n", | |
" [6484],\n", | |
" [6514, 6515, 6516],\n", | |
" [6547],\n", | |
" [6595],\n", | |
" [6606],\n", | |
" [6608],\n", | |
" [6620],\n", | |
" [6676],\n", | |
" [6688],\n", | |
" [6692],\n", | |
" [6700],\n", | |
" [6770],\n", | |
" [6880],\n", | |
" [6924],\n", | |
" [6926],\n", | |
" [6935],\n", | |
" [6946],\n", | |
" [7052],\n", | |
" [7208],\n", | |
" [7263],\n", | |
" [7276],\n", | |
" [7283],\n", | |
" [7294],\n", | |
" [7315],\n", | |
" [7326],\n", | |
" [7336],\n", | |
" [7351],\n", | |
" [7367],\n", | |
" [7375],\n", | |
" [7406],\n", | |
" [7415],\n", | |
" [7417],\n", | |
" [7429, 7430],\n", | |
" [7549],\n", | |
" [7567],\n", | |
" [7638],\n", | |
" [7646],\n", | |
" [7663],\n", | |
" [7779],\n", | |
" [7809],\n", | |
" [7833],\n", | |
" [7894],\n", | |
" [7915],\n", | |
" [8015],\n", | |
" [8028],\n", | |
" [8031],\n", | |
" [8040],\n", | |
" [8044],\n", | |
" [8057],\n", | |
" [8063],\n", | |
" [8087],\n", | |
" [8090, 8091, 8092],\n", | |
" [8147],\n", | |
" [8150],\n", | |
" [8177],\n", | |
" [8185],\n", | |
" [8191],\n", | |
" [8199, 8200],\n", | |
" [8208],\n", | |
" [8220],\n", | |
" [8255],\n", | |
" [8277],\n", | |
" [8350, 8351],\n", | |
" [8360],\n", | |
" [8383],\n", | |
" [8388],\n", | |
" [8390],\n", | |
" [8413],\n", | |
" [8454],\n", | |
" [8457],\n", | |
" [8459],\n", | |
" [8486],\n", | |
" [8488],\n", | |
" [8496],\n", | |
" [8501],\n", | |
" [8503],\n", | |
" [8514],\n", | |
" [8519],\n", | |
" [8539],\n", | |
" [8548],\n", | |
" [8565],\n", | |
" [8572],\n", | |
" [8603],\n", | |
" [8611],\n", | |
" [8641],\n", | |
" [8650],\n", | |
" [8701],\n", | |
" [8727],\n", | |
" [8784],\n", | |
" [8798],\n", | |
" [8804, 8805],\n", | |
" [8807],\n", | |
" [8826],\n", | |
" [8882],\n", | |
" [8923],\n", | |
" [8974],\n", | |
" [9002],\n", | |
" [9081],\n", | |
" [9114],\n", | |
" [9127],\n", | |
" [9149],\n", | |
" [9153],\n", | |
" [9155],\n", | |
" [9171],\n", | |
" [9193],\n", | |
" [9201],\n", | |
" [9230],\n", | |
" [9302],\n", | |
" [9308],\n", | |
" [9312],\n", | |
" [9348],\n", | |
" [9374],\n", | |
" [9398],\n", | |
" [9404],\n", | |
" [9415],\n", | |
" [9442],\n", | |
" [9461, 9462],\n", | |
" [9476],\n", | |
" [9481, 9482]]" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 19 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Xz3aiDZAnBlt", | |
"outputId": "77eae914-96cf-4b1c-e266-be0311129b4a", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"source": [ | |
"_group_as_index(_, index=dataset.index, date_format='%d %b %Y', format_date='{} sampai {}')" | |
], | |
"execution_count": 20, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stderr", | |
"text": [ | |
"<ipython-input-3-23e254b88fe0>:27: DeprecationWarning: _group_as_index is deprecated, use _format_group_indices instead\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"['30 Jan 1975',\n", | |
" '02 Feb 1975 sampai 03 Feb 1975',\n", | |
" '05 Feb 1975',\n", | |
" '17 Feb 1975',\n", | |
" '27 Feb 1975',\n", | |
" '02 Mar 1975',\n", | |
" '11 Mar 1975',\n", | |
" '09 Apr 1975',\n", | |
" '24 Apr 1975',\n", | |
" '05 May 1975',\n", | |
" '16 May 1975',\n", | |
" '19 May 1975',\n", | |
" '13 Jun 1975 sampai 14 Jun 1975',\n", | |
" '19 Jul 1975',\n", | |
" '16 Aug 1975',\n", | |
" '04 Oct 1975',\n", | |
" '07 Nov 1975',\n", | |
" '03 Dec 1975',\n", | |
" '05 Dec 1975',\n", | |
" '16 Dec 1975',\n", | |
" '27 Dec 1975',\n", | |
" '23 Jan 1976',\n", | |
" '03 Mar 1976',\n", | |
" '12 Mar 1976',\n", | |
" '10 Apr 1976',\n", | |
" '12 Apr 1976',\n", | |
" '24 Apr 1976',\n", | |
" '06 May 1976',\n", | |
" '27 May 1976',\n", | |
" '29 May 1976',\n", | |
" '01 Jun 1976',\n", | |
" '06 Jul 1976',\n", | |
" '26 Aug 1976',\n", | |
" '23 Nov 1976',\n", | |
" '01 Dec 1976',\n", | |
" '03 Dec 1976',\n", | |
" '14 Jan 1977',\n", | |
" '24 Jan 1977',\n", | |
" '26 Jan 1977',\n", | |
" '30 Jan 1977',\n", | |
" '04 Feb 1977',\n", | |
" '18 Feb 1977',\n", | |
" '10 Mar 1977',\n", | |
" '08 May 1977',\n", | |
" '16 Jun 1977',\n", | |
" '01 Jul 1977',\n", | |
" '01 Sep 1977',\n", | |
" '16 Oct 1977',\n", | |
" '24 Nov 1977',\n", | |
" '12 Jan 1978 sampai 13 Jan 1978',\n", | |
" '06 Feb 1978',\n", | |
" '24 Feb 1978',\n", | |
" '25 Mar 1978',\n", | |
" '14 Apr 1978',\n", | |
" '17 Apr 1978',\n", | |
" '29 Apr 1978',\n", | |
" '01 May 1978',\n", | |
" '12 May 1978',\n", | |
" '22 May 1978',\n", | |
" '31 May 1978 sampai 01 Jun 1978',\n", | |
" '12 Jun 1978',\n", | |
" '30 Jul 1978',\n", | |
" '11 Oct 1978',\n", | |
" '08 Nov 1978',\n", | |
" '11 Nov 1978',\n", | |
" '13 Nov 1978',\n", | |
" '11 Dec 1978',\n", | |
" '30 Dec 1978',\n", | |
" '18 Jan 1979',\n", | |
" '03 Mar 1979',\n", | |
" '13 Mar 1979',\n", | |
" '26 Mar 1979',\n", | |
" '08 May 1979',\n", | |
" '02 Jun 1979',\n", | |
" '03 Aug 1979',\n", | |
" '15 Dec 1979',\n", | |
" '02 Jan 1980 sampai 03 Jan 1980',\n", | |
" '05 Jan 1980',\n", | |
" '07 Jan 1980',\n", | |
" '09 Jan 1980',\n", | |
" '28 Jan 1980 sampai 29 Jan 1980',\n", | |
" '31 Jan 1980',\n", | |
" '03 Feb 1980',\n", | |
" '11 Feb 1980',\n", | |
" '13 Feb 1980',\n", | |
" '15 Feb 1980',\n", | |
" '20 Feb 1980',\n", | |
" '29 Feb 1980',\n", | |
" '20 Mar 1980 sampai 21 Mar 1980',\n", | |
" '24 Mar 1980',\n", | |
" '28 Mar 1980',\n", | |
" '12 Apr 1980 sampai 13 Apr 1980',\n", | |
" '20 May 1980',\n", | |
" '01 Jun 1980',\n", | |
" '19 Jun 1980',\n", | |
" '17 Jul 1980',\n", | |
" '24 Jul 1980',\n", | |
" '05 Aug 1980',\n", | |
" '07 Aug 1980',\n", | |
" '16 Aug 1980',\n", | |
" '02 Sep 1980',\n", | |
" '06 Sep 1980',\n", | |
" '17 Sep 1980 sampai 18 Sep 1980',\n", | |
" '01 Oct 1980',\n", | |
" '31 Oct 1980',\n", | |
" '17 Dec 1980',\n", | |
" '29 Dec 1980',\n", | |
" '03 Jan 1981',\n", | |
" '05 Feb 1981',\n", | |
" '09 Feb 1981',\n", | |
" '13 Feb 1981',\n", | |
" '03 Mar 1981',\n", | |
" '21 Mar 1981',\n", | |
" '25 Mar 1981',\n", | |
" '28 Mar 1981',\n", | |
" '14 Apr 1981',\n", | |
" '02 May 1981',\n", | |
" '11 May 1981 sampai 12 May 1981',\n", | |
" '26 May 1981',\n", | |
" '29 May 1981 sampai 30 May 1981',\n", | |
" '07 Jun 1981',\n", | |
" '14 Jun 1981',\n", | |
" '25 Jun 1981',\n", | |
" '05 Jul 1981',\n", | |
" '07 Jul 1981',\n", | |
" '16 Jul 1981',\n", | |
" '29 Jul 1981',\n", | |
" '07 Aug 1981',\n", | |
" '20 Aug 1981',\n", | |
" '08 Sep 1981 sampai 09 Sep 1981',\n", | |
" '19 Sep 1981',\n", | |
" '22 Sep 1981',\n", | |
" '28 Sep 1981',\n", | |
" '24 Dec 1981 sampai 25 Dec 1981',\n", | |
" '22 Jan 1982',\n", | |
" '26 Jan 1982 sampai 27 Jan 1982',\n", | |
" '08 Feb 1982',\n", | |
" '06 May 1982',\n", | |
" '01 Jun 1982',\n", | |
" '06 Jul 1982',\n", | |
" '22 Jul 1982',\n", | |
" '25 Jul 1982',\n", | |
" '03 Aug 1982',\n", | |
" '17 Aug 1982',\n", | |
" '19 Sep 1982',\n", | |
" '12 Nov 1982',\n", | |
" '10 Jan 1983',\n", | |
" '15 Mar 1983',\n", | |
" '19 Mar 1983',\n", | |
" '17 Apr 1983',\n", | |
" '22 Apr 1983',\n", | |
" '29 May 1983 sampai 30 May 1983',\n", | |
" '19 Oct 1983',\n", | |
" '04 Jan 1984',\n", | |
" '10 Jan 1984',\n", | |
" '19 Feb 1984',\n", | |
" '10 Mar 1984',\n", | |
" '04 Jul 1984 sampai 05 Jul 1984',\n", | |
" '09 Jul 1984',\n", | |
" '27 Jul 1984',\n", | |
" '02 Aug 1984',\n", | |
" '11 Aug 1984',\n", | |
" '22 Aug 1984',\n", | |
" '08 Oct 1984',\n", | |
" '23 Oct 1984',\n", | |
" '17 Nov 1984',\n", | |
" '16 Dec 1984 sampai 17 Dec 1984',\n", | |
" '31 Dec 1984',\n", | |
" '13 Jan 1985',\n", | |
" '16 Jan 1985',\n", | |
" '18 Mar 1985',\n", | |
" '29 Mar 1985',\n", | |
" '13 Apr 1985',\n", | |
" '23 Apr 1985',\n", | |
" '30 Apr 1985',\n", | |
" '14 May 1985',\n", | |
" '20 May 1985',\n", | |
" '01 Jun 1985',\n", | |
" '23 Jun 1985',\n", | |
" '30 Jun 1985',\n", | |
" '21 Jul 1985',\n", | |
" '31 Aug 1985',\n", | |
" '18 Oct 1985',\n", | |
" '09 Nov 1985',\n", | |
" '19 Nov 1985',\n", | |
" '01 Jan 1986',\n", | |
" '14 Jan 1986',\n", | |
" '26 Jan 1986',\n", | |
" '04 Mar 1986',\n", | |
" '11 May 1986',\n", | |
" '23 May 1986',\n", | |
" '04 Jun 1986 sampai 05 Jun 1986',\n", | |
" '14 Jun 1986',\n", | |
" '10 Nov 1986',\n", | |
" '12 Nov 1986',\n", | |
" '07 Jan 1987',\n", | |
" '05 Feb 1987',\n", | |
" '27 Mar 1987',\n", | |
" '11 Apr 1987',\n", | |
" '24 Apr 1987',\n", | |
" '17 Oct 1987',\n", | |
" '17 Dec 1987',\n", | |
" '25 Dec 1987',\n", | |
" '28 Jan 1988',\n", | |
" '04 Feb 1988',\n", | |
" '25 Mar 1988',\n", | |
" '14 Apr 1988',\n", | |
" '07 May 1988',\n", | |
" '29 Jun 1988',\n", | |
" '13 Aug 1988',\n", | |
" '10 Nov 1988',\n", | |
" '12 Nov 1988',\n", | |
" '30 Nov 1988',\n", | |
" '04 Dec 1988',\n", | |
" '22 Jan 1989',\n", | |
" '29 May 1989',\n", | |
" '01 Jun 1989',\n", | |
" '16 Jun 1989',\n", | |
" '26 Jul 1989',\n", | |
" '24 Aug 1989 sampai 25 Aug 1989',\n", | |
" '11 Oct 1989',\n", | |
" '01 Mar 1990',\n", | |
" '06 Apr 1990',\n", | |
" '04 Aug 1990',\n", | |
" '28 Aug 1990',\n", | |
" '23 Nov 1990',\n", | |
" '27 Nov 1990',\n", | |
" '10 Dec 1990',\n", | |
" '06 Jan 1991',\n", | |
" '15 Jan 1991',\n", | |
" '26 Jan 1991',\n", | |
" '02 Mar 1991',\n", | |
" '13 Mar 1991',\n", | |
" '25 Mar 1991',\n", | |
" '01 Apr 1991',\n", | |
" '16 Apr 1991',\n", | |
" '02 May 1991',\n", | |
" '17 Oct 1991',\n", | |
" '23 Oct 1991',\n", | |
" '26 Nov 1991',\n", | |
" '19 Dec 1991',\n", | |
" '28 Dec 1991',\n", | |
" '30 Dec 1991',\n", | |
" '12 Feb 1992',\n", | |
" '20 Feb 1992',\n", | |
" '10 Apr 1992',\n", | |
" '14 Apr 1992',\n", | |
" '27 May 1992',\n", | |
" '10 Jun 1992',\n", | |
" '02 Oct 1992',\n", | |
" '01 Nov 1992 sampai 03 Nov 1992',\n", | |
" '04 Dec 1992',\n", | |
" '21 Jan 1993',\n", | |
" '01 Feb 1993',\n", | |
" '03 Feb 1993',\n", | |
" '15 Feb 1993',\n", | |
" '12 Apr 1993',\n", | |
" '24 Apr 1993',\n", | |
" '28 Apr 1993',\n", | |
" '06 May 1993',\n", | |
" '15 Jul 1993',\n", | |
" '02 Nov 1993',\n", | |
" '16 Dec 1993',\n", | |
" '18 Dec 1993',\n", | |
" '27 Dec 1993',\n", | |
" '07 Jan 1994',\n", | |
" '23 Apr 1994',\n", | |
" '26 Sep 1994',\n", | |
" '20 Nov 1994',\n", | |
" '03 Dec 1994',\n", | |
" '10 Dec 1994',\n", | |
" '21 Dec 1994',\n", | |
" '11 Jan 1995',\n", | |
" '22 Jan 1995',\n", | |
" '01 Feb 1995',\n", | |
" '16 Feb 1995',\n", | |
" '04 Mar 1995',\n", | |
" '12 Mar 1995',\n", | |
" '12 Apr 1995',\n", | |
" '21 Apr 1995',\n", | |
" '23 Apr 1995',\n", | |
" '05 May 1995 sampai 06 May 1995',\n", | |
" '02 Sep 1995',\n", | |
" '20 Sep 1995',\n", | |
" '30 Nov 1995',\n", | |
" '08 Dec 1995',\n", | |
" '25 Dec 1995',\n", | |
" '19 Apr 1996',\n", | |
" '19 May 1996',\n", | |
" '12 Jun 1996',\n", | |
" '12 Aug 1996',\n", | |
" '02 Sep 1996',\n", | |
" '11 Dec 1996',\n", | |
" '24 Dec 1996',\n", | |
" '27 Dec 1996',\n", | |
" '05 Jan 1997',\n", | |
" '09 Jan 1997',\n", | |
" '22 Jan 1997',\n", | |
" '28 Jan 1997',\n", | |
" '21 Feb 1997',\n", | |
" '24 Feb 1997 sampai 26 Feb 1997',\n", | |
" '22 Apr 1997',\n", | |
" '25 Apr 1997',\n", | |
" '22 May 1997',\n", | |
" '30 May 1997',\n", | |
" '05 Jun 1997',\n", | |
" '13 Jun 1997 sampai 14 Jun 1997',\n", | |
" '22 Jun 1997',\n", | |
" '04 Jul 1997',\n", | |
" '08 Aug 1997',\n", | |
" '30 Aug 1997',\n", | |
" '11 Nov 1997 sampai 12 Nov 1997',\n", | |
" '21 Nov 1997',\n", | |
" '14 Dec 1997',\n", | |
" '19 Dec 1997',\n", | |
" '21 Dec 1997',\n", | |
" '13 Jan 1998',\n", | |
" '23 Feb 1998',\n", | |
" '26 Feb 1998',\n", | |
" '28 Feb 1998',\n", | |
" '27 Mar 1998',\n", | |
" '29 Mar 1998',\n", | |
" '06 Apr 1998',\n", | |
" '11 Apr 1998',\n", | |
" '13 Apr 1998',\n", | |
" '24 Apr 1998',\n", | |
" '29 Apr 1998',\n", | |
" '19 May 1998',\n", | |
" '28 May 1998',\n", | |
" '14 Jun 1998',\n", | |
" '21 Jun 1998',\n", | |
" '22 Jul 1998',\n", | |
" '30 Jul 1998',\n", | |
" '29 Aug 1998',\n", | |
" '07 Sep 1998',\n", | |
" '28 Oct 1998',\n", | |
" '23 Nov 1998',\n", | |
" '19 Jan 1999',\n", | |
" '02 Feb 1999',\n", | |
" '08 Feb 1999 sampai 09 Feb 1999',\n", | |
" '11 Feb 1999',\n", | |
" '02 Mar 1999',\n", | |
" '27 Apr 1999',\n", | |
" '07 Jun 1999',\n", | |
" '28 Jul 1999',\n", | |
" '25 Aug 1999',\n", | |
" '12 Nov 1999',\n", | |
" '15 Dec 1999',\n", | |
" '28 Dec 1999',\n", | |
" '19 Jan 2000',\n", | |
" '23 Jan 2000',\n", | |
" '25 Jan 2000',\n", | |
" '10 Feb 2000',\n", | |
" '03 Mar 2000',\n", | |
" '11 Mar 2000',\n", | |
" '09 Apr 2000',\n", | |
" '20 Jun 2000',\n", | |
" '26 Jun 2000',\n", | |
" '30 Jun 2000',\n", | |
" '05 Aug 2000',\n", | |
" '31 Aug 2000',\n", | |
" '24 Sep 2000',\n", | |
" '30 Sep 2000',\n", | |
" '11 Oct 2000',\n", | |
" '07 Nov 2000',\n", | |
" '26 Nov 2000 sampai 27 Nov 2000',\n", | |
" '11 Dec 2000',\n", | |
" '16 Dec 2000 sampai 17 Dec 2000']" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 20 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "qbv_bFl5nVsx" | |
}, | |
"source": [ | |
"# Changelog\n", | |
"\n", | |
"```\n", | |
"- 20240413 - 2.0.0 / v0.5.0 - Refactor function names and update deprecated functions\n", | |
"- 20190928 - 1.0.0 - Initial\n", | |
"```\n", | |
"\n", | |
"#### Copyright © 2019-2024 [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/)." | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment