0% menganggap dokumen ini bermanfaat (0 suara)
4 tayangan16 halaman

Panduan Lengkap Data Preparation EDA

Dokumen ini adalah modul praktikum mengenai persiapan data yang mencakup tujuan, pengantar, dan langkah-langkah dalam Exploratory Data Analysis (EDA), data cleansing, dan data manipulation. EDA penting untuk memahami data sebelum analisis lebih lanjut, sementara data cleansing dan manipulation membantu memastikan data yang digunakan akurat dan relevan. Modul ini juga menjelaskan cara menangani masalah umum dalam data seperti missing values, duplikasi, dan outliers.

Diunggah oleh

Bambang Widjanarko
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
4 tayangan16 halaman

Panduan Lengkap Data Preparation EDA

Dokumen ini adalah modul praktikum mengenai persiapan data yang mencakup tujuan, pengantar, dan langkah-langkah dalam Exploratory Data Analysis (EDA), data cleansing, dan data manipulation. EDA penting untuk memahami data sebelum analisis lebih lanjut, sementara data cleansing dan manipulation membantu memastikan data yang digunakan akurat dan relevan. Modul ini juga menjelaskan cara menangani masalah umum dalam data seperti missing values, duplikasi, dan outliers.

Diunggah oleh

Bambang Widjanarko
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI

UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

MODUL III
DATA PREPARATION

1. Tujuan Praktikum
a. Memahami pengertian dan langkah Exploratory Data Analysis
b. Memahami cara membersihkan data
c. Memahami cara menggabungkan data
d. Memahami cara memanipulasi data
e. Memahami pengertian, penyebab, cara identifikasi, dan solusi dari outliers
f. Memahami pengertian dan solusi dari data yang imbalance

2. Pengantar Praktikum

2.1 Exploratory Data Analysis


Exploratory Data Analysis adalah satu rangkuman yang akan memberikan
kesimpulan dari suatu informasi untuk melakukan analisis yang lebih mendalam lagi. EDA
dilakukan untuk mengetahui informasi apa yang diberikan oleh data yang dimiliki. Hal
tersebut dapat membantu bagaimana dalam memanipulasi data untuk mendapatkan
jawaban yang diharapkan dan mempermudah analyst dalam menemukan pola, anomaly
data, dan mengecek asusmsi yang sudah didefinisikan.

EDA menjadi penting karena tanpa melakukan EDA terdapat kemungkinanan


kehilangan banyak informasi penting yang terdapat di dalam dataset dan keputusan yang
tidak tepat dalam analisis selanjutnya. Selain itu, EDA akan menghemat waktu pengerjaan
proyek Data sicence karena apabila melakukan data modelling tanpa menerapkan EDA,
besar kemungkinan model yang akan kita lakukan memiliki performa yang kurang baik.
Karena model yang dibuat tanpa memahami kondisi data yang dimiliki.
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Bagaiamana cara melakukan Exploratory Data Analysis?


a. Inisiasi data
b. Data Cleansing
c. Visualisasi

2.2 INISASI DATA & MEMBACA DATASET


Berikut merupakan cara membaca dataset menggunakan library pandas pada python.
Symbol Meaning
pd.read_csv(filename) Membaca data dari csv file
pd..read_table(filename) Membaca data dalam file teks yang
dipisahkan tiap kolom
pd.read_excel(filename) Membaca data dari excel file
pd.read_sql(query, connection Membaca dari sebuah database sql
object)
pd.read_json(json_string) Read from a json formatted string, url, or
file
pd.read_html(url) Parse an hmtl url, string, or file, and
extract table to a list of dataframes
pd.read_clipboard() Take the contents of your clipboard and
pass it to read_table
[Link](dict) From a dict, create dataframe with the
keys as column names and the values as
the data

2.3 DATA CLEANSING


