Anda di halaman 1dari 17

Data Analisis adalah cara mengeksplorasi temuan-temuan penting dan mengkomunikasikan

pola-pola penting pada data, seringkali juga menggunakan data untuk mengkomunikasikan
insight yang diperoleh. Suatu proses ilmiah mengubah data menjadi insight atau temuan
berharga untuk pengambilan keputusan bisnis yang lebih baik.

Mengapa perlu menggunakan python?


Karena python menyediakan berbagai library utk operasi math dan statistik, syntax sederhana,
dan kemudahan penggunaan.
Library yg paling sering → Numpy (menyediakan fungsi math utk menangani array berdimensi
besar), pandas (utk data manipulation and analysis)

Numpy → numerical python library yg menyediakan banyak fitur utk array 1,2,3 dimensi dan
mempercepat pengolahan data besar 
Pandas → utk manipulasi, agregasi, visualisasi data, data cleaning, dan data wrangling
Pandas series utk data 1 dimensi, Pandas dataframe utk mengolah dan menyimpan data 2
dimensi

NUMPY ARRAY;
Array → data terstruktur yang menyimpan multiple data bertipe sama, bisa diubah, dan memiliki
index yang dimulai dari nol, disimpan dlm berbagai dimensi.
Dimensi adalah jumlah index yg dibutuhkan utk memanggil suatu elemen.
1 Dimensi (memiliki 1 index /1 tingkat); vector
2 dimensi (memiliki 2 index/2 tingkat) ; matrix
3 dimensi ; 3d array
ND Array (index > 3); 

Numpy (numerical python) → library python yg digunakan untuk bekerja dengan array, bisa juga
digunakan utk bekerja dengan linear algebra, matrix operation, dan advanced math operation. 
cara menggunakan jangan lupa tulis dulu; import numpy as np
Bekerja dengan array 50x lebih cepat daripada menggunakan data list.

import numpy as np

# Menghasilkan angka acak dengan seed yang sama


np.random.seed(42)
a = np.random.rand(5)
print(a)

# Menghasilkan angka acak dengan seed yang berbeda


np.random.seed(99)
b = np.random.rand(5)
print(b)
1. np.arange dipakai untuk membuat array dengan angka yg berurutan.
np.arange(0,11,2) → sama seperti sebelumnya, 0 itu parameter start, 11 parameter
stop, 2 parameter step
2. np.zeros dan np.ones → dipakai utk membuat array berisi angka 0 atau 1 saja, biasa
digunakan utk membuat contoh dataset
3. np.eye(jml tingkat yg diinginkan) → array dng angka 1 di posisi diagonal array dan
angka 0 di sekitarnya, digunakan utk data engineering dan perhitungan aljabar linear
4. np.linspace → utk membuat array berurutan dengan jarak tertentu yg sama sesuai yg
diinginkan, tapi parameternya start, stop, num (jml angka yg diinginkan dalam array).
Bukan start, stop, step
contoh; np.linspace(0,10,50) artinya array berjarak sama dari 0 sampai 10 sebanyak 50
angka. Jadi 10 baris tsb berulang sebanyak 5x hingga jadi 50 baris)

5. np.random.rand → dipakai utk membuat array berisi angka float acak antara 0 s/d 1
np.random.rand(5,5) artinya membuat array 2 dimensi berukuran 5x5.
6. np.random.randn → membuat array berisi angka float acak DISTRIBUSI NORMAL, yg
angkanya tidak terbatas dari 0-1, tetapi bisa ada angka minusnya juga.

7. np.random.randint → menghasilkan array berisi angka integer acak, 2 parameter


pertama utk memilih angka acak, parameter ketiga adalah berapa banyak jml angka
acak yg ingin ditampilkan. Contoh di bawah (1,100) artinya tampilkan angka berapapun
dan hanya satu angka saja antara 1-100.

>> MENGUBAH LIST KE ARRAY DAN MELIHAT BENTUKNYA DENGAN ATRIBUT SHAPE
Dideclare terlebih dahulu variabelnya, baru kemudian variabel tsb dipanggil di bawahnya.

>> MENAMBAH DIMENSI ARRAY DENGAN RESHAPE


