Pengolahan data MAWS#
Impor pustaka python yang dibutuhkan #
import numpy as np
import sys
from diklatmar import loader
Lokasi Data#
Lokasi Data Diklat#
dir_data = "/data/local/marine-training/data/MATPEL_03/MAWS_BMKG"
Lokasi Meta file#
Metadata AWS Existing#
fnme_meta1 = "metadata_existing.csv"
Buka metadata 1#
data = loader(dir_data)
df_meta1 = data.meta(fnme_meta1)
2025-05-07 14:04:41 : I Loaded metadata from metadata_existing.csv
# Menampilkan tabel metadata
print(df_meta1)
station latitude longitude
id
1000000009 AWS_Maritim__Ujung_Kulon -6.815362 105.482341
3000000001 AWS_Maritim_Bungus -1.029570 100.395900
3000000002 AWS_Maritim_Kendari -3.978255 122.597562
3000000004 AWS_Maritim_Bakauheni -5.869730 105.755494
3000000006 AWS_Maritim_Tanjung_Perak -7.196366 112.741795
3000000007 AWS_Maritim_Banyuwangi_Ketapang -8.142775 114.401037
3000000008 AWS_Maritim_Maumere -8.621250 122.219722
3000000009 AWS_Maritim_Tanjung_Priok -6.121360 106.838106
3000000010 AWS_Maritim_Bitung 1.458697 125.217993
3000000011 AWS_Maritim_Pontianak -0.020613 109.337349
3000000012 AWS_Maritim_Lembar_Lombok -8.730206 116.073726
3000000014 AWS_Maritim_Semarang -6.943510 110.431310
3000000015 AWS_Maritim_Paotere -5.109306 119.419730
3000000016 AWS_Maritim_Dermaga_7_Merak -5.922931 105.991811
3000000017 AWS_Maritim_Cilacap -7.724845 109.023000
3000000018 AWS_Maritim_Kep_Seribu -5.656575 106.574023
3000000020 AWS_Maritim_Kota_Baru_Kalsel -3.271340 116.180070
3000000022 AWS_Maritim_Belinyu -1.629848 105.733411
3000000023 AWS_Maritim_Tanjung_Balai_Karimun 0.988130 103.435320
3000000024 AWS_Maritim_Pemenang -8.393633 116.099609
3000000025 AWS_Maritim_Bau_Bau -5.457129 122.615760
3000000026 AWS_Maritim_Tigaras_Danau_Toba 2.798000 98.789083
3000000027 AWS_Maritim_Ciwandan -6.014820 105.951580
3000000028 AWS_Maritim_Ambon -3.696242 128.173943
3000000029 AWS_Maritim_Dok_IIJayapura -2.535071 140.718554
3000000030 AWS_Maritim_Batam 1.164722 103.996670
3000000031 AWS_Maritim_Probolinggo -7.726563 113.225716
3000000032 AWS_Maritim_Nunukan 4.145324 117.665538
3000000033 AWS_Maritim_Balikpapan -1.162981 116.780232
3000000034 AWS_Maritim_Benoa -8.747114 115.208687
3000000035 AWS_Maritim_Sorong -0.888814 131.266570
3000000036 AWS_Maritim_Kupang -10.188707 123.527018
3000000037 AWS_Maritim_Ternate 0.813629 127.388821
3000000038 AWS_Maritim_Sabang 5.889736 95.319380
3000000046 AWS_Maritim_Gilimanuk -8.161093 114.437265
3000000047 AWS_Maritim_Padangbai -8.533838 115.509487
Metadata AWS MMS 1#
fnme_meta2 = "metadata_mms1.csv"
Buka metadata 2#
df_meta2 = data.meta(fnme_meta2)
2025-05-07 14:04:41 : I Loaded metadata from metadata_mms1.csv
# Menampilkan tabel metadata
print(df_meta2)
station latitude longitude
id
4000000001 AWS_Maritim_BAJOE -4.543464 120.405456
4000000002 AWS_Maritim_JAMBI -0.803240 103.483000
4000000027 AWS_Maritim_KUALA_TANJUNG 3.380154 99.469821
4000000005 AWS_Maritim_LABUAN_BAJO -8.460550 119.919900
4000000007 AWS_Maritim_MALANG -8.434172 112.683796
4000000034 AWS_Maritim_NATUNA 3.892710 108.383400
4000000010 AWS_Maritim_PALEMBANG -2.217510 104.488350
4000000011 AWS_Maritim_PALU -0.711692 119.857228
4000000012 AWS_Maritim_PANGKALAN_BUN -2.739063 111.728834
4000000013 AWS_Maritim_PANJANG -5.469986 105.319980
4000000016 AWS_Maritim_SADENG -8.191283 110.799452
4000000017 AWS_Maritim_SAMARINDA -0.570467 117.206440
4000000020 AWS_Maritim_ULEE_LHEUE 5.566502 95.294757
4000000021 AWS_Maritim_MANADO 1.497902 124.839557
4000000023 AWS_Maritim_TIDORE 0.680083 127.455880
4000000024 AWS_Maritim_MERAUKE -8.478508 140.380499
4000000025 AWS_Maritim_TEGAL -6.848089 109.127352
4000000026 AWS_Maritim_BELAWAN 3.785223 98.700572
4000000028 AWS_Maritim_TUAL -5.616902 132.741513
4000000029 AWS_Maritim_KARIMUNJAWA -5.878397 110.429594
4000000031 AWS_Maritim_TANGKIANG_LUWUK -1.210097 122.629740
4000000033 AWS_Maritim_BELANG_BELANG -2.473550 119.131067
4000000036 AWS_Maritim_GARONGKONG -4.366579 119.612001
4000000037 AWS_Maritim_ROTE -10.722342 123.043262
4000000038 AWS_Maritim_TOROBULU -4.445947 122.456296
4000000039 AWS_Maritim_BIAK -1.185679 136.076831
4000000040 AWS_Maritim_BIRA -5.606003 120.466757
4000000041 AWS_Maritim_PACIRAN -6.865680 112.367521
4000000042 AWS_Maritim_SAUMLAKI -7.981906 131.290586
4000000043 AWS_Maritim_KAYANGAN_LOMBOK -8.485700 116.673984
4000000044 AWS_Maritim_AMBON -3.790782 128.101176
Plot lokasi MAWS#
Load lokasi MAWS berdasarkan metadata#
lons1 = df_meta1["longitude"].values
lats1 = df_meta1["latitude"].values
lons2 = df_meta2["longitude"].values
lats2 = df_meta2["latitude"].values
locs1 = np.column_stack((lons1, lats1))
locs2 = np.column_stack((lons2, lats2))
imdir = "./imgs"
exts = [95, 135, -10, 10]
data_lons = [100, 105, 110, 115, 120]
data_lats = [-5, -5, -5, -5, -5]
data_points = np.column_stack((data_lons, data_lats))
Plot MAWS#
from diklatmar import plotter
maws = plotter(img_dir=imdir)
maws.plot_aws_location(awslocs1=locs1, awslocs2=locs2)
# maws.plot_aws_location()
2025-05-07 14:04:42 : I Using default extents = [90, 145, -15, 15]
2025-05-07 14:04:42 : I Creating plot, please kindly wait...

