Assalam wbt. Jumpa lagi.
Post yang lepas kita telah mempelajari bagaimana kita boleh import data *.dat atau *.csv lalu melihat isi kandungan data serta membuat filter terhadap mana-mana data yang ada di dalamnya serta menyimpan ke dalam fail output berasingan. Post kali ini kita akan bergerak ke hadapan lagi untuk membuat correction terhadap mana-mana elemen dalam data berdasarkan condition yang ditetapkan. Ada sesetengah data mungkin didapati rosak, hilang atau tidak memenuhi kehendak pengguna bagi melaksanakan sebarang tugas terhadapnya. Data-data tersebut seharusnya diproses terlebih dahulu bagi mengurangkan error semasa running process di dalam python.
Post kali ini saya menggunakan data hampir sama seperti data1.dat tetapi sedikit perubahan dilakukan terhadap dataset untuk tujuan post kali ini. Copy data ini dan save sebagai data2.dat dan simpan ke dalam folder tugas korang. Data ini mengandungi some elemen yang tidak diperlukan di dalam proses pengiraan seperti -9999, Nan dan 0.01. Elemen ini pada hakikatnya mempunyai maksud tertentu di dalam bidang meteorologi namun kali ini kita andaikan ianya tidak diperlukan dan di assigned dengan sesuatu nilai iaitu 0.0. Data yang telah dibuat pembetulan akan disimpan ke dalam fail berasingan iaitu output-data2.dat.
data2.dat
station lat lon rain1 rain2 rain3
48604 6.483 100.267 0.2 -9999 1.6
48600 6.333 99.733 1.6 NaN 16.6
48603 6.2 100.4 0.4 -9999 1.2
48602 5.457 100.388 4.6 NaN 20.2
41529 5.35 100.4 5.6 -9999 28.8
48601 5.297 100.272 2.4 0.01 7.6
48620 4.221 100.701 0.2 0.01 -9999
48625 4.567 101.1 3.4 -9999 21.4
48632 4.467 101.367 19.6 -9999 0.6
48642 3.967 102.35 0.6 -9999 -9999
48648 3.102 101.645 51.4 7.2 2.8
48647 3.131 101.553 10.4 1 27.8
48665 2.267 102.25 84 0.2 -9999
48615 6.164 102.301 1.8 1.6 6.4
48616 5.533 102.2 2 NaN 10.2
48618 5.383 103.1 2.6 -9999 7.2
48619 5.333 103.133 0.3 7.6 11.1
################## copy skrip di sini ######################
import numpy as np
data2=np.loadtxt('data2.dat',skiprows=1)
data2[data2<0.0]=0.0
data2[data2==0.01]=0.0
data2[np.isnan(data2)]=0.0
station=data2[:,0]
lat1=data2[:,1]
lon1=data2[:,2]
rain1=data2[:,3]
rain2=data2[:,4]
rain3=data2[:,5]
np.savetxt('output-data2.dat',data2,fmt='%9.3f')
################ end copy here ##############################
Catatan:
a) data2[data2<0.0]=0.0 merujuk kepada syarat yang dikenakan kepada kesemua data2 yang bernilai <0.0 atau negatif harus ditukar kepada nilai baharu iaitu 0.0
b) data2[data2==0.01] merujuk kepada syarat yang dikenakan kepada kesemua data2 yang bernilai tepat 0.01 arus ditukar kepada nilai baharu iaitu 0.0
c) data2[np.isnan(data2)]=0.0 merujuk kepada syarat yang dikenakan kepada kesemua data2 yang bernilai NaN (Not A Number) kepada nilai baharu iaitu 0.0.
d) Korang boleh meletakkan sebarang nilai seperti yang diinginkan menggunakan kaedah yang sama namun harus berhati hati agar tidak merubah nilai yang penting.
e) Declaration bagi setiap column data adalah terpakai seperti kes-kes yang telah dibincangkan sebelum ini. Seterusnya korang boleh meneruskan operasi program seperti biasa.
f) Akhir sekali kesemua data yang telah diproses disimpan ke dalam fail berasingan baharu iaitu output-data2.dat. Sila rujuk fail output tersebut bagi melihat perubahan terhadap data.
output-data2.dat
48604.000 6.483 100.267 0.200 0.000 1.600
48600.000 6.333 99.733 1.600 0.000 16.600
48603.000 6.200 100.400 0.400 0.000 1.200
48602.000 5.457 100.388 4.600 0.000 20.200
41529.000 5.350 100.400 5.600 0.000 28.800
48601.000 5.297 100.272 2.400 0.000 7.600
48620.000 4.221 100.701 0.200 0.000 0.000
48625.000 4.567 101.100 3.400 0.000 21.400
48632.000 4.467 101.367 19.600 0.000 0.600
48642.000 3.967 102.350 0.600 0.000 0.000
48648.000 3.102 101.645 51.400 7.200 2.800
48647.000 3.131 101.553 10.400 1.000 27.800
48665.000 2.267 102.250 84.000 0.200 0.000
48615.000 6.164 102.301 1.800 1.600 6.400
48616.000 5.533 102.200 2.000 0.000 10.200
48618.000 5.383 103.100 2.600 0.000 7.200
48619.000 5.333 103.133 0.300 7.600 11.100
Selamat mencuba!
No comments:
Post a Comment