arr.reshape(jml baris, jml kolom) 

>> MENGURANGI DIMENSI ARRAY KE 1 DIMENSI DENGAN RESHAPE(-1)

>> MENGETAHUI NILAI MIN DAN MAX SERTA POSISINYA INDEX KEBERAPA DALAM 
SEBUAH ARRAY

randarr.argmax() digunakan utk menampilkan index dari nilai max.

>> NUMPY INDEXING & SELECTION


Indexing mengikuti bentuk array nya, prinsipnya sama seperti indexing pada data list
1. Pada array 1D, tiap value memiliki 1 index. Sehingga saat indexing, kita hanya perlu
mencantumkan 1 nomor index.
2. Pada array 2D, ada 2 index yg harus disebutkan; [ kolom, baris ]

3. Pada Array 3D

>> BRACKET INDEXING AND SELECTION

>> SLICING; mengubah value beberapa elemen sekaligus

Bila ingin mengubah angka/elemen dalam array dengan membuat variabel array baru dan
mempergunakan slicing, arr sebagai array asal dari slice_of_arr juga akan ikut berubah dari 0
sampai 5. Kecuali kita menggandakan datanya dulu baru mengubah, sehingga tidak
mempengaruhi arr yg aslinya. Gandakan data menggunakan arr.copy()
 

>> INDEXING 2D ARRAY


untuk menulis index, bisa pisahkan dengan kurung siku [ ][ ], atau gunakan tanda koma [ , ]

array 2D juga menggunakan tanda slicing (:), juga start, stop, step
[:2,1:] → tampilkan semua baris sebelum baris ke-2 dan semua kolom setelah kolom ke-1. [:,2],
dengan tanda titik dua tsb, kita ingin mengambil seluruh index dan 2 artinya kolom terakhir di
tiap baris. Arti dari perintah tsb adalah “di semua baris tampilkan kolom terakhir”
>> FANCY INDEXING → cara memilih beberapa elemen array yg tidak berurutan secara
sekaligus. Karena terkadang, kita perlu memilih lebih dari satu elemen yang tidak berurutan,
padahal slicing tadi hanya bisa digunakan untuk elemen yang berurutan. 
Contohnya; misal dari 1-10, kita hanya ingin memilih elemen 2,5,9 saja

Fancy indexing juga bisa dipakai pada array 2D:

>> CONDITIONAL SELECTION; pemilihan elemen pada array yg memenuhi syarat tertentu
Contoh misal dari 1-10, kita ingin melihat elemen yg memenuhi syarat > 4, maka tulis arr > 4,
hasilnya berupa array berisi data boolean. Untuk menampilkan angka yg memenuhi syarat >4,
buat variabel baru bernama bool_arr, lalu jadikan bool_arr sebagai index dari arr, yaitu
arr[bool_arr]. Kita akan mendapat hasil berupa array yg berisi angka 5-10

Kalau elemen yg memenuhi syarat ingin langsung ditunjukkan, syarat yg kita inginkan tsb bisa
langsung ditulis dalam kurung siku;
Misalnya ingin melihat elemen yg > 2, maka tulis arr[arr > 2]

>> NUMPY OPERATIONS


1. Broadcasting → cara numpy memperlakukan array yang memiliki bentuk berbeda dalam
operasi aritmatik antar array. Array yg lebih kecil akan di-broadcasting pada array yg
lebih besar, sehingga keduanya memiliki ukuran yg sesuai. Karena ada aturan ukuran
axis dlm broadcasting di mana kedua axis di dimensi yg sama harus berukuran sama
atau salah satu axis berukuran satu.

>> ARITMATIKA 1D ARRAY


Dengan broadcasting, operasi aritmatika dapat dilakukan ke value di dalam array tanpa perlu
looping seperti di list. Ini mempercepat proses mengolah angka di dalam array. Bila dilakukan
operasi matematika, setiap elemen di dalam array akan berubah sekaligus.

Hal yg sama juga berlaku utk aritmatika 2D seperti di atas. Kemudian arr_2d juga bisa
dilakukan operasi math dengan arr lainnya, misal dengan arr_1d seperti di bawah;

