METODE STATISTIKA

~ Pengenalan Dasar R dan Python ~

Nb: Untuk segala bentuk diskusi, kritik dan saran mengenai materi silahkan hubungi admin!

Alamat \(\space \rightleftharpoons\) Sebagai Berikut : \(\downarrow\)
Email
Instagram https://www.instagram.com/dsciencelabs/
RPubs https://rpubs.com/dsciencelabs/
Github https://github.com/dsciencelabs/
Telegram @dsciencelabs

R Vs Python

R dan Python adalah bahasa pemrograman yang sangat populer, dinamis, digunakan secara luas dalam komunitas data science. R lebih banyak digunakan dalam analisis statistik sementara Python menyediakan pendekatan yang lebih umum mengenai sains data (sehingga dianggap lebih mudah untuk digunakan oleh pemula). Mempelajari kedua bahasa pemrograman ini adalah solusi yang lebih bijak karena keduanya mempunyai kelebihan dan kekurangan masing-masing. R dan Python membutuhkan investasi waktu, latihan dengan tutorial, dan melakukan projek-projek kecil berbasis LAB hingga penerapan sais data pada kasus-kasus yang sebenarnya.

Persamaan

  • R dan Python adalah bahasa pemrograman multi-paradigma. Keduanya mendukung Pemrograman Berorientasi Objek, Pemrograman Imperatif, Pemrograman Prosedural, dll.
  • Keduanya adalah bahasa yang ditafsirkan.
  • Keduanya dapat digunakan untuk mengembangkan algoritme.
  • Keduanya adalah bahasa pemrograman tingkat tinggi.
  • Keduanya gratis dan open source.
  • Keduanya dapat diintegrasikan dengan aplikasi lain seperti MySQL, Oracle, GitHub, dll.
  • Keduanya mendukung file yang berbeda seperti file CSV, file excel, file XML dan file JSON.
  • Kedua bahasa tersebut mudah digunakan dan dipelajari.

Perbedaan

Berikut adalah tabel yang secara ringkas membandingkan dua bahasa pemrograman Python dan R:

Kriteria R Python
Ruang lingkup Data science dan statistik Aplikasi dan industri
Pengguna Akademisi dan peneliti Programmers & developers
IDE (user interface) RStudio Spyder, Jupyter Notebook, Pycharm, dll
Ekstensi .R dan .Rmd .py dan .ipynb
Struktur data vektor, list, matriks, array, faktor, dan bingkai data list, dictionary, dan tupel
Packages dan library tidyverse, ggplot2, caret, zoo pandas, scipy, scikit-learn, TensorFlow, caret
Kelebihan memiliki lebih banyak library dan kualitas visualisasi grafik yang dihasilkan sangat tinggi sistematika penulisan script yang mudah dibaca, fokus pada kecepatan komputasi, pengembangan web, jaringan, otomatisasi, dll
Kekurangan Ketergantungan antar library library lebih sedikit dibanding R
Integrasi fitur RMarkdown dan Shiny integrasi aplikasi lebih luas

Catatan: Saya mengasumsikan R/Rstudio and Python/Anaconda sudah ter-install pada Komputer/Laptop Anda. Selanjutnya, anda dapat menggunakan RStudio dan Anaconda dalam pengenalan dasar-dasar R dan Pyton yang dibagi menjadi sub-topik dalam artikel (materi) ini.

Sintaks Dasar

Suatu program di R dan Python terdiri dari tiga hal mendasar: Variabel, operan (nilai) dan Komentar. Variabel digunakan untuk menyimpan suatu nilai, sedangkan Komentar digunakan untuk meningkatkan pemahaman pengguna mengenai skrip atau koding.

Penugasan Variabel

R

Dalam R, penugasan suatu program biasanya menggunakan suatu variabel yang dicadangkan untuk dapat merekam berbagai jenis data sesuai nama yang diberikan ke lokasi penyimpanan/memori. Perintah penugasan variabel ini, dapat dinotasikan dengan tiga cara:

  • = , digunakan untuk penugasan sederhana
  • <-, digunakan untuk penugasan dari sisi Kiri
  • ->, digunakan untuk penugasan dari sisi Kanan
x = 2
y <- 3 
5 -> z 
print(c(x,y,z))

Python

Untuk menjalankan Python dengan Rstudio, install-lah Anaconda pada PC anda dengan baik, dan jangan lupa melakukan upgrade python tersebut menggukan CMD.exe pada anaconda navigator dengan menjalankan koding berikut:

conda update --all
conda create -n py38 python=3.8
conda activate py38

