Penggunaan hidrokit.prep.read

  • Kategori: data preparation
  • Tujuan: Membaca informasi dari tabel
  • Dokumentasi: readthedocs

Informasi notebook

  • notebook name: taruma_hidrokit_prep_read
  • notebook version/date: 1.0.1/20190713
  • notebook server: Google Colab
  • hidrokit version: 0.2.0
  • python version: 3.7

Instalasi hidrokit

In [0]:
### 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/[email protected]
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 Library

In [0]:
import numpy as np
import pandas as pd

Dataset

Digunakan dataset buatan menggunakan numpy.random

In [0]:
# 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
Out[0]:
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.]])
In [0]:
# 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)
Out[0]:
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

Fungsi .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

Fungsi dasar

In [0]:
# Import module
from hidrokit.prep import read
In [0]:
# Menampilkan dataset
dataset.head(10)
Out[0]:
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.

In [0]:
# 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']}
In [0]:
# 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']
In [0]:
# 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']

Argumen 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.

In [0]:
# 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']

Changelog

- 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.