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.
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
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.
>> MENGUBAH LIST KE ARRAY DAN MELIHAT BENTUKNYA DENGAN ATRIBUT SHAPE
Dideclare terlebih dahulu variabelnya, baru kemudian variabel tsb dipanggil di bawahnya.
>> MENGETAHUI NILAI MIN DAN MAX SERTA POSISINYA INDEX KEBERAPA DALAM
SEBUAH ARRAY
3. Pada Array 3D
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()
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
>> 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]
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.
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
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.
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 [[ ]].
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.
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
Setelah perubahan tersebut, index menjadi tidak berurutan. Solusinya, urutkan kembali
index di dataframe dengan cara seperti di bawah;
ii. Mean, median, std, min, max → menampilkan data statistik secara terpisah
iii. Unique, nunique, value_counts → utk melihat gambaran data yg kita miliki
>> 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.
Misal kita ingin agregasi data berdasarkan company yg membeli barang kita berdasarkan
dataframe di atas, maka hasilnya ;
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.
Perhatikan bahwa dimensi data yg ingin digabung harus sama pada axisnya.
Atau bisa juga dengan cara di bawah ini;
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.
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.
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]
4. Metacharacters
5. Repetition Characters