hidrokit.prep.read
¶taruma_hidrokit_prep_read
1.0.1
/20190713
0.2.0
3.7
### Instalasi melalui PyPI
!pip install hidrokit
### Instalasi melalui Github
# !pip install git+https://github.com/taruma/hidrokit.git
### Instalasi melalui Github (Latest)
# !pip install git+https://github.com/taruma/hidrokit.git@latest
Collecting hidrokit Downloading https://files.pythonhosted.org/packages/43/9d/343d2a413a07463a21dd13369e31d664d6733bbfd46276abef5d804c83d1/hidrokit-0.2.0-py2.py3-none-any.whl Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from hidrokit) (1.16.4) Requirement already satisfied: pandas in /usr/local/lib/python3.6/dist-packages (from hidrokit) (0.24.2) Requirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from hidrokit) (3.0.3) Requirement already satisfied: python-dateutil>=2.5.0 in /usr/local/lib/python3.6/dist-packages (from pandas->hidrokit) (2.5.3) Requirement already satisfied: pytz>=2011k in /usr/local/lib/python3.6/dist-packages (from pandas->hidrokit) (2018.9) Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->hidrokit) (0.10.0) Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->hidrokit) (1.1.0) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->hidrokit) (2.4.0) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2.5.0->pandas->hidrokit) (1.12.0) Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from kiwisolver>=1.0.1->matplotlib->hidrokit) (41.0.1) Installing collected packages: hidrokit Successfully installed hidrokit-0.2.0
import numpy as np
import pandas as pd
Digunakan dataset buatan menggunakan numpy.random
# Buat dataset sebanyak satu tahun (tahun 2001)
date_index = pd.date_range('20010101', '20011231')
# Generate random data
np.random.seed(1234)
data = np.random.rand(len(date_index), 6) * 100
data[data < 30] = np.nan
data = data.round()
data
array([[nan, 62., 44., 79., 78., nan], [nan, 80., 96., 88., 36., 50.], [68., 71., 37., 56., 50., nan], ..., [37., nan, 77., 93., 42., 52.], [nan, 43., nan, 48., 50., 49.], [79., nan, 72., 55., 34., 94.]])
# Ubah ke bentuk dataframe
dataset = pd.DataFrame(
data=data,
columns='sta_A sta_B sta_C sta_D sta_E sta_F'.split(),
index=date_index
)
dataset.head(10)
sta_A | sta_B | sta_C | sta_D | sta_E | sta_F | |
---|---|---|---|---|---|---|
2001-01-01 | NaN | 62.0 | 44.0 | 79.0 | 78.0 | NaN |
2001-01-02 | NaN | 80.0 | 96.0 | 88.0 | 36.0 | 50.0 |
2001-01-03 | 68.0 | 71.0 | 37.0 | 56.0 | 50.0 | NaN |
2001-01-04 | 77.0 | 88.0 | 36.0 | 62.0 | NaN | 37.0 |
2001-01-05 | 93.0 | 65.0 | 40.0 | 79.0 | 32.0 | 57.0 |
2001-01-06 | 87.0 | 44.0 | 80.0 | NaN | 70.0 | 70.0 |
2001-01-07 | NaN | 92.0 | 44.0 | 91.0 | NaN | NaN |
2001-01-08 | NaN | 67.0 | 59.0 | 53.0 | NaN | 56.0 |
2001-01-09 | 33.0 | 50.0 | NaN | 61.0 | 57.0 | NaN |
2001-01-10 | 62.0 | 91.0 | 79.0 | 99.0 | 96.0 | 79.0 |
.missing_row()
¶Tujuan: Memperoleh informasi index data yang hilang
Sintaks: prep.read.missing_row(dataframe, date_index=True, date_format='%Y/%m/%d')
Return: dictionary
Dokumentasi: readthedocs
# Import module
from hidrokit.prep import read
# Menampilkan dataset
dataset.head(10)
sta_A | sta_B | sta_C | sta_D | sta_E | sta_F | |
---|---|---|---|---|---|---|
2001-01-01 | NaN | 62.0 | 44.0 | 79.0 | 78.0 | NaN |
2001-01-02 | NaN | 80.0 | 96.0 | 88.0 | 36.0 | 50.0 |
2001-01-03 | 68.0 | 71.0 | 37.0 | 56.0 | 50.0 | NaN |
2001-01-04 | 77.0 | 88.0 | 36.0 | 62.0 | NaN | 37.0 |
2001-01-05 | 93.0 | 65.0 | 40.0 | 79.0 | 32.0 | 57.0 |
2001-01-06 | 87.0 | 44.0 | 80.0 | NaN | 70.0 | 70.0 |
2001-01-07 | NaN | 92.0 | 44.0 | 91.0 | NaN | NaN |
2001-01-08 | NaN | 67.0 | 59.0 | 53.0 | NaN | 56.0 |
2001-01-09 | 33.0 | 50.0 | NaN | 61.0 | 57.0 | NaN |
2001-01-10 | 62.0 | 91.0 | 79.0 | 99.0 | 96.0 | 79.0 |
Dari dataset diatas, ingin diperoleh informasi pada tanggal berapa saja data yang hilang.
Contoh: Pada stasiun A saya ingin memperoleh daftar tanggal yang mengalami kehilangan data. Dari tabel diatas terlihat pada bulan januari tanggal 1, 2, 7, dan 8 mengalami kehilangan data.
# Menggunakan module read
data_hilang = read.missing_row(dataset)
print(data_hilang)
{'sta_A': ['2001/01/01', '2001/01/02', '2001/01/07', '2001/01/08', '2001/01/11', '2001/01/14', '2001/01/16', '2001/01/19', '2001/01/25', '2001/01/30', '2001/02/02', '2001/02/05', '2001/02/08', '2001/02/10', '2001/02/11', '2001/02/20', '2001/02/21', '2001/02/22', '2001/02/25', '2001/02/28', '2001/03/01', '2001/03/03', '2001/03/04', '2001/03/06', '2001/03/09', '2001/03/11', '2001/03/13', '2001/03/18', '2001/03/22', '2001/03/25', '2001/03/26', '2001/03/28', '2001/03/29', '2001/03/31', '2001/04/01', '2001/04/12', '2001/04/14', '2001/04/17', '2001/04/24', '2001/04/26', '2001/04/30', '2001/05/02', '2001/05/03', '2001/05/09', '2001/05/18', '2001/05/19', '2001/05/26', '2001/06/01', '2001/06/05', '2001/06/10', '2001/06/11', '2001/06/12', '2001/06/22', '2001/06/23', '2001/06/24', '2001/06/26', '2001/06/27', '2001/07/04', '2001/07/05', '2001/07/06', '2001/07/08', '2001/07/09', '2001/07/13', '2001/07/16', '2001/07/20', '2001/07/21', '2001/07/22', '2001/07/26', '2001/07/27', '2001/07/31', '2001/08/03', '2001/08/04', '2001/08/05', '2001/08/07', '2001/08/08', '2001/08/15', '2001/08/21', '2001/08/22', '2001/08/23', '2001/08/25', '2001/08/26', '2001/08/31', '2001/09/02', '2001/09/04', '2001/09/07', '2001/09/08', '2001/09/11', '2001/09/13', '2001/09/14', '2001/09/18', '2001/09/19', '2001/09/20', '2001/09/26', '2001/09/29', '2001/09/30', '2001/10/02', '2001/10/05', '2001/10/07', '2001/10/16', '2001/10/17', '2001/10/21', '2001/10/23', '2001/10/24', '2001/10/27', '2001/10/29', '2001/10/30', '2001/11/03', '2001/11/09', '2001/11/15', '2001/11/17', '2001/11/25', '2001/11/28', '2001/12/01', '2001/12/05', '2001/12/12', '2001/12/13', '2001/12/20', '2001/12/22', '2001/12/24', '2001/12/30'], 'sta_B': ['2001/01/13', '2001/01/15', '2001/01/20', '2001/01/23', '2001/02/09', '2001/02/10', '2001/02/12', '2001/02/17', '2001/02/18', '2001/02/22', '2001/02/24', '2001/02/27', '2001/02/28', '2001/03/07', '2001/03/09', '2001/03/14', '2001/03/16', '2001/03/20', '2001/03/23', '2001/04/01', '2001/04/02', '2001/04/04', '2001/04/07', '2001/04/08', '2001/04/09', '2001/04/12', '2001/04/15', '2001/04/16', '2001/04/17', '2001/04/19', '2001/04/20', '2001/04/25', '2001/04/27', '2001/04/30', '2001/05/12', '2001/05/15', '2001/05/20', '2001/05/23', '2001/06/15', '2001/06/16', '2001/06/18', '2001/06/19', '2001/06/23', '2001/07/01', '2001/07/05', '2001/07/09', '2001/07/16', '2001/07/19', '2001/07/20', '2001/07/23', '2001/07/25', '2001/07/30', '2001/08/04', '2001/08/06', '2001/08/07', '2001/08/09', '2001/08/12', '2001/08/13', '2001/08/15', '2001/08/18', '2001/08/21', '2001/08/26', '2001/08/29', '2001/08/31', '2001/09/02', '2001/09/05', '2001/09/06', '2001/09/07', '2001/09/10', '2001/09/13', '2001/09/14', '2001/09/15', '2001/09/19', '2001/09/22', '2001/09/23', '2001/09/30', '2001/10/02', '2001/10/03', '2001/10/06', '2001/10/12', '2001/10/14', '2001/10/17', '2001/10/18', '2001/10/19', '2001/10/21', '2001/10/23', '2001/10/24', '2001/10/30', '2001/11/02', '2001/11/03', '2001/11/05', '2001/11/12', '2001/11/13', '2001/11/16', '2001/11/17', '2001/11/21', '2001/11/26', '2001/12/03', '2001/12/07', '2001/12/10', '2001/12/11', '2001/12/19', '2001/12/20', '2001/12/23', '2001/12/26', '2001/12/29', '2001/12/31'], 'sta_C': ['2001/01/09', '2001/01/12', '2001/01/13', '2001/01/17', '2001/01/22', '2001/01/23', '2001/01/24', '2001/01/26', '2001/02/02', '2001/02/04', '2001/02/08', '2001/02/10', '2001/02/11', '2001/02/16', '2001/02/18', '2001/02/22', '2001/03/06', '2001/03/07', '2001/03/08', '2001/03/10', '2001/03/19', '2001/03/20', '2001/03/21', '2001/03/22', '2001/03/24', '2001/03/26', '2001/03/27', '2001/03/28', '2001/04/04', '2001/04/07', '2001/04/11', '2001/04/15', '2001/04/17', '2001/04/18', '2001/04/23', '2001/04/24', '2001/04/26', '2001/04/27', '2001/04/28', '2001/04/30', '2001/05/11', '2001/05/13', '2001/05/17', '2001/05/19', '2001/05/24', '2001/05/28', '2001/05/29', '2001/05/31', '2001/06/05', '2001/06/06', '2001/06/10', '2001/06/14', '2001/06/15', '2001/06/18', '2001/06/20', '2001/06/22', '2001/06/23', '2001/06/25', '2001/06/28', '2001/07/03', '2001/07/05', '2001/07/08', '2001/07/09', '2001/07/10', '2001/07/11', '2001/07/12', '2001/07/13', '2001/07/18', '2001/07/27', '2001/07/30', '2001/07/31', '2001/08/02', '2001/08/06', '2001/08/14', '2001/08/20', '2001/08/24', '2001/08/26', '2001/08/29', '2001/08/30', '2001/09/08', '2001/09/12', '2001/09/15', '2001/09/21', '2001/09/24', '2001/09/27', '2001/10/02', '2001/10/03', '2001/10/04', '2001/10/05', '2001/10/09', '2001/10/13', '2001/10/14', '2001/10/15', '2001/10/21', '2001/10/23', '2001/10/26', '2001/11/02', '2001/11/07', '2001/11/09', '2001/11/13', '2001/11/16', '2001/11/25', '2001/11/29', '2001/12/06', '2001/12/07', '2001/12/12', '2001/12/22', '2001/12/23', '2001/12/30'], 'sta_D': ['2001/01/06', '2001/01/11', '2001/01/12', '2001/01/18', '2001/01/19', '2001/01/20', '2001/01/22', '2001/01/23', '2001/01/25', '2001/01/26', '2001/02/15', '2001/02/22', '2001/02/24', '2001/03/02', '2001/03/04', '2001/03/05', '2001/03/14', '2001/03/16', '2001/03/17', '2001/03/21', '2001/03/24', '2001/03/27', '2001/03/31', '2001/04/03', '2001/04/04', '2001/04/06', '2001/04/08', '2001/04/12', '2001/04/13', '2001/04/15', '2001/04/21', '2001/04/22', '2001/04/23', '2001/04/24', '2001/04/27', '2001/04/30', '2001/05/01', '2001/05/04', '2001/05/07', '2001/05/09', '2001/05/10', '2001/05/14', '2001/05/15', '2001/05/16', '2001/05/17', '2001/05/19', '2001/05/23', '2001/05/27', '2001/06/01', '2001/06/04', '2001/06/05', '2001/06/06', '2001/06/08', '2001/06/09', '2001/06/13', '2001/06/18', '2001/06/19', '2001/06/21', '2001/06/28', '2001/06/29', '2001/07/01', '2001/07/04', '2001/07/07', '2001/07/13', '2001/07/14', '2001/07/17', '2001/07/29', '2001/07/31', '2001/08/01', '2001/08/05', '2001/08/08', '2001/08/10', '2001/08/11', '2001/08/13', '2001/08/16', '2001/08/21', '2001/08/23', '2001/08/25', '2001/08/28', '2001/09/03', '2001/09/05', '2001/09/07', '2001/09/08', '2001/09/09', '2001/09/10', '2001/09/22', '2001/09/24', '2001/09/26', '2001/09/28', '2001/09/29', '2001/10/03', '2001/10/04', '2001/10/05', '2001/10/11', '2001/10/16', '2001/10/18', '2001/10/20', '2001/10/22', '2001/10/23', '2001/10/24', '2001/10/26', '2001/10/28', '2001/10/29', '2001/10/30', '2001/10/31', '2001/11/01', '2001/11/02', '2001/11/10', '2001/11/11', '2001/11/13', '2001/11/14', '2001/11/16', '2001/11/23', '2001/11/25', '2001/12/01', '2001/12/05', '2001/12/08', '2001/12/11', '2001/12/14', '2001/12/15', '2001/12/19', '2001/12/20'], 'sta_E': ['2001/01/04', '2001/01/07', '2001/01/08', '2001/01/18', '2001/01/21', '2001/01/27', '2001/02/04', '2001/02/10', '2001/02/12', '2001/02/13', '2001/02/16', '2001/02/24', '2001/02/25', '2001/02/27', '2001/03/14', '2001/03/15', '2001/03/20', '2001/03/23', '2001/03/27', '2001/03/29', '2001/04/01', '2001/04/02', '2001/04/08', '2001/04/11', '2001/04/17', '2001/04/18', '2001/04/21', '2001/04/24', '2001/04/26', '2001/05/01', '2001/05/04', '2001/05/09', '2001/05/13', '2001/05/15', '2001/05/18', '2001/05/19', '2001/06/06', '2001/06/08', '2001/06/12', '2001/06/14', '2001/06/19', '2001/07/01', '2001/07/06', '2001/07/11', '2001/07/13', '2001/07/14', '2001/07/15', '2001/07/16', '2001/07/20', '2001/07/23', '2001/07/27', '2001/07/29', '2001/08/01', '2001/08/02', '2001/08/03', '2001/08/06', '2001/08/09', '2001/08/10', '2001/08/11', '2001/08/14', '2001/08/18', '2001/08/20', '2001/08/24', '2001/08/29', '2001/08/30', '2001/09/06', '2001/09/11', '2001/09/13', '2001/09/15', '2001/09/16', '2001/09/24', '2001/09/29', '2001/10/04', '2001/10/11', '2001/10/12', '2001/10/13', '2001/10/18', '2001/10/21', '2001/10/22', '2001/10/24', '2001/10/26', '2001/10/27', '2001/10/28', '2001/10/29', '2001/11/02', '2001/11/03', '2001/11/04', '2001/11/05', '2001/11/07', '2001/11/08', '2001/11/12', '2001/11/13', '2001/11/19', '2001/11/20', '2001/11/23', '2001/11/24', '2001/11/28', '2001/12/01', '2001/12/03', '2001/12/09', '2001/12/16', '2001/12/18', '2001/12/21', '2001/12/26'], 'sta_F': ['2001/01/01', '2001/01/03', '2001/01/07', '2001/01/09', '2001/01/11', '2001/01/21', '2001/01/23', '2001/01/25', '2001/01/31', '2001/02/01', '2001/02/02', '2001/02/06', '2001/02/07', '2001/02/10', '2001/02/16', '2001/02/19', '2001/02/20', '2001/02/21', '2001/02/24', '2001/03/01', '2001/03/09', '2001/03/11', '2001/03/13', '2001/03/15', '2001/03/19', '2001/03/25', '2001/03/26', '2001/03/27', '2001/04/01', '2001/04/02', '2001/04/04', '2001/04/05', '2001/04/06', '2001/04/10', '2001/04/15', '2001/05/05', '2001/05/06', '2001/05/07', '2001/05/11', '2001/05/15', '2001/05/16', '2001/05/18', '2001/05/19', '2001/05/20', '2001/06/04', '2001/06/06', '2001/06/11', '2001/06/17', '2001/06/19', '2001/06/22', '2001/06/26', '2001/06/27', '2001/06/28', '2001/07/01', '2001/07/02', '2001/07/03', '2001/07/04', '2001/07/05', '2001/07/09', '2001/07/15', '2001/07/17', '2001/07/22', '2001/07/23', '2001/07/26', '2001/07/28', '2001/08/06', '2001/08/07', '2001/08/10', '2001/08/11', '2001/08/12', '2001/08/13', '2001/08/17', '2001/08/18', '2001/08/21', '2001/08/24', '2001/08/28', '2001/08/29', '2001/09/05', '2001/09/16', '2001/09/20', '2001/09/21', '2001/09/25', '2001/09/26', '2001/09/27', '2001/10/04', '2001/10/11', '2001/10/16', '2001/10/18', '2001/10/20', '2001/10/22', '2001/10/27', '2001/11/02', '2001/11/03', '2001/11/05', '2001/11/07', '2001/11/10', '2001/11/12', '2001/11/27', '2001/11/28', '2001/12/04', '2001/12/08', '2001/12/11', '2001/12/12', '2001/12/16', '2001/12/20', '2001/12/21', '2001/12/24']}
# Menampilkan kehilangan 20 data pertama pada stasiun A
print(data_hilang['sta_A'][:20])
['2001/01/01', '2001/01/02', '2001/01/07', '2001/01/08', '2001/01/11', '2001/01/14', '2001/01/16', '2001/01/19', '2001/01/25', '2001/01/30', '2001/02/02', '2001/02/05', '2001/02/08', '2001/02/10', '2001/02/11', '2001/02/20', '2001/02/21', '2001/02/22', '2001/02/25', '2001/02/28']
# Membaca data hilang pada bulan tertentu di stasiun B
data_hilang_januari = read.missing_row(dataset['20010101':'20010201'][:-1])
print(data_hilang_januari['sta_B'])
['2001/01/13', '2001/01/15', '2001/01/20', '2001/01/23']
date_format
¶Dari hasil diatas diketahui format tanggal berupa YYYY/MM/DD
. Karena kita tahu bahwa dataset ini pada tahun yang sama, maka informasi tahun bisa dihilangkan. Dan kita ingin mengganti format tanggal menjadi lebih sederhana dan jelas yaitu MMM-DD
(contoh: Jan-01
)
Kita bisa mengubah format tanggal menggunakan penulisan strftime.
# Membaca data hilang dengan format tanggal tertentu
data_hilang = read.missing_row(dataset, date_format='%b-%d')
# Menampilkan data yang hilang pada stasiun C dan D
print('Data yang hilang di stasiun C: ', data_hilang['sta_C'])
print('Data yang hilang di stasiun D: ', data_hilang['sta_D'][:10]) # 10 data hilang pertama
Data yang hilang di stasiun C: ['Jan-09', 'Jan-12', 'Jan-13', 'Jan-17', 'Jan-22', 'Jan-23', 'Jan-24', 'Jan-26', 'Feb-02', 'Feb-04', 'Feb-08', 'Feb-10', 'Feb-11', 'Feb-16', 'Feb-18', 'Feb-22', 'Mar-06', 'Mar-07', 'Mar-08', 'Mar-10', 'Mar-19', 'Mar-20', 'Mar-21', 'Mar-22', 'Mar-24', 'Mar-26', 'Mar-27', 'Mar-28', 'Apr-04', 'Apr-07', 'Apr-11', 'Apr-15', 'Apr-17', 'Apr-18', 'Apr-23', 'Apr-24', 'Apr-26', 'Apr-27', 'Apr-28', 'Apr-30', 'May-11', 'May-13', 'May-17', 'May-19', 'May-24', 'May-28', 'May-29', 'May-31', 'Jun-05', 'Jun-06', 'Jun-10', 'Jun-14', 'Jun-15', 'Jun-18', 'Jun-20', 'Jun-22', 'Jun-23', 'Jun-25', 'Jun-28', 'Jul-03', 'Jul-05', 'Jul-08', 'Jul-09', 'Jul-10', 'Jul-11', 'Jul-12', 'Jul-13', 'Jul-18', 'Jul-27', 'Jul-30', 'Jul-31', 'Aug-02', 'Aug-06', 'Aug-14', 'Aug-20', 'Aug-24', 'Aug-26', 'Aug-29', 'Aug-30', 'Sep-08', 'Sep-12', 'Sep-15', 'Sep-21', 'Sep-24', 'Sep-27', 'Oct-02', 'Oct-03', 'Oct-04', 'Oct-05', 'Oct-09', 'Oct-13', 'Oct-14', 'Oct-15', 'Oct-21', 'Oct-23', 'Oct-26', 'Nov-02', 'Nov-07', 'Nov-09', 'Nov-13', 'Nov-16', 'Nov-25', 'Nov-29', 'Dec-06', 'Dec-07', 'Dec-12', 'Dec-22', 'Dec-23', 'Dec-30'] Data yang hilang di stasiun D: ['Jan-06', 'Jan-11', 'Jan-12', 'Jan-18', 'Jan-19', 'Jan-20', 'Jan-22', 'Jan-23', 'Jan-25', 'Jan-26']
- 20190713 - 1.0.1 - Informasi notebook
- 20190712 - 1.0.0 - Initial
Source code in this notebook is licensed under a MIT License. Data in this notebook is licensed under a Creative Common Attribution 4.0 International.