Kemudian jalankan koding berikut:

library(reticulate)
library(Rcpp)
# conda_list()
use_condaenv("py38", required = TRUE)

Setelah itu, anda dapan menjalankan koding python pada Rstudio dengan mengganti ```{r} menjadi ```{python} pada chunck Rmd anda, dan jalankan koding berikut:

x = 2
y = 3 
z = 5 
print(x,y,z)

Selain menyimpan atau pengisian nilai, ada juga menjumlahkan, mengurangi, perkalian, pembagian, dsb.

Operator Simbol
Penjumlahan +=
Pengurangan -=
Perkalian *=
Pembagian /=
Sisa Bagi %=
Pemangkatan **=

Perhatikan contoh berikut:

x += 2
print(x)

Penambahan Komentar

Menambahkan/Memberikan komentar dalam skrip/koding R dan Python adalah untuk memudahkan anda memahami arti/makna penggunaan suatu perintah/program. Komentar yang ditulis dalam sebuah program tersebut hanya bersifat penjelasan tentang apa yang dilakukannya atau apa yang seharusnya dilakukan oleh sebuah skrip/koding. Perlu dicatat bahwa komentar yang bersifat informasi tidak ada hubungannya dengan logika pemrogaram yang sedang anda gunakan. Mereka benar-benar diabaikan oleh kompiler dan dengan demikian tidak pernah tercermin pada input. Biasanya komentar dituliskan pada satu baris yang tersedia di R dan Python, dengan menggunakan # di awal maupun di akhir pernyataan.

R

# Mengganti nilai x yang sudah direkam (Komentar di awal pernyataan) 
x=12  
z <- x + y   # Mengganti nilai z yang sudah direkam (Komentar di akhir pernyataan) 
x + y -> z   # sama dengan diatas

Python

# Mengganti nilai x yang sudah direkam (Komentar di awal pernyataan) 
x=12 
z = x + y   # Mengganti nilai z yang sudah direkam (Komentar di akhir pernyataan) 

Operator

Operator adalah simbol yang mengarahkan compiler untuk melakukan berbagai macam operasi terhadap beberapa penugasan. Operator mensimulasikan berbagai operasi matematis, logika, dan keputusan yang dilakukan pada sekumpulan Bilangan Kompleks, Integer, dan Numerik sebagai penugasan masukan (input). R dan Python mendukung sebagian besar empat jenis operator biner antara satu set penugasan. Dalam ini, kita akan melihat berbagai jenis operator yang tersedia di R dan Python dan penggunaannya.

Aritmatika

Penggunaan operator aritmatika dalam program R dan Python adalah untuk mensimulasikan berbagai operasi matematika, seperti penambahan, pengurangan, perkalian, pembagian, dan modulo. Operator aritmatika yang dilakukan bisa saja berupa nilai skalar, bilangan kompleks, atau vektor.

Operator R Python
Penjumlahan + +
Pengurangan - -
Perkalian * *
Divisi/Pembagian / /
Pemangkatan ^ * *
Modulo %% %

R

Untuk pemahaman lebih lanjut, perhatikan cuplikan R berikut:

x <- c(2,3,5)    # memuat vektor x
y <- c(2,4,6)    # memuat vektor y
x+y              # hasil penjumahan vektor x dan y
print (x+y)      # hasil penjumahan vektor x dan y
print (x-y)      # hasil pengurangan vektor x dan y
print (x*y)      # hasil perkalian vektor x dan y
print (x/y)      # hasil pembagian vektor x dan y
print (x^y)      # hasil pemangkatan vektor x dan y
print (x%%y)     # hasil modulo vektor x dan y

Adakalanya anda perlu menampilkan keterangan/komentar yang juga melekat pada hasil perhitungan R itu sendiri. Maka anda dapat melakukannya dengan cara berikut:

cat("Penjumahan vektor x dan y :", x + y, "\n")
cat("Pengurangan vektor x dan y :", x - y, "\n")
cat("Perkalian vektor x dan y :", x * y, "\n")
cat("Pembagian vektor x dan y :", x / y, "\n")
cat ("Pemangkatan vektor x dan y :", x ^ y) 
cat("Modulo vektor x dan y :", x %% y, "\n")

Catatan: Penjelasan lebih lekap mengenai modulo dapat lihat pada link ini

Python

Untuk pemahaman lebih lanjut, perhatikan cuplikan Python berikut.

Catatan: Terlebih dahulu install numpy di Anaconda Navgator anda dengan cara membuka lingkungan (environment) py38 yang sudah anda buatkan sebelumnya.