Data cleansing adalah proses mendeteksi dan mengoreksi data yang tidak akurat atau
data yang aneh dari kumpulan data, tabel, atau database untuk mengidentifikasi bagian data
yang tidak lengkap, tidak benar, tidak akurat atau tidak relevan, untuk kemudian
dimodifikasi, diganti, atau dihapus sesuai kebutuhan.
Terdapat berbagai macam data yang sering dijumpai, ada data yang telah bersih dan
siap untuk diolah, namun ada pula data yang kotor dengan indikasi terdapat data yang
hilang, value data yang tidak sesuai dengan tipe data, dan data yang ganda atau duplikasi.
Keberadaan data yang masih kotor akan membawa impact yang besar untuk hasil analisa
Anda, dan tidak jarang akan menyebabkan kesalahan interpretasi hasil ketika melakukan
agregasi.
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Gambar 1. Penyebab Data Kotor

Gambar tersebut menjelaskan mengenai proses di mana data cleaning akan


mempengaruhi serangkaian proses dari analisis data. Beberapa faktor yang menjadi
pemicu suatu data dikatakan kotor adalah adanya kesalahan manusia maupun cara
pengumpulan suatu data. Kesalahan-kesalahan ini meliputi kesalahan input data seperti
adanya missing data, data yang terduplikasi termuat informasi yang sama lebih dari satu
kali, pattern yang tidak sama dalam 1 data, dan adanya kesalahan ejaan.

Data cleaning adalah step yang paling banyak menyita waktu seseorang dalam
mengolah suatu data. Oleh karena itu apabila data cleansing tidak dilakukan dengan baik,
maka dapat terjadi kesalahpahaman(misunderstanding) dalam menginterpretasikan suatu
data. Permasalahan umum dalam data cleansing adalah sebagai berikut.

1. Missing Value
Missing value merupakan kejadian yang umum terjadi ketika mengolah data,
dikarenakan data yang tidak tersedia sehingga terdapat beberapa data yang hilang. Missing
value dapat dideteksi dengan munculnya nilai NaN (Not Available) atau blank space pada
suatu tabel. Contohnya dapat dilihat pada table berikut.
Tabel 1. Contoh Tabel Missing Value
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Dataset di atas hanya menampilkan 5 data teratas dan dapat dilihat bahwapada kolom
Cabin terdapat NaN value, sehingga kita perlu mengetahuiseberapa besar nilai yang hilang
tersebut. Cara menampilkan missing value pada table dapat menggunakan sintax berikut.

[Link](df).sum()

Setelah mengetahui data yang hilang, langkah selanjutnya adalah memahami kondisi
data yang dimiliki terlebih dahulu, apakah adanya null value disebabkan kesalahan input
atau memang sengaja dikosongkan akibat dari kondisi yang tidak terpenuhi. Handling
missing value merupakan step yang penting, terutama jika source data yang terbatas.
Berikut merupakan beberapa cara yang dapat dilakukan dalam mengatasi missing value.

a. Menghilangkan atau menghapus data yang hilang. Solusi ini digunakan jika
memang data yang missing tidak memungkinkan untuk diisi dengan value lain, atau
terlalu banyak data kosong di dalamnya. Perlu terlebih dahulu diketahui persentase
dari data missing tersebut, jika terlalu banyak mengganti data yang kosong dengan
value lain akan menyebabkan hasil misleading. Sintaxnya adalah sebagai berikut.

df = [Link](['column_name'], axis=1)

b. Melakukan inputting value dengan data yang menyerupai seperti minimum value,
maximum value, mean, atau modus. Ada syarat-syarat tertentu ketika Anda
menangani missing value dengan nilai-nilai ini. Pertama pahami dulu kondisi data
Anda, apakah data tersebut merupakan data kategori atau bukan. Jika data tersebut
adalah data kategori, Anda dapat menggunakan modus untuk mengisi bagian yang
miss. Namun jika data tersebut kontinu, Anda bisa menggunakan minimum value,
maximum value, mean atau median. Syntaxnya adalah sebagai berikut.

df['column_name'].fillna(int(df['column_name'].mean()),
inplace=True)
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

c. Melakukan manual inputting value dengan data yang sebenarnya (cara ini
membutuhkan high effort untuk mencari data yang hilang tersebut).

d. Menentukan custom value berdasarkan asumsi bisnis yang terjadi.