2. Numpy Operations; memanipulasi isi array dengan fungsi bawaan math yg tersedia
dalam library numpy
 Fungsi numpy square root np.sqrt(arr) → digunakan utk mencari akar dari
angka di dalam array
 Fungsi exponensial np.exp(arr) → utk hitung laju pertumbuhan populasi, carbon
dating, dsb
 Fungsi sine np.sin(arr_2d) → utk menghitung trigonometri dari elemen di dalam
array. Setiap nilai di dalam array dianggap sebagai nilai radian.
 Fungsi logaritma np.log(arr_2d) → merupakan natural log dan kebalikan dari
exponensial, bisa membalikkan nilai yg telah dieksponensial ke nilai asalnya.

3. Fungsi Numpy lainnya 


a. Insert → contoh (arr,5,10) arr adalah varibel, index ke-5, ganti dgn angka 10
b. Delete 
c. Append (menambahkan angka di akhir)
d. Concatenate → menggabungkan 2 array menjadi 1 pada axis tertentu. Ukuran
array harus sesuai berdasarkan axis yg dijadikan acuan. Hasil penggabungan
bisa berupa array 1 dimensi apabila axis = none digunakan.
e. Fungsi Where → mirip penggabungan if-else dan looping. Misal elemen array arr
yg nilainya > 5 ingin kita ubah menjadi 1. Pada contoh kedua kita kondisikan
semua yg > 5 diganti menjadi 1, dan else akan diganti menjadi 0

>> PANDAS SERIES & DATAFRAME


 Pandas → library utk mengolah data dibangun berdasarkan library numpy
 Series → jenis data yg mirip dengan array 1D di numpy, karena ini memang
dibuat di atas numpy array jd ada kemiripan. Tapi series memiliki label pada
axis-nya, sehingga index pada series memiliki nama. Series juga bisa
menampung bentuk data selain numerik.
 Dataframe → inti dari Pandas yg terinspirasi dari bahasa pemrograman R.
Dataframe terdiri dari beberapa series yang memiliki index yg sama.
Ini merupakan data terstruktur berbentuk tabular dengan kolom dan baris, kolom
merupakan variabel, baris merupakan observasi dari tiap variabel.

>> MEMBUAT PANDAS SERIES

1. Cara membuat Pandas series dengan LIST

2. Membuat pandas series dari NUMPY ARRAY, kita buat terlebih dahulu variabel array
bernama arr yg berisi angka 10,20,30 kemudian gunakan pd.Series untuk mengubah
array menjadi series.
3. Membuat pandas series dari DICT
Key akan berubah menjadi index label, dan value menjadi isi data series

>> MEMBUAT PANDAS DATAFRAME


1. Menggunakan list, array, dan dictionary 
Ada 3 parameter yg dimasukkan, yaitu; kumpulan list data (pastikan ukuran list sama),
parameter index (memberi nama/label pada index-nya), parameter kolom untuk
memberi kolom pada data. Pada contoh pertama, setiap list menjadi 1 baris dalam
dataframe, di mana seharusnya dia menjadi 1 kolom atau 1 variabel.
Maka dari itu tambahkan zip, dan lakukan langkah kedua.

2. Buat dataframe menggunakan list bertingkat atau list yang berisi list di dalamnya. 
Caranya mirip seperti tadi. Hanya saja kita gunakan transpose T untuk mengubah
baris menjadi kolom, begitu juga sebaliknya.

3. Buat dataframe menggunakan Array


4. Buat dataframe menggunakan dictionary

>> PANDAS INDEXING AND SELECTING DATA


Indexing akan mempermudah dalam mempelajari dan mengolah data yang kita miliki.
Pada contoh berikut ini, kita akan menggunakan coding berdasarkan contoh poin 3 buat 
dataframe dengan array seperti dijelaskan di atas.

1. Untuk memilih data, Index pertama yang harus ditulis adalah nama kolom, penulisannya
harus tepat karena case sensitif. Selain itu, jangan pakai nama kolom/atribut yang mirip
dengan nama function di pandas; min, max, insert, sum, dan semacamnya.

2. Untuk memilih > 1 elemen yang tidak berurutan, gunakan [[ ‘elemen1’, ‘elemen2’]]