!!! Pertanyaan 1 !!!#
Coba buat plot berisi lokasi MAWS disekitar wilayah kerja anda
# Write your code here
Catatan !!!#
Beberapa data MAWS tidak tersedia secara lengkap untuk periode 2023–2024.
Akses Data#
Data observasi yang didapatkan dari MAWS disimpan dalam file dengan format .parquet
. Format data ini dipilih karena efisiensi dalam penyimpanan dan pengambilan data. Selain itu, format ini menyediakan skema kompresi dan penyandian berkinerja tinggi untuk menangani data yang kompleks dalam jumlah besar dan didukung oleh banyak bahasa pemrograman dan alat analisis.
Untuk memuat atau membaca data, kita akan memerlukan pustaka python pandas
. Pada bahasan berikut akan diberikan contoh mengakses data secara manual maupun dengan menggunakan modul yang telah disiapkan.
Contoh akses data#
Akses data secara manual#
Definisikan lokasi/path file#
file_path = "/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=12/23.parquet"
'''
Pada pelatihan ini, file disusun berdasarkan tahun, bulan, dan tanggal.
Berikut merupakan contoh untuk mengakses satu tanggal (23) pada tahun 2024 bulan 12 untuk AWS_Maritim__Ujung_Kulon
''';
Load data menggunakan pustaka Pandas#
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data_maws = pd.read_parquet(file_path)
# data_maws.index = pd.to_datetime(data_maws.index, format="%Y-%m-%d %H:%M:%S")
data_maws
windspeed | winddir | temp | rh | pressure | rain | solrad | netrad | watertemp | waterlevel | ta_min | ta_max | pancilevel | pancitemp | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | ||||||||||||||
2024-12-23 02:57:00 | 4.7 | 17.0 | 26.4 | 91.5 | 1010.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 02:58:00 | 4.7 | 17.0 | 26.5 | 92.1 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 02:59:00 | 4.8 | 16.0 | 26.5 | 91.6 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 03:00:00 | 5.2 | 15.0 | 26.6 | 91.7 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 03:01:00 | 4.8 | 16.0 | 26.6 | 91.1 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2024-12-23 17:30:00 | 5.1 | 13.0 | 26.8 | 92.7 | 1009.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 17:31:00 | 4.4 | 11.0 | 26.8 | 92.6 | 1009.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 17:32:00 | 4.9 | 11.0 | 26.9 | 92.6 | 1009.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 17:33:00 | 5.0 | 12.0 | 26.9 | 92.6 | 1009.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-12-23 17:34:00 | 4.1 | 15.0 | 26.9 | 92.8 | 1009.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
877 rows × 14 columns
isinstance(data_maws.index, pd.DatetimeIndex)
True
data_maws['rh'].plot(figsize=(10, 5)) # width=10, height=5 (dalam satuan inch)
plt.title("Grafik")
plt.xlabel("Waktu")
plt.ylabel(r"$RH \ [$%$]$")
plt.grid(True)
plt.show()
%time