import numpy as np      # fungsi untuk operasi pada Array
x = np.array([2,3,5])   # memuat vektor x
y = np.array([2,4,6])   # memuat vektor y
x+y                     # hasil penjumahan vektor x dan y
print (x+y)             # hasil penjumahan vektor x dan y
print (x-y)             # hasil pengurangan vektor x dan y
print (x*y)             # hasil perkalian vektor x dan y
print (x/y)             # hasil pembagian vektor x dan y
print (x**y)            # hasil pemangkatan vektor x dan y
print (x%y)             # hasil modulo (Sisa bagi) vektor x dan y

Adakalanya anda perlu menampilkan keterangan/komentar yang juga melekat pada hasil perhitungan R itu sendiri. Maka anda dapat melakukannya dengan cara berikut:

print("Penjumahan vektor x dan y :", x + y, "\n")
print("Pengurangan vektor x dan y :", x - y, "\n")
print("Perkalian vektor x dan y :", x * y, "\n")
print("Pembagian vektor x dan y :", x / y, "\n")
print("Pemangkatan vektor x dan y :", x ** y) 
print("Modulo vektor x dan y :", x % y, "\n")

Catatan: Penjelasan lebih lekap mengenai modulo dapat lihat pada link ini

Relasional

Operator relasional melakukan operasi perbandingan antara elemen yang bersesuaian pada setiap operan. Mengembalikan nilai Boolean TRUE jika operan pertama memenuhi relasi dibandingkan dengan operan kedua. Nilai TRUE selalu dianggap lebih besar dari FALSE.

Operator R Python Keterangan
Kurang dari < < Mengembalikan TRUE jika elemen yang bersesuaian pada operan pertama lebih kecil dari operan kedua. Selain itu akan mengembalikan FALSE
Kurang dari sama dengan <= <= Mengembalikan TRUE jika elemen yang bersesuaian pada operan pertama kurang dari atau sama dengan elemen operan kedua. Selain itu akan mengembalikan FALSE
Lebih besar dari > > Mengembalikan TRUE jika elemen yang bersesuaian pada operan pertama lebih besar dari operan kedua. Selain itu akan mengembalikan FALSE
Lebih besar dari sama dengan >= >= Mengembalikan BENAR jika elemen yang bersesuaian pada operan pertama lebih besar atau sama dengan dari operan kedua. Selain itu akan mengembalikan FALSE
Sama Dengan == == Mengembalikan BENAR jika dan hanya jika kedua sisi bernilai sama
Tidak Sama dengan != != Mengembalikan BENAR jika elemen yang bersesuaian pada operan pertama tidak sama dengan dari operan kedua

R

x <- c(2,3,5)    # memuat vektor x
y <- c(2,4,6)    # memuat vektor y
cat("Vektor x  kurang dari Vektor y:", x < y, "\n")
cat("Vector x kurang dari sama dengan Vector y:", x <= y, "\n")
cat("Vector x lebih besar dari Vector y :", x > y, "\n")
cat("Vector x lebih besar dari sama dengan Vector y :", x >= y, "\n")
cat("Vector x sama dengan Vector y:", x == y,"\n") 
cat("Vector x tidak sama dengan Vector y:", x != y) 

Python

import numpy as np    # fungsi untuk operasi pada Array
x = np.array([2,3,5]) # memuat vektor x
y = np.array([2,4,6]) # memuat vektor y
print("Vektor x  kurang dari Vektor y:", x < y, "\n")
print("Vector x kurang dari sama dengan Vector y:", x <= y, "\n")
print("Vector x lebih besar dari Vector y :", x > y, "\n")
print("Vector x lebih besar dari sama dengan Vector y :", x >= y, "\n")
print("Vector x sama dengan Vector y:", x == y,"\n") 
print("Vector x tidak sama dengan Vector y:", x != y) 

Logika

Operator logis mensimulasikan operasi keputusan, berdasarkan operator yang ditentukan antara operan, yang kemudian dievaluasi ke nilai Boolean Benar atau Salah. Nilai bilangan bulat bukan nol dianggap sebagai nilai BENAR, baik itu bilangan kompleks atau bilangan real.

Operator R Python Keterangan
NOT ! ! Operasi negasi/kebalikan pada status elemen operan
AND & & Mengembalikan TRUE jika kedua operan bernilai Benar
OR
XOR ^ ^ Mengembalikan TRUE jika salah satu dari kedua elemen pertama operan bernilai Benar

R