3. Gunakan loc untuk menampilkan data beserta index-nya, kita juga bisa menggunakan
slicing seperti di bawah ini. Perhatikan di sini bahwa indexing [‘A’:’C’] menggunakan
kurung siku dan C juga ikut ditampilkan. 

4. Gunakan iloc dengan menggunakan nomer posisi index, bukan nama index seperti pada
loc.

iloc juga membantu saat ingin memilih kolom berdasarkan nomor posisi dan bukan
namanya. 

misal df.iloc[:,0:2] artinya tampilkan seluruh baris pada kolom 0 sampai sebelum kolom 2
di dataframe df. Hasilnya, dataframe berisi data dari kolom W (posisi 0) dan kolom X
(posisi 1). Perhatikan jumlah kurung siku saat indexing, misal df.iloc[1,3] itu artinya ingin
menampilkan data di baris ke-1 (A) dan kolom ke-3 (Y). 
Bandingkan dengan df.iloc[[1,3]], mirip fancy indexing, artinya tampilkan baris di index
ke-1 dan 3 dari semua kolom. Jadi hasilnya beda antara [ ] dan [[ ]].

>> CONDITIONAL SELECTION


Di contoh kita masih gunakan dataframe df, conditional pada pandas mirip di numpy.
Tuliskan syarat pada conditional ini seperti menuliskan index, yang memenuhi syarat
akan dimunculkan, lalu yang tidak akan tertera “NaN”. 
Pada df[df[‘W’]>0][‘Y’] itu kita ingin menampilkan data tertentu saja, dengan patokannya
adalah kolom W di mana W syaratnya harus > 0, tapi at the end yang ditampilkan hanya
kolom Y saja. Di kolom W itu, baris C nya < 0 sehingga tidak ditampilkan. Karena W yg
jadi patokan, maka saat kita minta hanya kolom Y pun tidak akan ditampilkan baris C,
meskipun di kolom Y itu pada baris C nilainya > 0.
Menggunakan fancy indexing untuk menampilkan 2 kolom sekaligus
Cara menggunakan 2 kondisi atau syarat yaitu dihubungkan dengan tanda &, dalam
membaca kode ini harap diingat kolom mana yg jadi patokan syarat!
>> PANDAS FOR DATAFRAME MANIPULATION

1. Menambah Data pada DataFrame

Import library pandas dan numpy lalu buat dataframe df dari array dengan 4
kolom dan 5 index label. Penambahan data baru bisa dilakukan per kolom atau
per baris. Cara paling mudah adalah dengan mendeklarasi suatu list sebagai
kolom atau baris baru, hasilnya seperti di bawah;
Bisa juga membuat kolom baru dari penjumlahan dua kolom yang sudah ada;
cara membuat kolom baru di tengah-tengah dataframe, gunakan fungsi insert
seperti di bawah ; df.insert(2, ‘new’,[1,2,3,4,5])
hasilnya adalah kolom new ditambahkan di tengah dataframe (posisi ke-2) 

2. Menghapus Data
Dilakukan juga berdasarkan kolom atau baris, artinya tidak bisa menghapus satu
data saja. Tapi harus sekaligus menghapus satu baris atau kolom. Fungsi drop
dipakai untuk menghapus data pada pandas. Axis=1 bisa juga ditulis
axis=columns yang menunjukkan kita ingin menghapus kolom. Hasilnya, kita
lihat sudah tidak ada lagi kolom new.

Tapi perhatikan bahwa function drop tidak mengubah data asli, ketika kita
tampilkan ulang df masih memiliki kolom new. Jika kita ingin delete kolom dng
permanen, tambahkan parameter inplace dengan isi True. 

Untuk menghapus baris, ganti parameter axis menjadi 0 atau ‘rows’. Kalau axis =
1 artinya column.

3. Manipulasi Index dan Multi-Index pada Pandas