CPU times: user 7 μs, sys: 0 ns, total: 7 μs
Wall time: 13.8 μs
!!! Pertanyaan 2 !!!#
Mengakses dan membuat grafik sederhana untuk parameter suhu udara dan kelembapan nisbi
# Write your code here
Bagaimana memuat data selama satu bulan?#
Membuat daftar path file yang terdapat pada satu direktori bulan tertentu#
import os
path2dir = "/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11"
fl_path_list = sorted([os.path.join(path2dir, f) for f in os.listdir(path2dir) if f.endswith('.parquet')])
fl_path_list
['/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/01.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/02.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/03.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/04.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/05.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/06.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/07.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/08.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/09.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/10.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/11.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/12.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/13.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/14.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/15.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/16.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/17.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/18.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/19.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/20.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/21.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/22.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/23.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/24.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/25.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/26.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/27.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/28.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/29.parquet',
'/data/local/marine-training/data/MATPEL_03/MAWS_BMKG/1000000009-AWS_Maritim__Ujung_Kulon/Year=2024/Month=11/30.parquet']
Membaca dan memuat data#
Membaca masing-masing file harian dalam bentuk dataframe kemudian menyimpannya ke dalam list, selanjutnya menggabungkannya menggunakan pd.concat()
df_list = []
for fl in fl_path_list:
df = pd.read_parquet(fl)
df_list.append(df)
df_month = pd.concat(df_list)
df_month
windspeed | winddir | temp | rh | pressure | rain | solrad | netrad | watertemp | waterlevel | ta_min | ta_max | pancilevel | pancitemp | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | ||||||||||||||
2024-11-01 00:00:00 | 0.0 | 91.0 | 26.8 | 92.5 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.195 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:01:00 | 0.1 | 84.0 | 26.9 | 92.2 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.196 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:02:00 | 0.2 | 88.0 | 26.9 | 92.4 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.186 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:03:00 | 0.6 | 103.0 | 26.9 | 92.2 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.199 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:04:00 | 0.9 | 88.0 | 27.0 | 91.4 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.201 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2024-11-30 23:55:00 | 0.4 | 113.0 | 25.8 | 98.8 | 1008.8 | 0.0 | 0.0 | 0.0 | 0.0 | 1.192 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:56:00 | 0.5 | 113.0 | 25.8 | 98.8 | 1008.9 | 0.0 | 0.0 | 0.0 | 0.0 | 1.184 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:57:00 | 0.5 | 110.0 | 25.8 | 98.8 | 1008.9 | 0.0 | 0.0 | 0.0 | 0.0 | 1.182 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:58:00 | 0.4 | 110.0 | 25.8 | 98.7 | 1008.9 | 0.0 | 0.0 | 0.0 | 0.0 | 1.183 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:59:00 | 0.4 | 110.0 | 25.7 | 98.6 | 1008.9 | 0.0 | 0.0 | 0.0 | 0.0 | 1.186 | 0.0 | 0.0 | 0.0 | 0.0 |
39561 rows × 14 columns
isinstance(df_month.index, pd.DatetimeIndex)
True
df_month['temp'].plot(figsize=(10, 5)) # width=10, height=5 (dalam satuan inch)
plt.title("Grafik")
plt.xlabel("Waktu")
plt.ylabel(r"$Air \ Temp \ [\circ C]$")
plt.grid(True)
plt.show()