2. Duplicated Data
Duplikasi data (duplicate) terjadi ketika terdapat nilai atau ID yang berulang pada
suatu data. Selain itu, suatu data dikatakan duplikat apabila terdapat informasi yang sama
dalam setiap kolom pada data tersebut. Permasalahan duplikasi ini perlu dilakukan data
cleansing, karena akan menyebabkan double perhitungan ketika dilakukan suatu analisis
lebih mendalam.

Langkah pertama yang dilakukan yaitu mengecek apakah terdapat duplikasi pada
data, biasanya dapat diindikasikan dengan munculnya value yang sama pada semua kolom.
Jika dalam data Anda terdapat kolom yang dengan informasi yang unique atau tidak boleh
double seperti passenger id. Cara untuk melakukan pengecekan duplikasi data dapat
menggunalan syntax berikut.
df[df.column_name.duplicated(keep=False)].sort_values('column_name'
)
Permasalahan duplikasi dapat diselesaikan dengan menghapus row yang sama,
sehingga hanya tersisa unique value yang akan dianalisa. Untuk menghilangkan duplikasi
data dapat dilakukan menggunakan syntax berikut.
df = df.drop_duplicates(subset=['column_name']).reset_index()

3. Standardize and Normalize Data


Standardisasi merupakan suatu proses merubah skala data menjadi bentuk standar
yang memiliki μ = 0 dan 𝛔 = 1, sehingga kita dapat membandingkan features yang memiliki
skala dan unit berbeda. Ada kalanya dalam data yang kita miliki, satu kolom dengan kolom
lainya memiliki skala nilai yang jauh berbeda. Perbedaan ini bisa jadi menggiring opini
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

bahwa salah satu kolom lebih superior dari kolom lainnya karena memiliki nilai yang besar.
Oleh karena itu, pengaturan skala akan sangat membantu. Formula standardisasi adalah
sebagai berikut:
𝑋𝐼 − 
Z= 
# Standardisasi data parch
df['Parch_stand'] = ([Link] – [Link]()) / ([Link]())

Berbeda dengan standarisasi, normalisasi merupakan suatu proses merubah skala


nilai menjadi berdistribusi normal (Z: 0 ≤ z ≤ 1), di mana menggunakan formulasi sebagai
berikut:
𝑥−min⁡(𝑥)
Z = max(𝑥)−min⁡(𝑥)
# Normalisasi data parch
df['Parch_norm'] = ([Link] – [Link]()) / ([Link]() –
[Link]())

2.4 DATA MANIPULATION


Data manipulation adalah suatu proses memanipulasi atau mengubah dataagar
mudah diorganisir dan mudah untuk dibaca/dipahami. Data manipulation akan sangat
membantu dalam proses analisis data. Ada beberapa contoh penerapan data manipulation
yang akan dijelaskan sebagai berikut.

1. Checking And Changing Data Type


Function dtypes dan astype() pada Pandas dapat digunakan untuk mengecek dan
mengubah data type. Hal ini dapat memudahkan dalam menganalisa suatu data. Banyak
sekali permasalahan analisis yang terhalang karena tipe data yang berbeda. Contohnya,
ketika terdapat data ranking yang biasanya dalam bentuk angka atau alfabet dan harus
diganti dalam bentuk numerik saat menganalisa dengan data yang lain.
Atau, terdapat data numerik yang sebenarnya adalah data yang menunjukkan ID seseorang.
Apabila dilakukan pengecekan, terkadang dijumpai kondisi di mana data ID ini bertipe data
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

integer, akan tetapi berdasarkan definisinya seharusnya tipe data ini adalah string di mana
tidak bisa dilakukan analisa statistik walaupun bentuknya numerik.

# Mengecek data type


[Link]

# Mengubah data type


df['Parch_string'] = df['Parch'].astype(str)

2. Renaming Columns
Renaming digunakan untuk mengubah nama kolom seperti pada contoh di bawah
ini. Hal ini akan Anda butuhkan apabila dari data Anda ternyata nama-nama kolom sulit
dipahami konteksnya atau terlalu panjang/pendek. Di bawah ini merupakan code untuk
mengubah nama kolom dalam DataFrame:

df = [Link](columns={'kolomlama': 'kolombaru’, 'kolom1lama': 'kolom1baru' })

3. Removing Data
Tidak semua data digunakan dalam analisa. Semakin banyak data yang digunakan akan
semakin mempersulit kita dalam menganalisa, sehingga kita perlu untuk menghapus
beberapa data yang tidak kita gunakan. Untuk mereduksi data, Anda dapat menggunakan
perintah drop seperti berikut:

df = [Link]([''nama_kolom1', 'nama_kolom2'], axis=1)

4. Filtering Data
Sama halnya dengan removing data, filtering data juga digunakan agar hasil analisa
kita dapat mengerucut ke objective atau tujuan analisis tersebut. Kita dapat memanfaatkan
fungsi-fungsi DataFrame pada Pandas untuk memfilter data apa yang ingin diambil. Pada
contoh di bawah ini, kita memfilter data male only dan balita menjadi suatu dataframe baru.
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Kita juga dapat memanfaatkan .iloc[] untuk mengambil row berdasarkan index yang telah
disetting.

kota = df[df['City'] == 'Los Angeles'] #mengambil baris yang memiliki nilai Los Angeles
pada kolom city

harga = df[df['Harga'] <= 5000] #mengambil baris yang memiliki nilai kecil atau sama
dengan 5000 pada kolom harga
[Link][0:2] #mengambil baris berdasarkan index

2.5 DATA WRANGLING


Data wrangling merupakan istilah untuk kesatuan proses pengolahan suatu data
mulai dari mengumpulkan data, memilih data, kemudian mengubah data untuk
menghasilkan analisis yang dapat menjawab permasalahan.

1. Merging Data
Merging merupakan proses penggabungan dua atau lebih tabel menjadi satu tabel
agar memudahkan dalam mengolah suatu data. Di materi sebelumnya, Anda telah belajar
join table pada SQL. Konsep dari merging ini sama dengan sebelumnya. Penggabungan 2
data dilakukan dengan mencari kata kunci yang sama dari kedua data tersebut. Kita
memiliki 2 tabel, yaitu tabel 1 dan tabel 2 yang memiliki kesamaan nilai pada kolom yang
disebut sebagai Primary Key.

df_new = tabel_1.merge(tabel_2, how='left', on='Primary Key')

2. Grouping Data
Grouping dapat digunakan untuk agregasi dan mengelompokkan berdasarkan kolom
tertentu. Grouping ini banyak digunakan dalam proses filtering data. Contoh penerapannya
dapat dilihat pada sintax code di bawah.
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

df_groupby(by=['kolom_1', kolom_2'], dropna=False).count()[['kolom_3']]

3. Transform Data
Data transformation merupakan suatu proses merubah format, struktur, atau nilai
dari suatu data. Terdapat berbagai macam data transformation, seperti mengubah tipe data,
mengubah data menjadi bentuk yang standar atau normal, dan sebagainya.

4. Data Correlation
Data correlation digunakan untuk mengetahui seberapa besar hubungan antara 2
variabel, apakah dua variabel tersebut memiliki hubungan yang saling berkaitan atau tidak.
Terdapat dua nilai dalam korelasi, yaitu nilai positif (mempengaruhi) dan negatif (tidak
mempengaruhi). Perlu ditandai bahwa sebelum melakukan korelasi, sebaiknya data diubah
menjadi bentuk standar agar tidak terjadi perbedaan skala.

[Link] = df[['Age', 'Survived']]


df_correlation.corr()
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

2.6 HOW TO HANDLE OUTLIERS


Outlier merupakan suatu observasi pada kumpulan data yang memiliki pola yang
berbada dari observasi-observasi lainnya pada kumpulan data tersebut. Penyebab
munculnya outlier antara lain:
• Adanya kesalahan prosedur dalam menginputkan data
• Kesalahan dalam pengukuran atau analisis
• Adanya keadaan khusus

Outlier dapat ditemukan secara univariat maupun multivariat. Outlier univariat


adalah outlier yang ada dalam satu variable, sedangkan outlier multivariat adalah outlier
yang ada dalam dua atau lebih variable.

Berikut merupakan beberapa cara mendeteksi outlier:


KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

a. Boxplot

Output:

Pada gambar diatas, terdapat titik data yang jauh dari boxplot sehingga terindikasi
data tersebut dikatakan outlier.

b. Z-score
Langkah yang dilakukan untuk mendeteksi outlier dengan z-score adalah
menghitung z-score menggunakan rumus (Xi-mean)/std, kemudian tentukan nilai ambang
batas 3 dan tandai titik data yang nilai absolut z-score lebih dari ambang batas sebagai
outlier.
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Code:

c. Interquartile Range (IQR)


Langkah deteksi outlier dengan IQR adalah sebagai berikut:

• Urutkan kumpulan data dalam urutan naik


• Hitung kuartil ke-1 dan ke-3 (Q1, Q3)
• Hitung IQR = Q3 – Q1
• Hitung batas bawah = (Q1 – 1.5*IQR) dan batas atas = (Q3 + 1.5*IQR)
• Periksa tiap nilai dalam data, lalu tandai data yang berada di bawah batas bawah
maupun di batas atas sebagai outliers

Contoh code:
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Solusi
a. Menghapus outlier
Outliers yang terdeteksi akan dihapus dari dataset dan tidak diikutkan dalam Analisa.
Berikut merupakan contoh code python menghapus outlier pada kolom lead.

b. Mengganti dengan nilai pada batas tertentu


Dalam Teknik ini, outlier dibatasi pada nilai tertentu di atas nilai persentil ke-90 atau di
bawah nilai persentil ke-10. Berikut ini merupakan contoh code python:
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

c. Mengganti dengan nilai median


Karena nilai rata-rata sangat dipengaruhi oleh outlier, disarankan untuk mengganti outlier
dengan nilai median dibandingkan nilai rata-rata. Berikut ini merupakan contoh code
python.

2.7 HOW TO HANDLE IMBLANACE DATA


Data yang tidak seimbang merupakan masalah yang harus dihadapi dalam
melakukan sebuah pemodelan. Masalah ini sering muncul dalam pemodelan klasifikasi,
dimana target value tidak sama atau proporsi kelas yang tidak sama.

Berikut ini contoh data yang tidak seimbang seperti status pinjaman.

Sebagian besar algoritma machine learning tidak bekerja dengan baik dengan dataset tidak
seimbang. Imbalance pada data yang digunakan akan menghasilkan model yang tidak
cocok. Cara mengatasi imbalance data dengan cara berikut:
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

a. Undersampling
Undersampling menyeimbangkan dataset dengan mengurangi ukuran kelas
mayoritas. Metode ini digunakan Ketika jumlah data mencukupi. Kelebihan cara ini adalah
meningkatkan waktu pemrosesan dan meminimalisir masalah penyimpanan dengan
mengurangi data training Ketika dataset yang digunakan sangat besar. Kekurangan cara ini
adalah membuang informasi yang mungkin penting dalam pengelompokkan. Selain itu,
sampel yang diambil secara acak bisa merupakan sample bias, tidak mempresentasikan
populasi sehingga akurasi yang diperoleh tidak akan baik.

b. Oversampling
Oversampling digunakan Ketika jumlah data tidak mencukupi. Oversampling adalah
mencoba menyeimbangkan dataset dengan meningkatkan ukuran sampel minoritas dengan
mereplikasi secara acak untuk menyajikan representasi yang lebih tinggi dari kelas
minoritas dalam sampel.

c. Metode SMOTE
SMOTE merupakan pengembangan dari metode oversampling dimana Teknik ini
mensintesis sampel baru dari kelas minoritas untuk menyeimbangkan dataset dengan cara
sampling ulang sampel kelas minoritas. Perbedaan dengan metode oversampling adalah
Ketika metode oversampling memperbanyak pengamatan secara acak maka metode
SMOTE memperbanyak jumlah data kelas minoritas agar setara dengan kelas minoritas.
Berikut merupakan contoh code python penggunaan metode SMOTE dengan memanggil
package imblearn
KEMENTERIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI
UNIVERSITAS ANDALAS
FAKULTAS TEKNIK

DEPARTEMEN TEKNIK INDUSTRI


LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI

Anda mungkin juga menyukai