Pada contoh ini, buat dataframe multiindex tentang jumlah pengunjung 2 brand
restoran di kota Jakarta dan Surabaya pada 3 lokasi berbeda. Dengan
multiindex, dataframe akan memiliki 2 level index. Level pertama berisi kota dan
level kedua berisi numerik. Penggunaan multiindex memudahkan utk
membandingkan dan memilih subset data berdasarkan kota dan lokasi.
Cara indexing pada multi-index sama seperti sebelumnya, df.loc[ ] utk melakukan
indexing berbasis index. Multi-index juga bisa diterapkan pada kolom dengan
cara indexing biasa yaitu df[ ].
Pada contoh di bawah, kita memanggil index level pertama, misalnya index
Jakarta. Utk indexing 2 tingkat, jalankan langkah paling bawah utk menampilkan
seluruh pengunjung hanya di index 1 kota Jakarta.
Metode xs juga bisa dipakai utk memilih data pada level tertentu dlm multi-index,
xs lebih simpel dan pendek dibanding loc.
Multi-index bisa kita beri nama agar mudah dalam mengaksesnya. Cek nama
index dengan  df.index.names. Bila nama index masih None, itu tandanya index
belum memiliki nama.

Setelah diberi nama, kita dapat mengakses dengan nama index tsb atau
selecting. Misalnya selecting jumlah pengunjung berdasarkan index location.

4. Sorting Data

Pengurutan data berdasarkan nama karyawan sesuai kolom yg diinginkan.

Untuk mengurutkan dari Z-A gunakan parameter ascending=False, untuk menyimpan


perubahan secara permanen tambahkan inplace=True.

Jika ingin mengurutkan data 2 kolom atau lebih, jalankan df.sort_values(by=[’gender’,


‘name’])
Di contoh ini, kita mengurutkan berdasarkan gender dan nama, di mana keduanya
sama-sama descending. Tambahkan ascending=[False, False]

Setelah perubahan tersebut, index menjadi tidak berurutan. Solusinya, urutkan kembali
index di dataframe dengan cara seperti di bawah;

>> PANDAS FUNCTIONALITY


Fungsi dasar dari Pandas dapat dibagi berdasarkan kegunaannya.
a. Explore dataframe
i. Head dan tail untuk melihat data misal 5 paling awal dan 3 paling akhir 
1. df.head(5), df.tail(3)
ii. Info utk memberi ringkasan data pada dataframe, informasinya dapat berupa
seluruh nama kolom, jml data yg tidak kosong, serta tipe data 

iii. Shape, columns, dtypes memperlihatkan metadata dlm dataframe kita


Bila kita ingin melihat salah satu informasi dalam tabel, misal ingin melihat ukuran
dataframe, maka jalankan df.shape, kalau ingin apa ada yg salah dengan nama kolom
kita jalankan df.columns, atau jika ingin melihat tipe data jalankan df.dtypes
b. Descriptive Statistic
i. Describe → dengan df.describe() dapat menampilkan ringkasan statistik secara
lengkap meliputi count, mean, min, max, standar deviasi, dsb. Jadi dengan ini,
kita bisa memperkirakan bentuk dan sebaran data kita. Perhatikan bahwa
df.describe() hanya utk kolom yg berisi data numerik.
Jalankan df.describe(include = object) bila ingin mendeskripsikan data string atau
object. Outputnya; dataframe berisi jml data dan observasi yg unik dari tiap
kolom, serta data apa yg sering muncul dan berapa frekuensinya.

ii. Mean, median, std, min, max → menampilkan data statistik secara terpisah

iii. Unique, nunique, value_counts → utk melihat gambaran data yg kita miliki

Outputnya berupa array berisi setiap data unik di kolom ‘JobTitle’


Sedangka nunique membantu untuk menghitung jml data unik di suatu kolom
Utk menghitung jml tiap data di suatu kolom, gunakan value_counts, misalnya
menampilkan nama jabatan dan frekuensi kemunculannya. 

>> MISSING VALUE; data kosong di baris atau kolom tertentu. Bisa disebabkan karena
kesalahan pengambilan data atau karena data tersebut memang tidak tersedia. Ini dapat
mengganggu analisa data dan menyebabkan bias. Karena itu, kemampuan mendeteksi dan
menangani missing value penting. NaN pada missing value berarti ‘not a number’

Fungsi isna() membantu kita melihat apakah suatu data memiliki missing value, outputnya
adalah boolean dengan True berarti data kosong, dan false artinya bukan data kosong.
Tambahkan fungsi sum() utk melihat jumlah data kosong di tiap kolom.