Bagaimana menyeleksi data dari resolusi tiap menit menjadi data setiap 10 menit?#
df_month_10min = df_month.resample('10min').first()
df_month_10min
windspeed | winddir | temp | rh | pressure | rain | solrad | netrad | watertemp | waterlevel | ta_min | ta_max | pancilevel | pancitemp | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | ||||||||||||||
2024-11-01 00:00:00 | 0.0 | 91.0 | 26.8 | 92.5 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.195 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:10:00 | 0.5 | 89.0 | 27.3 | 91.9 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.209 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:20:00 | 0.9 | 95.0 | 27.6 | 91.0 | 1010.6 | 0.0 | 0.0 | 0.0 | 0.0 | 1.208 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:30:00 | 0.1 | 88.0 | 27.9 | 90.1 | 1010.8 | 0.0 | 0.0 | 0.0 | 0.0 | 1.196 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-01 00:40:00 | 0.7 | 92.0 | 28.4 | 88.5 | 1010.8 | 0.0 | 0.0 | 0.0 | 0.0 | 1.193 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2024-11-30 23:10:00 | 0.3 | 89.0 | 25.4 | 98.5 | 1008.2 | 0.0 | 0.0 | 0.0 | 0.0 | 1.259 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:20:00 | 0.1 | 123.0 | 25.4 | 98.6 | 1008.5 | 0.0 | 0.0 | 0.0 | 0.0 | 1.237 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:30:00 | 0.0 | 112.0 | 25.5 | 98.7 | 1008.5 | 0.0 | 0.0 | 0.0 | 0.0 | 1.245 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:40:00 | 0.8 | 113.0 | 25.5 | 98.6 | 1008.6 | 0.0 | 0.0 | 0.0 | 0.0 | 1.230 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-11-30 23:50:00 | 0.3 | 103.0 | 25.7 | 98.9 | 1008.7 | 0.0 | 0.0 | 0.0 | 0.0 | 1.213 | 0.0 | 0.0 | 0.0 | 0.0 |
4320 rows × 14 columns
!!!!! PENTING !!!!!#
Mohon membaca lebih lanjut mengenai resampling:
!!! Pertanyaan 3 !!!#
Mengakses dan membuat grafik sederhana untuk parameter suhu udara dan kelembapan nisbi untuk periode 1 bulan dengan resolusi temporal 1 jam
# Write your code here
Akses data menggunakan modul yang telah disiapkan#
Pada bagian impor pustaka di awal notebook ini, kita telah mengimpor modul yang telah disiapkan: diklatmar
. Pada modul tersebut terdapat submodul: plotter
dan loader
. Submodul plotter
digunakan untuk keperluan plotting sedangkan loader
digunakan untuk keperluan mengakses dan memuat data. Berikut merupakan contoh untuk menggunakan submodul loader
untuk mengakses data. Bedanya dengan mteode manual sebelumnya, memuat data menggunakan submodul loader
akan langsung memuat data satu bulan.
Inisialisasi submodul dengan direktori data#
data_load = loader(data_dir=dir_data)
Muat data AWS#
# Contoh ini menggunakan data MAWS Ujung Kulon
id_aws = 1000000009
tahun = 2024
bulan = 10
aws_data = data_load.maws_data(
id_aws=id_aws,
year=tahun,
month=bulan
)
2025-05-07 14:05:14 : I Found AWS id: 1000000009
2025-05-07 14:05:14 : I Found year: 2024
2025-05-07 14:05:14 : I Found month: 10
2025-05-07 14:05:14 : I Loaded 10 files with 13535 records.
aws_data
windspeed | winddir | temp | rh | pressure | rain | solrad | netrad | watertemp | waterlevel | ta_min | ta_max | pancilevel | pancitemp | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time | ||||||||||||||
2024-10-22 00:00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 1012.3 | 0.0 | 0.0 | 0.0 | 0.0 | 2.160 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-22 00:01:00 | 0.0 | 0.0 | 0.0 | 0.0 | 1012.3 | 0.0 | 0.0 | 0.0 | 0.0 | 2.153 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-22 00:02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 1012.3 | 0.0 | 0.0 | 0.0 | 0.0 | 2.159 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-22 00:03:00 | 0.0 | 0.0 | 0.0 | 0.0 | 1012.3 | 0.0 | 0.0 | 0.0 | 0.0 | 2.159 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-22 00:04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 1012.4 | 0.0 | 0.0 | 0.0 | 0.0 | 2.164 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2024-10-31 23:55:00 | 0.3 | 101.0 | 26.8 | 92.1 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.180 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-31 23:56:00 | 0.0 | 92.0 | 26.9 | 92.1 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.182 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-31 23:57:00 | 0.1 | 89.0 | 26.8 | 92.2 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.192 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-31 23:58:00 | 0.3 | 83.0 | 26.9 | 92.4 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.181 | 0.0 | 0.0 | 0.0 | 0.0 |
2024-10-31 23:59:00 | 0.5 | 95.0 | 26.8 | 92.7 | 1010.4 | 0.0 | 0.0 | 0.0 | 0.0 | 1.184 | 0.0 | 0.0 | 0.0 | 0.0 |
13535 rows × 14 columns
Muat dan simpan ke dalam file csv#
# Contoh ini menggunakan data MAWS Ujung Kulon
id_aws = 1000000009
tahun = 2024
bulan = 10
dir_saving = '/home/dika/Diklat_Mar_2025/results/csv_files'
aws_data = data_load.maws_data(
id_aws=id_aws,
year=tahun,
month=bulan,
save_data=True,
sv_dir=dir_saving
)
2025-05-07 14:05:14 : I Found AWS id: 1000000009
2025-05-07 14:05:14 : I Found year: 2024
2025-05-07 14:05:14 : I Found month: 10
2025-05-07 14:05:14 : I Loaded 10 files with 13535 records.
---------------------------------------------------------------------------
PermissionError Traceback (most recent call last)
Cell In[27], line 7
4 bulan = 10
5 dir_saving = '/home/dika/Diklat_Mar_2025/results/csv_files'
----> 7 aws_data = data_load.maws_data(
8 id_aws=id_aws,
9 year=tahun,
10 month=bulan,
11 save_data=True,
12 sv_dir=dir_saving
13 )
File ~/marinemet-training/4_/diklatmar/loader.py:84, in loader.maws_data(self, id_aws, year, month, save_data, sv_dir)
81 self.logging(MSG_INFO, f"Loaded {len(parquet_files)} files with {len(df_month)} records.")
83 if save_data:
---> 84 dir2sv = os.makedirs(sv_dir, exist_ok=True)
85 pth2sv = f"{sv_dir}/{id_aws}_{year_str}_{month_str}.csv"
86 df_month.to_csv(pth2sv)
File <frozen os>:217, in makedirs(name, mode, exist_ok)
File <frozen os>:217, in makedirs(name, mode, exist_ok)
File <frozen os>:227, in makedirs(name, mode, exist_ok)
PermissionError: [Errno 13] Permission denied: '/home/dika/Diklat_Mar_2025'
!!! Pertanyaan 4 !!!#
Mengakses data MAWS disekitar anda selama satu tahun. Buatlah serta membuat grafik sederhana
# Write your code here