x <- c(0,TRUE,FALSE)
y <- c(TRUE,0.1,4+3i)
 
# Melakukan operasi logika pada Operan
cat("Logika Negasi (~) untuk vektor x:", !x, "\n") 
cat("Logika Negasi (~) untuk vektor y :", !y, "\n") 
cat ("Logika Konjungsi (Dan) :", x & y, "\n")
cat ("Logika Disjungsi (Atau) :", x | y, "\n")
cat("Logika Disjungsi Parsial :", x || y)

Python

import numpy as np                # fungsi untuk operasi pada Array
x = np.array([False,True,False])  # memuat vektor x
y = np.array([True,True,False])   # memuat vektor y
 
# Melakukan operasi logika pada Operan
print("Logika Negasi (~) untuk vektor x:", ~x, "\n") 
print("Logika Negasi (~) untuk vektor y :", ~y, "\n") 
print("Logika Konjungsi (Dan) :", x & y, "\n")
print("Logika Disjungsi (Atau) :", x | y, "\n")
print("Logika Disjungsi Parsial :", x ^ y)

Catatan: Dalam R, data yang bernilai numerik kecuali nol dianggap TRUE dan yang lainnya adalah FALSE. Sedangkan dalam Python, hanya menggunakan True dan False.

Lain-lain

R

Berikut ini juga ada beberapa operator yang kemungkinan besar juga akan anda perlukan pada saat akan menggunakan R.

x <- c(2,3,5)                          # memuat vektor x
y <- c(2,4,6)                          # memuat vektor y
sqrt(x*y)                              # Bentuk akar
log(x)                                 # logaritma 
exp(y)                                 # eksponen
(x/y) + y                              # Tanda kurung

Catatan: Sifat Komutatif Asosiatif dan Distributif juga berlaku dalam program R.

Python

Berikut ini juga ada beberapa operator yang kemungkinan besar juga akan anda perlukan pada saat akan menggunakan R.

import numpy as np            # library untuk memuat vektor (array)
x = 2                         # memuat vektor x
y = 3                         # memuat vektor y
from math import log,exp,sqrt # mengambil beberapa fungsi dari library `math`
sqrt(x*y)                     # Bentuk akar
log(x)                        # logaritma 
exp(y)                        # eksponen
(x/y) + y                     # Tanda kurung
import numpy as np      # library untuk memuat vektor (array)
x = np.array([2,3,5])   # memuat vektor x
y = np.array([2,4,6])   # memuat vektor y
np.sqrt(x*y)            # Bentuk akar
np.log(x)               # logaritma 
np.exp(y)               # eksponen
(x/y) + y               # Tanda kurung

Catatan: Sifat Komutatif Asosiatif dan Distributif juga berlaku dalam program R.

Tipe Data

Dalam pemrograman seperti R dan Python, tipe data merupakan konsep penting. Keduanya dapat menggunakan variabel untuk menyimpan tipe yang berbeda-beda, berikut adalah tipe data paling mendasar yang harus diketahui:

Tipe Data R Python Penjelasan
Double/Float 5.6 5.6 Bilangan yang mempunyai koma
Integer 5 5 Bilangan bulat 1,2,…,n
Bolean/Logical TRUE/FALSE True/False Benar bernilai 1 dan Salah bernilai 0
String/Character “a”, ‘b’, ‘123’ “a”, ‘b’, ‘123’ karakter/kalimat bisa berupa huruf angka, dll (diapit tanda " atau ’)
Complex 1 + 5i 1 + 5j Pasangan angka real dan imajiner

R

Berikut ini adalah koding R yang dapat digunakan untuk menetapkan kelima tipe data diatas:

d1 = 5.6                # Tetapkan nilai desimal 
d2 = as.integer(5)      # tetapkan nilai integer
d2 = c(5L)              # cara lain untuk memuat nilai integer di R
d3 = c(TRUE,FALSE)      # Bolean/Logical
d3 = as.logical(c(0,1)) # cara lain untuk memuat Bolean/Logical
d4 = c("a",'b','123')   # String/Character
d5 = 1 + 5i             # Complex 

Untuk memeriksa tipe data dalam R:

class(d1)            # cetak nama kelas variabel
typeof(d1)           # cetak tipe variabel x

Fungsi-fungsi yang dapat digunakan untuk mengubah tipe data dengan R:

  • as.integer() untuk mengubah menjadi integer;
  • as.double() untuk mengubah menjadi float;
  • as.logical() untuk mengubah menjadi boolean;
  • as.character() untuk mengubah menjadi karakter;
  • as.complex() untuk mengubah menjadi kompleks;

Python

Berikut ini adalah koding Python yang dapat digunakan untuk menetapkan kelima tipe data diatas:

d1 = 5.6             # Tetapkan nilai desimal 
d2 = 5               # tetapkan nilai integer
d3 = [True,False]    # list Bolean/Logical
d4 = ["a",'b','123'] # list String/Character
d5 = 1 + 5j          # Complex 

Untuk memeriksa tipe data dalam Python:

type(d5)             # cetak tipe variabel x

Fungsi-fungsi yang dapat digunakan untuk mengubah tipe data dengan Python:

  • int() untuk mengubah menjadi integer;
  • long() untuk mengubah menjadi integer panjang;
  • float() untuk mengubah menjadi float;
  • bool() untuk mengubah menjadi boolean;
  • chr() untuk mengubah menjadi karakter;
  • str() untuk mengubah menjadi string.
  • bin() untuk mengubah menjadi bilangan Biner.
  • hex() untuk mengubah menjadi bilangan Heksadesimal.
  • oct() untuk mengubah menjadi bilangan okta.

Data Frame

Bingkai data adalah tabel atau struktur seperti array dua dimensi di mana setiap kolom berisi nilai dari satu variabel dan setiap baris berisi satu set nilai dari setiap kolom. Berikut ini adalah ciri-ciri data frame:

  • Nama kolom tidak boleh kosong.
  • Nama baris harus unik.
  • Data yang disimpan dalam bingkai data dapat berupa numerik, faktor, atau tipe karakter.
  • Setiap kolom harus berisi jumlah item data yang sama.

R

Berikut ini diperlihatkan contoh data frame dengan menggunakan R:

# Membentuk data frame 1
df1_R <- data.frame(kode = c (1:5), 
                    nama = c("Julian","Vanessa","Jeffry","Angel","Nikki"), 
                    gaji = c(623.3,515.2,611.0,729.0,843.25), 
             mulai_kerja = as.Date(c("2022-01-01", "2022-09-23", "2022-11-15", "2022-05-11", "2022-03-27")),
                  divisi = c("DS","DS","BA","DA","DS"), stringsAsFactors = F)

# Membentuk data frame 2
df2_R <- data.frame(kode = c (6:10), 
                    nama = c("Ardifo","Irene","Kefas","Sherly","Bakti"),
                    gaji = c(578.0,722.5,632.8,632.8,NA), 
             mulai_kerja = as.Date(c("2022-05-21","2022-07-30","2022-06-17", "2022-07-30","2018-09-03")),
                  divisi = c("Actuaries","Actuaries","CA","DE","Lecturer"),stringsAsFactors = F)

Beberapa operasi yang dapat dilakukan pada data frame R.

df3_R <- rbind(df1_R,df2_R) # gabungkan dua data frame
print(df3_R)                # mencetak hasil `df3_R`
head(df3_R)                 # mencetak enam baris pertama
head(df3_R,3)               # mencetak enam baris pertama
View(df3_R)                 # menampilkan data di Rstudio layaknya Excel
class(df3_R)                # check tipe data.frame
str(df3_R)                  # check struktur data frame
dim(df3_R)                  # periksa dimensi data
summary(df3_R)              # summary statistik dasar

Data frame biasanya dibuat dengan membaca dataset menggunakan read.table() atau read.csv(). Namun, data frame juga dapat dibuat secara eksplisit dengan menggunakan fungsi data.frame() atau dapat dipaksakan dari jenis objek lain seperti list atau vektor.

Python

Pada situasi yang sebenarnya (Data science), DataFrame akan dibuat dengan memuat kumpulan data dari penyimpanan yang ada, penyimpanan dapat berupa Database SQL, file CSV, file Excel. DataFrame dapat dibuat dari daftar, kamus, dan dari daftar kamus, dll. Dataframe dapat dibuat dengan berbagai cara. Berikut adalah beberapa cara yang kami gunakan untuk membuat bingkai data:

# import libarary pandas 
import pandas as pd

# kumpulan data 
dt1_Py = {'kode' : range(5), 
          'nama' : ["Julian","Vanessa","Jeffry","Angel","Nikki"],
          'gaji' : [623.3,515.2,611.0,729.0,843.25], 
   'mulai_kerja' : ["2022-01-01", "2022-09-23", "2022-11-15", "2022-05-11", "2022-03-27"],
        'divisi' : ['DS','DS','BA','DA','DS']}

dt2_Py = {'kode' : range(5), 
          'nama' : ["Ardifo","Irene","Kefas","Sherly","Bakti"],
          'gaji' : [578.0,722.5,632.8,632.8, 632.8 ], 
   'mulai_kerja' : ["2022-05-21","2022-07-30","2022-06-17","2022-07-30","2018-09-03"],
        'divisi' : ["Actuaries","Actuaries","CA","DE","Lecturer"]}   

 
# merubah kumpulan data menjadi Data frame 
df1_Py = pd.DataFrame(dt1_Py)
df2_Py = pd.DataFrame(dt2_Py)

Beberapa operasi yang dapat dilakukan pada data frame Python.

df3_Py = df1_Py.append(df2_Py) # gabungkan dua data frame
print(df3_Py)                  # mencetak hasil `df3_Py`
df3_Py.head()                  # mencetak 5 baris pertama
df3_Py.tail()                  # mencetak 5 baris akhir
df3_Py.head(3)                 # mencetak 3 baris pertama
type(df3_Py)                   # check tipe data.frame
df3_Py.info()                  # check struktur data frame
df3_Py.shape                   # periksa dimensi data 
df3_Py.describe()              # summary statistik dasar

Rekayasa Data Frame

Sebagai seorang Data Scientist, secara intuitif anda bisa saja merasa perlu untuk membangun data frame sendiri. Tentu dengan memperhatikan kaidah-kaidah statistik atau matematimatik yang belaku, sehingga dapat memperkirakan kumpulan data atau sampel yang dapat dipercaya untuk mensimulasikan proses analisis data, pemodelan, dan bahkan prediksi. Perlu dicatat bahwa opsi ini haruslah menjadi pilihan terakhir, meskipun akan sangat membantu pekerjaan anda, terutama saat anda tidak memungkinkan untuk mengumpulkan data atau sampel yang dibutuhkan. Kondisi lain, yang mengharuskan anda membangun data frame (fake data frame) bisa juga dikarenakan anda tidak ingin mempersentasikan data yang bersifat rahasia kepada banyak orang. Oleh karena itu, berikut ini kita akan belajar bagaimana menghasilkan data farame dengan R dan Python.

R

Misalkan Anda ingin membangun kumpulan data karyawan di sebuah perusahaan dengan R, perhatikan contoh berikut:

No<-(1:52)                                       # menghasilkan nomor 1-52 
Nama<-c(LETTERS,letters)                         # Huruf Kapital dan Non-Kapital
Jenis_Kelamin<-sample(rep(c("Pria",
                            "Wanita"),times=26)) # Jenis Kelamin

# menghasilkan tanggal lahir dengan time series
Tiga_Tahun<-seq(as.Date("2000/01/01"), by="year", length.out=4)
Tanggal_Lahir<- rep(Tiga_Tahun, times=13)

# Kategori universitas
univ1<-rep("Negeri",times=26)                    # 26 universitas negeri
univ2<-rep("Swasta",times=16)                    # 16 universitas swasta
univ3<-rep("LN",times=10)                        # 10 universitas luar negerei
Universitas<-sample(c(univ1,univ2,univ3))        # menggabungkan vektor/list diatas

gpa<-runif(52,min=3.00,max=4.00)                 # menghasilkan 52 angka acak (min=3, dan maks=4) 
GPA<-round(gpa,digits=2)                         # atur digit angka acak Anda 
Gaji<-sample(600:1200,52,replace=T)              # hasilkan sampel antara 600-1200 (izinkan nilai duplikat) 
Karyawan_R<-data.frame(No,
                       Nama,
                       Tanggal_Lahir,
                       Jenis_Kelamin,
                       Universitas,
                       GPA,
                       Gaji)
print(Karyawan_R)

Python

Pertama-tama, import pandas, NumPy, dan beberapa library yang dibutuhkan. Dalam hal ini kita dapat menggunakan NumPy dan Faker untuk menghasilkan data palsu secara acak.

import numpy as np
import pandas as pd
from faker.providers.person.en import Provider

# Menghasilkan nomor

No = range(100)
 
# menghasilkan data acak untuk nama
def random_names(name_type, size):
    Nama = getattr(Provider, name_type)
    return np.random.choice(Nama, size=size)

# menghasilkan data acak untuk jenis kelamin
def random_genders(size, p=None):
    if not p:
        p = (0.49, 0.49, 0.01, 0.01)
    Jenis_Kelamin = ("Pria", "Wanita", "Lainnya", "")
    return np.random.choice(Jenis_Kelamin, size=size, p=p)
  
# menghasilkan data acak untuk tanggal lahir
def random_dates(start, end, size):
    # Stempel waktu python dituliskan dalam nanodetik secara default,
    # sehingga kita perlu melakukan 24*60*60*10**9 untuk dikonversi ke hari
    divide_by = 24 * 60 * 60 * 10**9
    start_u = start.value // divide_by
    end_u = end.value // divide_by
    return pd.to_datetime(np.random.randint(start_u, end_u, size), unit="D")
  
  
# menghasilkan data acak untuk universitas
Universitas = np.random.choice(["Negeri", "Swasta", "LN"],size=size)
GPA = np.random.uniform(low=2.5, high=4, size=size)
Gaji = np.random.normal(loc=10000, scale=5000, size=size)
size = 100  
Karyawan_Py = pd.DataFrame(columns=['No',
                                 'Nama_Depan',
                                 'Nama_Belakang',
                                 'Jenis_Kelamin',
                                 'Tanggal_Lahir',
                                 'Universitas',
                                 'GPA',
                                 'Gaji'
                                ])
Karyawan_Py['No'] = No
Karyawan_Py['Nama_Depan'] = random_names('first_names', size)
Karyawan_Py['Nama_Belakang'] = random_names('last_names', size) 
Karyawan_Py['Jenis_Kelamin'] = random_genders(size)
Karyawan_Py['Tanggal_Lahir'] = random_dates(start=pd.to_datetime('2000-01-01'),                                               end=pd.to_datetime('2021-01-01'), size=size)
Karyawan_Py['Universitas'] = Universitas
Karyawan_Py['GPA'] = GPA
Karyawan_Py['Gaji'] = Gaji
print(Karyawan_Py)

Ekstraksi Data Frame

Selain keahlian membangun data frame sendiri, keahlian mendasar yang tak kalah pentingnya bagi seorang data scientist adalah proses ekstraksi data frame (Pengindeksan, Pengirisan, dan Subsetting) pada suatu data set (data frame). Dalam hal ini, tentu harus memperhatikan tipe data anda dengan baik. Berikut ini akan diperlihatkan beberapa hal mengenai Pengindeksan, Pengirisan, dan Subsetting data set dengan R dan Python.

R

R menyediakan banyak cara untuk mensubset dan mengekstrak elemen dari vektor, list, data frame, dan objek lainnya. Sebagai permulaan, Pengindeksan, Pengirisan, dan Subsetting dapat dilakukan dengan operator []. Operator ini dapat mengambil banyak jenis vektor.

typeof(Karyawan_R)                        # cek tipe datanya
class(Karyawan_R)                         # cek tipe datanya
Karyawan_R[1,5]                           # ekstrak elemen di baris ke-1 dan kolom ke-5. 
Karyawan_R$Nama                           # ekstrak spesifik kolom (`Nama`) 
Karyawan_R[,c('Nama','Jenis_Kelamin')]    # ekstrak spesifik kolom (`Nama, Jenis Kelamin`) 
Karyawan_R[1:5,]                          # ekstrak lima baris pertama Karyawan_R 
Karyawan_R[,1:5]                          # ekstrak lima kolom pertama Karyawan_R 

subset(Karyawan_R, select=GPA)            # ekstrak/subset spesifik kolom 
subset(Karyawan_R, select=6)              # ekstrak/subset spesifik kolom 
subset(Karyawan_R, select= c(6,7))        # ekstrak/subset kolom pertama & kedua 
subset(Karyawan_R, select= c(2:5))        # ekstrak/subset Kolom tertentu 

Menambahkan variabel baru ke data frame dapat dilakukan dengan menetapkan vektor baru. Salah satu keunggulan objek dalam data frame dengan R adalah ketersedian proses ekstraksi yang melibatkan operator dan juga berlaku untuk semua jenis vektor (tipe data), seperti halnya bilangan bulat, numerik, logis, faktor, dan karakter.

Karyawan_R$Pajak <- Karyawan_R$Gaji*0.03                   # tambahkan variabel baru `Pajak` 
Karyawan_R$Gaji_Bersih <- Karyawan_R$Gaji-Karyawan_R$Pajak # tambahkan variabel baru `Gaji_Bersih`
Karyawan_R$Gaji_Grup1 <- Karyawan_R$Gaji > 950             # tambahkan variabel baru `Gaji_Grup1`
Karyawan_R$Gaji_Grup2<-ifelse(Karyawan_R$Gaji > 950,       # tambahkan variabel baru `Gaji_Grup2`
                                    "Gaji Besar", 
                                    "Gaji Kecil")      
Karyawan_R$Gaji_Grup3<-factor(Karyawan_R$GPA >3.5 &        # tambahkan variabel baru `Gaji_Grup3` 
                            Karyawan_R$Gaji>950,
                            labels = c("level1",
                                       "level2"))
min(Karyawan_R$Gaji)                                       # nilai minimum `Gaji` 
max(Karyawan_R$Gaji)                                       # nilai Maksimum `Gaji` 
mean(Karyawan_R$Gaji)                                      # nilai rerata `Gaji` 
var(Karyawan_R$Gaji)                                       # nilai variansi `Gaji` 
sd(Karyawan_R$Gaji)                                        # nilai standar deviasi `Gaji`  
summary(Karyawan_R)                                        # statistik dasar data frame `Gaji` 

Pyhton

Sama hal dengan R, kita juga pasti akan sering ingin bekerja dengan subset dari suatu objek data frame di Python. Ada berbagai cara untuk melakukannya termasuk: menggunakan label (judul kolom), rentang numerik, atau lokasi indeks tertentu.

type(Karyawan_Py)                           # cek tipe datanya
Karyawan_Py.iloc[0,5]                       # ekstrak elemen di baris ke-1 dan ke-6. 
Karyawan_Py['Nama_Depan']                   # ekstrak spesifik kolom (`Nama_Depan`) 
Karyawan_Py[['Nama_Depan','Jenis_Kelamin']] # ekstrak spesifik kolom (`Nama_Depan, Jenis_Kelamin`) 
Karyawan_Py[:5]                             # ekstrak lima baris pertama  
Karyawan_Py[5:]                             # ekstrak setelah lima baris pertama 
Karyawan_Py[-5:]                            # ekstrak lima baris n-1 baris terakhir
Karyawan_Py[0:5]                            # ekstrak lima baris pertama 
Karyawan_Py.iloc[0:5]                       # ekstrak lima baris pertama 
Karyawan_Py.iloc[:, 0:5]                    # ekstrak enam kolom pertama
Karyawan_Py.iloc[:, [2,5]]                  # ekstrak kolom ke-2 dan kolom ke-5
Karyawan_Py.iloc[[2,5], :]                  # ekstrak baris ke-2 dan baris ke-5
Karyawan_Py.loc[0:3]                        # ekstrak baris ke-0 dan baris ke-3 (tidak berdasarkan index)
Karyawan_Py.loc[[1,5]]                      # ekstrak data baris 1 dan 5 (tidak berdasarkan index)



Karyawan_Py[Karyawan_Py.GPA > 3]            # selksi data kolom GPA > 3
Karyawan_Py[(Karyawan_Py.GPA > 3) &
            (Karyawan_Py.GPA < 3.5)]

Tugas Anda: Silahkan untuk menemukan operasi Pengindeksan, Pengirisan, dan Subsetting lainya yang belum ada disini tetapi sudah diperlihatakan di R.

Ganti Nama Variabel

Salah satu hal penting lainnya yang dimiliki proses data science adalah menyimpan data kedalam variabel. Variabel dapat diibaratkan seperti sebuah label untuk sebuah informasi. Variabel dapat juga terdiri dari beberapa informasi. Seringkali, kita sebagai data scientist perlu untuk mengganti nama variabel tertentu untuk memudahkan dalam menganalisa informasi yang terkandung pada suatu data yang dimiliki.

R

Objek R dapat memiliki nama, yang sangat berguna untuk menulis kode yang dapat dibaca dan objek yang menggambarkan dirinya sendiri. Di sini, Anda akan mempelajari cara mengganti nama kolom data frame di R menggunakan fungsi names().

rename_1<-Karyawan_R                           # merubah nama data frame
names(rename_1)<-c("no",                       # merubah nama variabel pada data frame
                    "nama",
                    "tgl.lahir",
                    "jenis.kelamin",
                    "univ", 
                    "ipk",
                    "gaji")                     
rename_1                                        

Ini juga dapat dilakukan dengan menggunakan fungsi rename() yang ada di [dplyr package].

library(tidyverse)
Karyawan_R %>% 
  rename("no"= "No",
         "nama" = "Nama",         
         "tanggal.lahir" = "Tanggal_Lahir",
         "jenis.kelamin" = "Jenis_Kelamin"  ,   
         "univ" = "Universitas" ,
         "ipk"= "GPA",        
         "gaji"= "Gaji")

Pyhton

Tugas Anda: Melakukan Rename pada data frame dengan menggunakan Python