Cara menangani data kosong bisa hapus data kosong itu dengan dropna(), tapi semua baris yg
memiliki NaN akan terhapus karena 1 baris di pandas adalah 1 observasi data. Jadi jangan
dilakukan bila data kosong terlalu banyak dan data yg lengkap hanya sedikit.
Tambahkan parameter axis=1 bila ingin hapus berdasarkan kolom, gunakan pada baris yg
memiliki terlalu banyak data kosong. Lalu parameter thresh digunakan utk membuat batasan
berapa jml data tidak kosong yg harus ada di suatu baris/kolom. Bila thresh=2, maka baris yg
data lengkapnya < 2 yang akan dihapus. Bila ditambah parameter axis=1 artinya kolom yg data
lengkapnya <2 akan dihapus.

Cara kedua adalah MENGISI data kosong tsb dengan fillna(). Misal kita ingin mengisi data
kosong dng teks ‘FILL VALUE’, maka hasilnya semua data kosong akan diisi teks tersebut.
Alternatif lain, data kosong bisa diisi dgn nilai rata2 di kolom yg terdapat data kosong tersebut.
Misal kita ingin mengisi data kosong di baris index 2 di kolom A dengan nilai rata2 dari kolom A.
Jangan lupa utk menyimpan perubahan permanen, tambahkan inplace=True.
Selain rata2, kita juga bisa pakai std, max, min, atau median ke dalam data kosong tsb. Angka
yg diisi bisa berdasarkan kolom yg memiliki data kosong tsb atau berdasarkan perhitungan di
kolom lain. Jadi kita menggunakan perkiraan data terdekat.

>> AGREGASI DATA (PENGELOMPOKAN)


misalnya ketika kita mau mencari presentase nilai di tahun tertentu, itu adalah agregasi.

Misal kita ingin agregasi data berdasarkan company yg membeli barang kita berdasarkan
dataframe di atas, maka hasilnya ;

Kita juga bisa melakukan describe berdasarkan company.

Kita juga bisa melakukan indexing pada dataframe hasil dari groupby, gunakan transpose agar
company menjadi kolom.

Lebih dalam dan spesifik lagi, berikut langkahnya bila kita ingin indexing ke dalam GOOG saja
dan ingin melihat nilai percentil ke-25 penjualan dari company tsb.
>> PANDAS MERGING, JOINING, CONCATENATING
Pandas memiliki fungsi merge utk penggabungan antar dataframe berdasarkan logika join di
SQL.

Ini adalah dataframe yg ingin kita joinkan, dengan kolom key yg sama2 ada di kedua dataframe
sebagai penyambung saat join.

Inner join paling mudah karena merupakan fungsi default, hanya menampilkan baris2 yg
memiliki nilai key1 dan key2 yg sama, baik pd dataframe left maupun right.

Utk outer join, tambahkan parameter how=’outer’ saat menjalankan merge. Semua data akan
ditampilkan tanpa memperhatikan kesamaan key antara 2 dataframe. Terdapat data NaN pada
elemen yg tidak ada di salah satu tabel, sama seperti yg terjadi di SQL.
Buat dataframe dan nilai kolom key dijadikan index. Pada join, nilai default utk parameter how
adalah ‘left’, shg output dari kode tsb adalah left join.

Kita juga bisa menggabungkan 2 dataframe dengan concatenating.

Perhatikan bahwa dimensi data yg ingin digabung harus sama pada axisnya.
Atau bisa juga dengan cara di bawah ini;

>> PANDAS OPERATIONS


1. Cara memakai function pada suatu kolom di Pandas, misal di bawah ini kita buat
dataframe sebagai berikut ;
Column operation menggunakan sebuah function, misal def times2 (x) : return x*2, dan
akan berlaku untuk suatu kolom tertentu saja misal col1. Parameter x akan merujuk ke
setiap data di col1, shg ditampilkan value di setiap col1 dikalikan 2. 

Lambda juga bisa digunakan utk melakukan operasi math di tiap data pada kolom. Tapi
penggunaan lambda lebih disarankan pada string atau object, bukan numerik.

Di bawah ini, kita juga lakukan operasi math terhadap 2 kolom, di mana hasilnya akan
masuk pada kolom baru. Melakukan operasi antar kolom dalam pengolahan data sangat
banyak digunakan.

Pivot table digunakan utk merangkum data dlm jml besar, tdk bersifat agregasi tp untuk
mengubah bentuk dataframe. Pada contoh di bawah, kita memiliki data dengan date
variable dan value sbg kolom. Jika kita ingin melakukan analisa time series, melakukan
pivoting dengan variabel sbg kolom akan mempermudah analisa. Kita akan lebih mudah
membandingkan antar-variabel dengan rentang waktu tertentu.

>> DATA INPUT AND OUTPUT


Berikut ini cara membaca data berbagai format sbg input untuk pandas, dan cara
menyimpan dataframe pandas ke dalam file dng format lain.
Format2 file; csv, excel, JSON, import data from web or HTML mjd dataframe pandas

1. Cara membaca dan menyimpan file CSV (Coma Separated Value); file dng tipe
teks menggunakan tanda koma sbg pemisah nilai di dlm datanya. Krn berupa
teks, csv file fleksibel dan sering dipakai menyimpan dan memindahkan data
antar software. Utk membukanya, gunakan pd.read_csv(‘nama file’)
parameternya nama file dlm bentuk string.
Bila ingin menyimpan data dlm format csv tanpa menyimpan index-nya, maka
jalankan df.to_csv(‘nama file’,index=False)
2. Membaca file excel, gunakan pd.read_excel(‘nama_file.xlsx’,sheet_name=’Sheet1’)
parameternya adalah nama file & nama sheet yg ingin dibaca.
Selanjutnya utk menyimpan data gunakan
df.to_excel(‘nama_file.xlsx’,sheet_name=’Sheet1’)
3. JSON file tdk hanya utk javascript, JSON sangat mirip dng dictionary data type dng key
dan value. Gunakan pd.read_json dengan parameter nama file dan orient. Setiap data 1
observasi, akan menjadi 1 baris dalam dataframe.

4. Membaca HTML; gunakan parameter berupa alamat laman web 

>> DATA WRANGLING


Juga disebut data munging, proses konversi data mentah ke dalam format data yg
memudahkan utk dianalisis. Terdiri dari; ekstraksi, cleaning, storing.
Tujuan data wrangling ;
1. Perlu dilakukan sebab kita bekerja dng beragam bentuk data, bahkan database pun
formatnya bisa berbeda-beda. Juga banyak data yg tidak disiapkan utk menyelesaikan
suatu masalah yg ingin kita selesaikan. Jd tugas kita utk mempersiapkan data hingga
siap digunakan. Misal kita ingin analisa performa strategi digimar pd medsos company.
Data medsos ini bisa saja awalnya disimpan di server company, lalu kita scrape datanya
dan gabungkan dng data2 lain utk pengambilan keputusan.
2. Kualitas data yg perlu ditingkatkan krn mempengaruhi akurasi model, decision making
yg lebih akurat dll
3. Kualitas sumber data masih kurang, bila tdk ada deskripsi data dan dokumentasi yg
bagus seperti data dictionary maka akan sulit utk memahami data tsb.
4. Format data yg berbeda-beda dari beragam sumber
5. Data yang inkonsisten karena tidak ada standarisasi dlm input data 
6. Data ambigu dan multitafsir, misalnya berupa singkatan yg bisa memiliki banyak arti
7. Data yg kosong, hilang, tdk lengkap, Data outlier / anomali, Data ganda
 

LANGKAH DALAM DATA WRANGLING;


1. Data acquisition; kumpulkan data dari berbagai sumber → web, sensor, database
konvensional, web scraping, dsb.
2. Data loading & extracting; membuka data dari berbagai format → XML, JSON, CSV
3. Data cleaning; diagnosis dan menangani masalah kualitas data
4. Data integration; menggabungkan data dari berbagai sumber utk membentuk dataset yg
lengkap dan kaya informasi
5. Data profiling; menggunakan statistik deskriptif dan visualisasi utk meningkatkan kualitas
data.
6. Data enrichment; memperkaya dataset dng feature generation, transformasi data,
agregasi, penyederhanaan, dsb
7. Data storing; menyimpan data yg sudah bersih.

>> DATA CLEANSING


Proses mendeteksi dan menangani inkonsistensi dlm data utk meningkatkan kualitas. Disebut
proses iteratif, di mana kita mungkin akan melakukannya berulang kali. 

1. Anomali data; gangguan data yg disebabkan missing value, inkonsistensi, outliers.


kesalahan input data shg salah tipe data atau datanya duplikat, bisa juga salah eja, data
tidak sesuai pada kolomnya, salah kolom, dsb. Data juga bisa tidak salah, tidak kosong,
tapi tidak berguna. Misalnya data yg berbeda atau ambigu karena singkatan.
2. Missing value; 
a. missing at random (MAR)→ tterjadi krn variabel berkaitan dng variabel lain yg
bukan dirinya sendiri. Misalnya peneliti mempelajari kemampuan baca
seseorang, data kosong banyak terjadi pada siswa hispanik dibanding kaukasia.
Artinya data kosong terjadi krn variabel etnik, dlm hal ini variabel lain di luar
kemampuan baca.
b.  missing completely at random (MCAR) → terjadi benar2 scr random dan tdk
berkaitan dng variabel lain maupun dirinya sendiri.
c. missing not at random (MNAR) → berkaitan dengan variabel kemampuan baca
itu sendiri, data kosong krn memang siswa mengalami kesulitan baca
POLA MISSING VALUE;
1. Univariate; missing value terisolasi atau terjadi pada 1 variabel
2. Monorate; terjadi jika data kosong di 1 variabel tertentu menyebabkan
data kosong di variabel lain setelahnya.
3. General pattern; missing value paling banyak terjadi di hampir semua
kolom scr acak

MENGATASI DATA KOSONG;


1. Deletion; hapus data kosong utk hindari efek dari adanya data kosong 
a. List wist deletion; menghapus baris yg mengandung missing value. Teknik ini
baik bila data kosongnya MCAR yg random.
Perhatikan ukuran data setelah penghapusan, jika datanya mjd
terlalu kecil, maka ini tdk disarankan.
b. Pairwise deletion; hanya menghapus data kosong yg dipakai utk
analisis saja. Data sebaiknya MCAR.
c. Mean inputation; mengisi data kosong dng mean dari data lain di kolom tsb, namun
metode ini dpt mengubah distribusi data krn kita jd menurunkan standar deviasi.
d. Regression inputation; data kosong akan diisi dng model regresi. Ide dasarnya ialah
menggunakan kolom yg penuh utk prediksi data kosong. 
2. KNN Imputation; mengisi data kosong dng cara mirip seperti regresi inputation, hanya
saja kita gunakan model machine learning KNN. Utk data kategorikal biasanya kita isi
data kosong dng algoritma voting mayoritas. Data kosong akan diisi dng dgn kelas yg
paling banyak. Misal data kosong pada golongan darah akan diisi dng jmlg golongan
paling banyak yaitu O+. Utk data numerikal biasanya diisi dng nilai rata2.
3. Model-based; mengisi dng cara model machine learning

>> REGULAR EXPRESSION


REGEX ; segala sesuatu yg berhubungan dng pencocokan dan mencari pola di dalam teks,
misalnya saat ingin mengekstrak sub-text dari sebuah dokumen yg besar seperti mengekstrak
alamat email.
1. Teknik Character Sets; dengan kurung siku [ ]
2. Character ranges
Kalau di character sets kita menentukan hurufnya satu per satu, maka di character
ranges kita gunakan 2 karakter yg dipisahkan dengan tanda hubung seperti layaknya range
(rentang) data. Misal kita asumsikan huruf bisa A-Z, angka bisa 0-9.

Contoh berikutnya, kita cocokkan XRA dengan 1AA, lalu 000 dengan 1AA
XRA 000
1AA 1AA

[A-Z0-0][A-Z][A-Z]\s[0-9][A-Z0-9][A-Z0-9]

3. Negative Character Sets

4. Metacharacters

5. Repetition Characters

Anda mungkin juga menyukai