Anda di halaman 1dari 31

Python Fundamental for Data Science

Pendahuluan Tentang Python


Python merupakan bahasa pemrograman yang diciptakan pada tahun 1991 oleh Guido van
Russom, seorang matematikawan.

Saat ini python merupakan bahasa pemrograman populer. Kondisi ini dibuktikan dengan hasil
beberapa survey terkait bahasa pemrograman yang sering dicari melalui mesin pencari google.
Python berhasil naik dengan melonjak tajam semenjak kelahirannya bahkan saat ini telah
mengungguli Java. Menurut insight developer survey dari stackoverflow pada tahun 2018 atau
melalui TIOBE Index, Python berhasil naik pada TOP 10 programming language yang paling
dicari menggungguli seniornya, C, PHP, dan C#.

Python dapat dikatakan sebagai programming language dengan perkembangan tercepat.


Perkembangan ini didukung oleh library atau pustaka python yang cukup melimpah. Libraries
(pustaka-pustaka) python ini dikontribusikan oleh akademisi dari berbagai universitas di seluruh
dunia serta developer dari perusahaan IT ternama seperti Google, Facebook, Microsoft, Apache
Software Foundation, dan perusahaan lainnya. Dengan demikian, hal inilah yang menjadikan
python sebagai salah satu programming language yang solid dan berkembang pesat.

Python sendiri berguna dalam berbagai aspek :

 Web Development (Server – Side)


 Software Development
 Mathematics
 Scripting
 Data Science
 Bisa mengelola Big Data dan Rumus matematika yang complex
 Cocok untuk riset dan rapid prototype suatu product dan launch hingga produksi
 CRUD sebuah file dan database

Kepopuleran python sendiri sekarang ada pada track data science. Banyaknya library dan
framework seperti scikit-learn, tensorflow/keras, pytorch membuat para pecinta data mining, AI,
dan Machine learning lebih menyukai python untuk pengembangan riset dan penelitian mereka.
Berkembangnya dunia data science didunia ini juga salah satu alasan kenapa python menjadi
begitu populer sekarang.

Mengapa Python Populer


Meningkatnya minat masyarakat dunia terhadap data science menyebabkan penggunaan Python
menjadi sangat populer. Python merupakan salah satu programming language yang cocok untuk
scripting dan bisa berjalan dalam berbagai platform OS dan IoT. Meskipun tergolong sebagai
high level programming language, python sangat mudah dimengerti karena syntax-nya yang
sederhana. Jika diperhatikan, python sangat mirip penulisannya dengan bahasa Inggris.
Python dapat digunakan dalam paradigma pemrograman fungsional dan berorientasi object
(OOP - object oriented programming). Berbeda dengan C, C++, dan Java yang berjenis
kompilasi, Python merupakan bahasa pemrograman berjenis interpretasi yang artinya code yang
sudah ditulis bisa dijalankan sesegera mungkin.

Beberapa hal yang menjadi kelebihan dari python:

 Python dirancang untuk mudah ditulis dan dibaca, serta memiliki beberapa kesamaan
dengan bahasa Inggris dengan pengaruh dari matematika.
 Python menggunakan baris baru untuk mengakhiri perintah, dibandingkan dengan bahasa
pemrograman lain yang sering menggunakan titik koma atau tanda kurung.
 Python bergantung pada indentasi, menggunakan spasi, untuk mendefinisikan ruang
lingkup; seperti lingkup loop, fungsi, dan kelas. Bahasa pemrograman lainnya sering
menggunakan kurung kurawal untuk tujuan ini
 Jika kalian mencari di internet tentang programming python, biasanya akan ada 2 jenis
python, python 2 dan python 3. Versi utama Python yang paling baru adalah Python 3
dan digunakan dalam platform academy ini. Saat ini, python 2 sudah memasuki end-of-
life pada Januari 2020.

Code Hello World


Struktur code pada Python relatif sangat sederhana, tidak serumit seperti pada Java ataupun C.
Selain karena memang mudah dibaca, python juga termasuk pada high level programming
language seperti yang telah dibahas sebelumnya.

Untuk memulai belajar python, cobalah ketikkan kode berikut pada Code Editor

print ("Hello World")

Klik Tombol

Hasil pada panel Console akan keluar seperti berikut :

Hello World

Coba lanjutkan code tersebut pada baris selanjutnya dengan menggunakan kode ini :

print ("Hello World")


print(5+1)

Klik Tombol

Hasil pada panel console akan keluar seperti berikut :

Hello World
6
Note : setiap perintah print yang digunakan akan mencetak baris baru.

Memang terlihat sangat sederhana jika hanya untuk kasus simpel yang kita pelajari pada bagin
ini. Namun, python tidak sesederhana itu dalam prakteknya. Biasanya kita juga menggunakan
import library khusus jika sudah menyangkut masalah yang lebih kompleks.

Tugas Praktek

1. Tampilkan hasil perhitungan (10*2+5) pada baris pertama.


2. tampilkan teks "Academy DQLab" pada baris kedua.

Comment Pada Python


Ketika menuliskan suatu kode program diperlukan sebuah dokumentasi. Mengapa dokumentasi
ini sangat penting? Sederhananya, jika kode yang telah dituliskan memiliki ribuan baris dan ada
beberapa bagian yang perlu diperbaiki karena suatu alasan, para penulis kode cukup melihat
dokumentasinya saja. Penulis kode tidak perlu membaca dan memahami seluruh isi code dari
awal. Nah, salah satu metode yang biasa digunakan adalah menggunakan comment. Sama
dengan Bahasa R, python juga menggunakan tanda “#” untuk membuat comment pada script.

Cobalah ketikkan sebuah kalimat seperti di bawah ini beserta comment-nya.

print("Ini adalah sebuah baris kode")#ini adalah contoh comment dan tidak akan
tercetak

Klik tombol maka akan keluar hasil seperti ini:

Ini adalah sebuah baris kode

Perlu diketahui, comment tidak akan pernah tampil pada hasil melalui console atau GUI. Fungsi
comment dapat dikatakan sebagai sebuah penanda. Kenapa bab ini diberikan diawal?
Harapannya yaitu agar kamu memiliki pengetahuan dan langsung mempraktikkannya ketika
kamu menuliskan baris kode program berikut dengan dokumentasinya. 

Dokumentasi kode juga berlaku untuk variable karena diperlukan suatu keterangan bahwa
variable berfungsi sebagai apa dan isinya apa. Maka dari itu jangan lupa untuk membuat dan
memberi comment untuk setiap kode program yang telah kamu tuliskan!

Tugas Praktek

1. Berikan keterangan untuk setiap baris program dengan perintah comment:


o print(10*2+5) #fungsi matematika
o print("Academy DQLab") #fungsi mencetak kalimat
Variable, Basic Data Type and Print
Penggunaan variabel atau suatu objek yang bisa merepresentasikan sebuah nilai atau value
sangat penting dalam bahasa pemrograman. Selain itu mempermudah dalam membaca source
code, pemberian variable yang efisien juga akan membuat code berjalan optimal dan dinamis.
Pada sesi kali ini kita akan belajar bagaimana cara inisialisasi variable dalam beberapa data type
dan menampilkannya (print).

Tipe Data Contoh Penjelasan


Menyatakan benar True yang bernilai 1, atau salah False yang
Boolean True atau False
bernilai 0
Menyatakan karakter/kalimat bisa berupa huruf angka, dll (diapit
String "Ayo belajar Python"
tanda " atau ')
Integer 25 atau 1209 Menyatakan bilangan bulat
Float 3.14 atau 0.99 Menyatakan bilangan yang mempunyai koma
Data untaian yang menyimpan berbagai tipe data dan isinya bisa
List ['xyz', 786, 2.23]
diubah-ubah
Data untaian yang menyimpan berbagai tipe data tapi isinya tidak bisa
Tuple ('xyz', 768, 2.23)
diubah
Data untaian yang menyimpan berbagai tipe data berupa pasangan
Dictionary {'nama': 'adi','id':2}
penunjuk dan nilai

Printing Data Type


Cobalah ketik kode di bawah ini :

#tipe data Boolean


print(True)

#tipe data String


print("Ayo belajar Python")
print('Belajar Python Sangat Mudah di DQLAB')

#tipe data Integer


print(20)

#tipe data Float


print(3.14)

#tipe data List


print([1,2,3,4,5])
print(["satu", "dua", "tiga"])

#tipe data Tuple


print((1,2,3,4,5))
print(("satu", "dua", "tiga"))

#tipe data Dictionary


print({"nama":"Budi", 'umur':20})

#tipe data Dictionary dimasukan ke dalam variabel biodata


biodata = {"nama":"Andi", 'umur':21} #proses inisialisasi variabel biodata
print(biodata) #proses pencetakan variabel biodata yang berisi tipe data
Dictionary
type(biodata) #fungsi untuk mengecek jenis tipe data. akan tampil <class
'dict'>

Klik tombol maka akan keluar hasil seperti ini:

True
Ayo belajar Python
Belajar Python Sangat Mudah
20
3.14
[1, 2, 3, 4, 5]
['satu', 'dua', 'tiga']
(1, 2, 3, 4, 5)
('satu', 'dua', 'tiga')
{'nama': 'Budi', 'umur': 20}
{'nama': 'Andi', 'umur': 21}
 
Tugas Praktek

Printing Data type menggunakan Variable.

1. Ketikan kode di bawah ini pada Code Editor.


2. var_string="Belajar Python DQLAB"
3. var_int=10
4. var_float=3.14
5. var_list=[1,2,3,4]
6. var_tuple=("satu","dua","tiga")
7. var_dict={"nama":"Ali", 'umur':20}
8.
9.
10. print(var_string)
11. print(var_int)
12. print(var_float)
13. print(var_list)
14. print(var_tuple)
15. print(var_dict)
16. Tambahkan kode di bawah ini untuk mengetahui tipe data dari suatu value di variabel.
17. print(type(var_string))
18. print(type(var_int))
19. print(type(var_float))
20. print(type(var_list))
21. print(type(var_tuple))
22. print(type(var_dict))
Struktur Kontrol: Percabangan Keputusan

Pendahuluan
Ketika kita dihadapkan dengan pengambilan suatu keputusan tentunya kita akan mengevaluasi
beberapa pilihan. Di dalam bahasa pemrograman, pengambilan keputusan juga digunakan
melalui penerapan konsep IF - ELSE. Konsep ini juga berlaku pada python yang memiliki
kesederhanaan dalam penulisannya.

Untuk itu, pada bab struktur kontrol: percabangan keputusan kamu akan mempelajari 3 bagian,
yaitu:

 Menggunakan IF yang dapat dianalogikan dengan "Jika sesuatu memenuhi suatu kondisi
maka lakukanlah A, namun jika tidak maka tidak terjadi apa-apa".
 Menggunakan IF dan ELSE yang dapat direpresentasikan dengan "Jika sesuatu
memenuhi suatu kondisi maka lakukanlah A, namun jika tidak terpenuhi maka
lakukanlah B".
 Menggunakan IF, ELIF dan ELSE. ELIF merupakan singkatan dari ELSE IF di python.
Penerapan konstruksi IF, ELIF dan ELSE ini dapat dianalogikan dengan "Jika sesuatu
memenuhi suatu kondisi maka lakukanlah A, jika tidak, lakukanlah pengecekan pada
kondisi berikutnya yaitu jika memenuhi lakukanlah B, jika tidak maka lakukanlah C".

Pada praktek operator IF, ELIF dan ELSE ini akan sedikit berbeda dengan sebelumnya. Perlu
banyak modifikasi code yang dilakukan agar pemahaman materi bisa sempurna. Maka dari itu
mohon dibaca dengan teliti ya!

IF Statement
Penggunaan IF sebenarnya adalah sebuah statement untuk menentukan keputusan mana yang
akan diambil berdasarkan suatu kondisi yang ditentukan oleh pembuat program.

Cobalah ketikkan kode seperti di bawah ini :

i = 10 #inisialisasi variable i yang memiliki nilai 10

if(i==10): #pengecekan nilai i apakah sama dengan 10


print("ini adalah angka 10") #jika TRUE maka akan mencetak kalimat ini

Klik tombol maka akan keluar hasil seperti ini:

ini adalah angka 10

 
Dengan mengunakan code yang sama, ubahlah nilai variable i menjadi 7.

i = 7 #inisialisasi variable i yang memiliki nilai 10

if(i==10): #pengecekan nilai i apakah sama dengan 10


print("ini adalah angka 10") #jika TRUE maka akan mencetak kalimat ini

Kliklah tombol , maka kamu akan temukan tidak ada hasil yang ditampilkan. Hal ini
disebabkan oleh nilai i=7 yang diinisialisasi tidak memenuhi syarat kondisi pada IF yang telah
dibuat. 

IF … ELSE …
Cobalah ketikkan kode seperti di bawah ini:

i = 10 #inisialisasi variable i yang memiliki nilai 10

if(i==10): #pengecekan nilai i apakah sama dengan 10


print("ini adalah angka 10") #jika TRUE maka akan mencetak kalimat ini
else:
print("bukan angka 10") #jika FALSE akan mencetak kalimat ini

  Klik tombol maka akan keluar hasil seperti ini:

ini adalah angka 10

Penjelasan :

Variable i memenuhi syarat pada kondisi pertama, yaitu nilai sama dengan 10. Maka dari itu
variable i tidak perlu dicek kembali di kondisi kedua.

Dengan menggunakan code yang sama, coba ubah nilai varible i menjadi 5.

i = 5 #inisialisasi variable i yang memiliki nilai 10

if(i==10): #pengecekan nilai i apakah sama dengan 10


print("ini adalah angka 10") #jika TRUE maka akan mencetak kalimat ini
else:
print("bukan angka 10") #jika FALSE akan mencetak kalimat ini

Klik tombol maka akan keluar hasil seperti ini:

bukan angka 10

Penjelasan:
Nilai variable adalah 5. Pada kondisi pertama variable i tidak memenuhi. Maka output yang
diberikan adalah perintah pada else yang merupakan hasil yang keluar apabila pengecekan
pertama tidak sesuai.

F … ELIF … ELSE ….
Cobalah ketikkan kode seperti di bawah ini: 

i=5

if(i==5):
print("ini adalah angka 5")
elif(i>5):
print("lebih besar dari 5")
else:
print("lebih kecil dari 5")

Klik tombol maka akan keluar hasil seperti ini:

ini adalah angka 5

Coba modifikasi kode sebelumnya dengan mengubah nilai variable i menjadi 7 seperti contoh
dibawah ini:

i=7

if(i==5):
print("ini adalah angka 5")
elif(i>5):
print("lebih besar dari 5")
else:
print("lebih kecil dari 5")

Klik tombol maka akan keluar hasil seperti ini:

lebih besar dari 5

Penjelasan:

Untuk i=7, nilai variable i tidak memenuhi syarat dari kondisi pertama yaitu apakah i = 5?
Selanjutnya, nilai variabel i dicek pada kondisi kedua, apakah i > 5? Kondisi kedua ini
memenuhi bahwa i > 5, sehingga dicetaklah pernyataan "lebih besar dari 5".

Ubah kembali nilai variable i menjadi 3.


i=3

if(i==5):
print("ini adalah angka 5")
elif(i>5):
print("lebih besar dari 5")
else:
print("lebih kecil dari 5")

Klik tombol maka akan keluar hasil seperti ini:

lebih kecil dari 5

Penjelasan:

Untuk i=3, nilai variable i tidak memenuhi syarat dari kondisi pertama yaitu apakah i = 5?
Selanjutnya, nilai variabel i dicek pada kondisi kedua, apakah i > 5? Kondisi kedua ini masih
tidak memenuhi bahwa i > 5. Dengan demikian kondisi ketiga sebagai piliha terakhir yang akan
dicetak yaitu pernyataan "lebih kecil dari 5".

NESTED IF
Fungsi IF sendiri dapat digunakan secara bertingkat atau dapat memiliki pengecekan lebih dari 1
kondisi, sebagai contoh:

if ( i<7 && i <3)

Pernyataan ini berarti bahwa i harus bernilai kurang dari 7 dan juga harus kurang dari 3 agar bisa
memenuhi pengecekan tersebut.

Tugas:
Ketiklah potongan code di bawah ini pada live code editor untuk melakukan pengecekan bertingkat

Pengecekan bertingkat ini kerap disebut sebagai nested IF.

Operator Matematika dan Pembanding


Pendahuluan
Data Science tidak akan terlepas dari matematika. Pada modul python ini kita juga belajar
berbagai macam operator matematika dengan python yang tentu berguna untuk membantu
menyelesaikan masalah dalam data science. Pada sesi kali ini, operator yang disajikan adalah
operator dasar dan operator logika pada matematika. Pada dasarnya, setiap bahasa pemrograman
akan memiliki operasi pengelolahan angka dan perbandingan.

Operator yang akan kita bahas kali ini adalah :

Nama Operator Logo Operator


Tambah +
Kurang -
Pembagi /
Perkalian *
Modulus %
Kurang dari < 
Lebih dari > 
Kurang dari sama dengan <=
Lebih dari sama dengan >=
Sama dengan =

Praktik Operasi Matematika


Pada praktik ini kita akan mencoba seluruh operator matematika.

Fokus pada sesi ini dititikberatkan pada penggunaan operator matematika menggunakan dua
variabel yang telah diinisialisasi masing-masingnya dengan bilangan bulat tertentu.

Ketikan code di bawah ini pada editor:

a=10
b=5
selisih = a-b
jumlah = a+b
kali = a*b
bagi = a/b
print("Hasil penjumlahan a dan b adalah", jumlah)
print("Selisih a dan b adalah :",selisih)
print("Hasil perkalian a dan b adalah :",kali)
print("Hasil pembagian a dan b adalah:",bagi)

Klik tombol maka akan keluar hasil seperti ini:

Hasil penjumlahan dan b adalah 15


Selisih a dan b adalah : 5
Hasil perkalian a dan b adalah : 50
Hasil pembagian a dan b adalah: 2.0

Operasi modulus
Modulus cukup jarang dipakai, akan tetapi untuk beberapa kasus modulus sangat berguna
terutama dalam mempercepat proses perhitungan. Modulus merupakan fungsi yang akan
menghitung sisa dari hasil pembagian.

Untuk lebih jelasnya silahkan lakukan praktik di bawah ini:

c=10
d=5

modulus=c%d
print("Hasil modulus",modulus)

Klik tombol maka akan keluar hasil seperti ini:

Hasil modulus 0

Coba ubah nilai d dari 5 menjadi 3. Lalu RUN lagi code tersebut. Maka pasti akan keluar hasil:

Hasil modulus 1

Kenapa bisa seperti itu? Prinsip modulus adalah dasarnya sebuah pembagian. Jika pembagi tidak
bisa membagi habis angka yang dibagi maka akan dibagi hingga mendekati nilai terkecil yang
tidak mampu dibagi lagi. Selisih antara angka yang mendekati dan angka yang dibagi nanti
merupakan hasil modulus. Jika habis dibagi seperti kasus pertama 10/5 maka modulus akan
mengembalikan nilai 0.

Tugas Mid Praktek


Buatlah sebuah program yang dapat menentukan suatu variabel apakah merupakan bilangan
genap atau ganjil. Lakukan percobaan dengan langkah berikut:
1. Buat variabel dengan nama “angka” yang diisi dengan nilai 10
2. Ganti bagian … dengan perhitungan untuk menentukan angka modulus 2 bernilai 0.

Jika angka bernilai genap maka keluarkan "angka termasuk bilangan genap". Selanjutnya,
ganti nilai variable angka dengan nilai 5 dan ceklah kembali apakah angka bernilai ganjil. Jika
iya, keluarkan "angka termasuk bilangan ganjil".

Note: Kamu bisa menggunakan materi-materi sebelumnya dengan menggabungkannya di tugas


praktik ini untuk membantu kamu dalam mengerjakannya.

angka=5
if(angka%2==0):
print("angka termasuk bilangan genap")
else:
print("angka termasuk bilangan ganjil")

Perulangan

Pendahuluan
Perulangan atau looping merupakan salah satu elemen atau fungsi yang bisa dikatakan sangat
menunjang untuk kebutuhan programming dan data science.

Ambil contoh, seandainya kita harus memproses 1000x eksekusi code. Tentu akan
menghabiskan waktu bila kita harus menulis ulang kode tersebut sebanyak 1000x juga.

Selain tidak bersifat scalable, efisiensi akan mempengaruhi performa dari program yang kita
buat. Seperti pada umumnya pada python juga memiliki fungsi for dan while untuk melakukan
looping. Logikanya hampir sama, namun hanya berbeda dalam penulisannya jika kamu sudah
terbiasa dengan C ataupun Java.

while
Struktur while pada python tidak berbeda jauh dengan bahasa pemrograman lainnya. Lebih
sederhananya, struktur penulisan python membuat dia mudah untuk dibaca.

Ketikan kode di bawah ini :

j = 0 #nilai awal j =0

while j<6: #ketika j kurang dari 6 lakukan perulangan, jika tidak stop
perulangan
print("Ini adalah perulangan ke -",j) #lakukan perintah ini ketika
perulangan
j=j+1 #setiap kali diakhir perulangan update nilai dengan ditambah 1.

Klik tombol  maka akan keluar hasil seperti ini:

Ini adalah perulangan ke - 0


Ini adalah perulangan ke - 1
Ini adalah perulangan ke - 2
Ini adalah perulangan ke - 3
Ini adalah perulangan ke - 4
Ini adalah perulangan ke – 5

for (1)
Struktur looping for pada python berbeda dengan struktur for pada umumnya. Pastikan untuk
memperhatikan hal ini dengan baik.

Coba ketik kode di bawah ini :

for i in range (1,6): #perulangan for sebagai inisialisasi dari angka 1 hingga
angka yang lebih kecil daripada 6.

print("Ini adalah perulangan ke -", i) #perintah jika looping akan tetap


berjalan
Penjelasan sebelum klik tombol RUN :

Maksud dari fungsi for i in range (1,6) adalah, jika kita konversi pada JAVA atau C sama
dengan for(i=1;i<6i++). Jika dikonversi menjadi kalimat maka akan menjadi “perulangan
dimulai dari nilai i = 1 hingga nilai i kurang dari 6 dimana setiap kali perulangan nilai i
akan selalu ditambah 1”. Jika nilai i sudah mencapai 6 perulangan akan dihentikan.

Klik tombol maka akan keluar hasil seperti ini:

Ini adalah perulangan ke - 1


Ini adalah perulangan ke - 2
Ini adalah perulangan ke - 3
Ini adalah perulangan ke - 4
Ini adalah perulangan ke – 5

for (2) with access element


Keunikan lain dari looping dengan python adalah selain bahasa yang mudah dimengerti, kita
juga bisa mengakses elemen yang terdapat pada sebuah list. Berikut ini contohnya :

count=[1,2,3,4,5] #elemen list

for number in count: #looping untuk menampilkan semua elemen pada count
print("Ini adalah element count : ", number) #menampilkan elemen list pada
count

Klik tombol maka akan keluar hasil seperti ini: 

Ini adalah element count : 1


Ini adalah element count : 2
Ini adalah element count : 3
Ini adalah element count : 4
Ini adalah element count : 5
Tugas Praktek

1. Buatlah sebuah program yang bisa mengeluarkan angka 1 sampai 10.


2. Tampilan akan menunjukan "Angka ganjil 1" untuk angka ganjil dan "Angka genap 2" untuk
angka genap. (Menggunakan looping for)

Note: Kode dasar sudah disertakan, Anda cukup mengganti tanda # dengan nilai-nilai yang
sesuai.

for i in range (1,11):


if(i%2==0):
print("Angka genap",i)
else:
print("Angka ganjil",i)
Angka ganjil 1
Angka genap 2
Angka ganjil 3
Angka genap 4
Angka ganjil 5
Angka genap 6
Angka ganjil 7
Angka genap 8
Angka ganjil 9
Angka genap 10

Function

Pendahuluan
Pada pembuatan program yang kompleks dan memiliki banyak fitur, kita diharuskan
menggunakan fungsi. Hal ini bertujuan supaya kita tidak kesulitan untuk menulis kode
programnya. Kesulitan ini bisa muncul karena banyak kode yang harus ditulis. Seiring
berjalannya waktu, kode bisa menjadi sulit dibaca dan dirawat (maintenance).

Dalam hal ini, fungsi dapat dianalogikan sebagai sebuah perangkat untuk tujuan tertentu.
Perangkat dengan tujuan tertentu ini merupakan fitur dari program kita yang dapat dipanggil
kapanpun sesuai dengan kebutuhan. Untuk membuat sebuah fungsi perlu didasari pada tujuan
tertentu apa yang akan dihasilkan oleh fitur program kita.

Dengan demikian, sebuah fungsi ini bersifat reusable atau dapat digunakan secara berulang. Di
samping itu, penggunaan fungsi membuat program menjadi lebih terstruktur dan mudah dirawat.

Membuat fungsi sendiri


Fungsi pada Python, dibuat dengan kata kunci def  kemudian diikuti dengan nama fungsinya.

Contoh :

def nama_fungsi():
print ("Hello ini Fungsi")

Sama seperti blok kode yang lain, kita juga harus memberikan indentasi (tab atau spasi 2x) untuk
menuliskan isi fungsi.

Cara untuk memanggil fungsinya cukup sederhana. Cukup seperti ini:

nama_fungsi()

Sebagai contoh full code-nya, kamu bisa coba ketikkan kode di bawah ini :

# Membuat Fungsi
def salam():
print("Hello, Selamat Pagi")

## Pemanggilan Fungsi
salam()

Klik Run dan lihat hasil keluarannya.

Parameter pada fungsi


Sekarang, bagaimana kalau kita ingin memberikan input nilai ke dalam fungsi? Kita bisa
menggunakan parameter. Parameter adalah variabel yang menampung nilai untuk diproses
kedalam suatu fungsi.

Untuk mempermudah pembelajaran, pada contoh kali ini telah disediakan rumusan matematika
untuk menghitung luas pada segitiga. Berikut adalah contoh kodenya:

def luas_segitiga(alas, tinggi): #alas dan tinggi merupakan parameter yang


masuk
luas = (alas * tinggi) / 2
print("Luas segitiga: %f" % luas);

# Pemanggilan fungsi
##4 dan 6 merupakan parameter yang diinputkan kedalam fungsi luas segitiga
luas_segitiga(4, 6)

luas segitiga: 12.000000

Fungsi dengan Return Value


Fungsi yang tidak mengembalikan nilai biasanya disebut dengan prosedur. Namun, kadang kita
butuh hasil proses dari fungsi untuk digunakan pada proses berikutnya. Maka fungsi harus
mengembalikan nilai dari hasil pemrosesannya. Cara mengembalikan nilai adalah menggunakan
kata kunci return lalu diikuti dengan nilai atau variabel yang akan dikembalikan.

Meneruskan kembali di poin sebelumnya dengan fungsi luas segitiga yang sudah dicontohkan,
mari tambahkan return value sehingga menjadi seperti ini:

def luas_segitiga(alas, tinggi): #alas dan tinggi merupakan parameter yang


masuk
luas = (alas * tinggi) / 2
return luas

# Pemanggilan fungsi
##4 dan 6 merupakan parameter yang diinputkan kedalam fungsi luas segitiga
print("Luas segitiga: %d" % luas_segitiga(4, 6))

Luas segitiga: 12

Modul dan Package


Pendahuluan
Modul merupakan objek python yang telah tersedia dari pengembangnya atau dapat kamu
kembangkan sendiri. Dalam bahasa yang cukup sederhana, modul adalah kumpulan kode Python
yang distruktur ke dalam beberapa fungsi, kelas, dan variabel. Python sendiri telahmemiliki
banyak library dan module yang bisa diakses oleh pengguna secara free.

Umumnya modul dikembangkan untuk tujuan umum yang luas penerapannya seperti:

 untuk pengolah data numerik seperti array 1D, 2D, 3D atau hingga nD dengan contohnya
adalah numpy
 untuk komputasi saintifik yang berbasis metode numerik dan statistik dengan contohnya
adalah scipy dan statsmodel
 untuk pengolah dan analisis data seperti Microsoft Excel atau Google Spreadsheets
dengan contohnya adalah pandas, pypolar, dan modin
 untuk visualisasi data dengan contohnya yaitu matplotlib, seaborn, plotnine, altair,
mayavi, bokeh, plotly, dll.  
 untuk pembelajaran mesin dengan contohnya yaitu scikit-learn, xgboost, lightgbm,
catboost, pycaret, dll
 untuk deep learning dengan contohnya adalah keras, tensorflow, pytorch, cafe, dll

Tentunya masih banyak lagi jika disebutkan. Library atau modul-modul yang telah disebutkan
merupakan library yang umum digunakan oleh data scientist.

Import Package dan Menggunakan modul


Pada sesi praktik ini, kita akan menggunakan modul math yang merupakan module standar untuk
berbagai fungsi matematika. Panggil terlebih dahulu modul ini seperti yang ditunjukkan berikut
ini:

import math

Terlihat bahwa cara menggunakan modul cukup sederhana.

Secara umum, module memiliki banyak fungsi. Cara pemrogram untuk mengakses fungsi-fungsi
yang tersedia pada suatu modul juga berbeda-beda. Untuk saat ini, perhatikan kode berikut dan
kemudian ketikkan kode di bawah ini di Code Editor:

import math
print("Nilai pi adalah:", math.pi) # math.pi merupakan sintak untuk memanggil
fungsi pi

Klik Run untuk melihat hasilnya. Bila sudah paham kegunaanya, klik Submit untuk
melanjutkan ke bagian berikutnya.
Nilai pi adalah: 3.141592653589793

Import dengan Module Rename atau Alias


Kita bisa mengimpor modul dengan mengganti namanya. Hal ini biasa dilakukan untuk
menyingkat nama modul yang panjang.

import math as m #menggunakan m sebagai module rename atau


alias
print("Nilai pi adalah:", m.pi) #m.pi merupakan sintak untuk memanggil fungsi

Klik Run untuk melihat hasilnya. Bila sudah paham kegunaanya, klik Submit untuk
melanjutkan ke course selanjutnya.

Import Sebagian Fungsi


Sebuah module dapat memiliki puluhan atau ratusan fungsi. Terkadang kasus tertentu ketika
memprogram, kita hanya membutuhkan satu, dua, atau beberapa buah fungsi saja. Untuk
meminimalisir ketidakefisienan suatu program dalam me-load suatu module seperti yang telah
dilakukan dalam format import module_name. Selanjutnya, kita dapat mengimport beberapa
modul yang dibutuhkan saja menggunakan format from module_name import function_name

from math import pi

print("Nilai pi adalah", pi)

Klik Run untuk melihat hasilnya. Bila sudah paham kegunaanya, klik Submit untuk
melanjutkan ke bagian selanjutnya.

Import Semua isi Moduls


Namun, jika memang yang dibutuhkan banyak, semisal lebih dari 10 atau bahkan ratusan fungsi,
bisa dilakukan import semuanya dengan menggunakan format from module_name import *.
Tanda * disini menunjukan semua fungsi diimport ke dalam code.

from math import *

print("Nilai e adalah:", e)

Klik Run untuk melihat hasilnya. Bila sudah paham kegunaanya, klik Submit untuk
melanjutkan ke course selanjutnya.

Nilai e adalah: 2.718281828459045


Membaca dari File
Pendahuluan
CSV atau comma separated value adalah salah satu tipe file yang digunakan secara luas di dunia
programming. Tidak hanya itu CSV pun sering digunakan dalam pengolahan informasi yang
dihasilkan spreadsheet untuk diproses lebih lanjut melalui mesin analitik. CSV pun dianggap
sebagai file yang agnostik karena dapat digunakan oleh berbagai database untuk proses backup
data. CSV dianggap sebagai salah satu tipe data yang sering dipakai untuk mengelola data pada
proses lanjutan.

Membaca Teks File (CSV)


Info: materi telah diperbarui pada tanggal 31 Agustus 2021, pastikan kembali kode yang telah ditulis
disesuaikan dengan bagian Lesson.

Sekarang kita akan mencoba membaca sebuah file CSV yang telah dihasilkan aplikasi atau
program lain. Di Python, hasil pembacaan setiap baris pada file CSV akan dikonversi menjadi
list Python.

Berikut adalah contoh kode untuk membaca file CSV dengan kasus yang sangat sederhana, coba
ketik kode di bawah ini pada Code Editor:

import requests
from contextlib import closing
import csv

# tentukan lokasi file, nama file, dan inisialisasi csv


url = 'https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head.csv'

# baca file csv secara streaming


with closing(requests.get(url, stream=True)) as r:
f = (line.decode('utf-8') for line in r.iter_lines())

reader = csv.reader(f, delimiter=',')

# membaca baris per baris


for row in reader:
print(row)

Jika kamu ingin membaca file csv yang tersimpan di direktori yang sama dengan direktori
program python kamu, maka kode berikut dapat kamu gunakan (misalnya di local computer
kamu): 

import csv

# tentukan lokasi file, nama file, dan inisialisasi csv


f =
open('https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head.csv',
'r')
reader = csv.reader(f)
# membaca baris per baris
for row in reader:
print (row)

# menutup file csv


f.close()

Klik Run untuk melihat hasilnya. Bila sudah paham kegunaanya, klik Submit untuk
melanjutkan ke course selanjutnya.

In [1]: import requests


from contextlib import closing
import csv

# tentukan lokasi file, nama file, dan inisialisasi csv


url =
'https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head.csv'

# baca file csv secara streaming


with closing(requests.get(url, stream=True)) as r:
f = (line.decode('utf-8') for line in r.iter_lines())

reader = csv.reader(f, delimiter=',')

# membaca baris per baris


for row in reader:
print(row)

Membaca dari File


Membaca file CSV dengan menggunakan PANDAS
Bagi yang belum familiar, PANDAS merupakan salah satu library yang sangat sering digunakan
untuk aplikasi dan implementasi data science baik untuk data manipulation, data pre-
processing, atau data wrangling. Pada sesi kali ini, kita akan menggunakan PANDAS untuk
membaca file dari csv.

Cobalah ketik kode di bawah ini:

import pandas as pd
pd.set_option("display.max_columns",50)

table =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head
.csv")
table.head()
print(table)

Klik tombol maka akan keluar hasil seperti ini:

TAHUN NAMA PROVINSI NAMA KABUPATEN/KOTA NAMA KECAMATAN \


0 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT GAMBIR
1 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT GAMBIR
2 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT GAMBIR
3 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT GAMBIR
4 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT GAMBIR
5 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT GAMBIR
6 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SAWAH BESAR
7 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SAWAH BESAR
8 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SAWAH BESAR
9 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SAWAH BESAR
10 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SAWAH BESAR
11 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
12 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
13 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
14 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
15 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
16 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
17 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
18 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT KEMAYORAN
19 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SENEN
20 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SENEN
21 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SENEN
22 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SENEN
23 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SENEN
24 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT SENEN
25 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT CEMPAKA PUTIH
26 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT CEMPAKA PUTIH
27 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT CEMPAKA PUTIH
28 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT MENTENG
29 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT MENTENG
30 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT MENTENG
31 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT MENTENG
32 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT MENTENG
33 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
34 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
35 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
36 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
37 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
38 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
39 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT TANAH ABANG
40 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT JOHAR BARU
41 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT JOHAR BARU
42 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT JOHAR BARU
43 2013 PROVINSI DKI JAKARTA JAKARTA PUSAT JOHAR BARU

NAMA KELURAHAN LAKI-LAKI WNI PEREMPUAN WNI LAKI-LAKI WNA \


0 GAMBIR 1790 1690 1.0
1 CIDENG 9159 9206 5.0
2 PETOJO UTARA 10811 10436 10.0
3 PETOJO SELATAN 8455 8023 5.0
4 KEBON KELAPA 6300 6078 6.0
5 DURI PULO 13056 12588 2.0
6 PASAR BARU 7557 7552 34.0
7 KARANG ANYAR 16327 15859 4.0
8 KARTINI 13610 13808 3.0
9 GUNUNG SAHARI UTARA 9734 9889 15.0
10 MANGGA DUA SELATAN 17269 16458 42.0
11 KEMAYORAN 12365 11932 6.0
12 KEBON KOSONG 15933 15665 33.0
13 HARAPAN MULIA 13523 13049 2.0
14 SERDANG 17284 17020 1.0
15 GUNUNG SAHARI SELATAN 11730 11487 13.0
16 CEMPAKA BARU 19103 18601 NaN
17 SUMUR BATU 13441 13288 20.0
18 UTAN PANJANG 17125 16351 4.0
19 SENEN 4236 3975 10.0
20 KENARI 5445 5252 2.0
21 PASEBAN 13787 13477 NaN
22 KRAMAT 17482 16331 2.0
23 KWITANG 9176 9148 1.0
24 BUNGUR 11200 10849 4.0
25 CEMPAKA PUTIH TIMUR 13630 13686 24.0
26 CEMPAKA PUTIH BARAT 20029 19681 12.0
27 RAWASARI 12462 12465 1.0
28 MENTENG 14576 14610 7.0
29 PEGANGSAAN 13392 13214 2.0
30 CIKINI 4825 4772 5.0
31 GONDANGDIA 2196 2443 11.0
32 KEBON SIRIH 7976 7439 2.0
33 GELORA 1865 1883 6.0
34 BENDUNGAN HILIR 12713 12582 11.0
35 KARET TENGSIN 11002 10271 10.0
36 PETAMBURAN 20112 18794 17.0
37 KEBON MELATI 19826 18672 8.0
38 KEBON KACANG 12873 12357 3.0
39 KAMPUNG BALI 7348 7205 3.0
40 JOHAR BARU 21016 20953 2.0
41 KAMPUNG RAWA 13337 12499 1.0
42 GALUR 11077 10259 NaN
43 TANAH TINGGI 22680 21450 NaN

PEREMPUAN WNA Unnamed: 9 Unnamed: 10 Unnamed: 11 Unnamed: 12 \


0 2.0 NaN NaN NaN NaN
1 6.0 NaN NaN NaN NaN
2 8.0 NaN NaN NaN NaN
3 7.0 NaN NaN NaN NaN
4 10.0 NaN NaN NaN NaN
5 6.0 NaN NaN NaN NaN
6 55.0 NaN NaN NaN NaN
7 2.0 NaN NaN NaN NaN
8 3.0 NaN NaN NaN NaN
9 30.0 NaN NaN NaN NaN
10 33.0 NaN NaN NaN NaN
11 8.0 NaN NaN NaN NaN
12 25.0 NaN NaN NaN NaN
13 3.0 NaN NaN NaN NaN
14 1.0 NaN NaN NaN NaN
15 15.0 NaN NaN NaN NaN
16 3.0 NaN NaN NaN NaN
17 13.0 NaN NaN NaN NaN
18 3.0 NaN NaN NaN NaN
19 7.0 NaN NaN NaN NaN
20 NaN NaN NaN NaN NaN
21 NaN NaN NaN NaN NaN
22 2.0 NaN NaN NaN NaN
23 1.0 NaN NaN NaN NaN
24 3.0 NaN NaN NaN NaN
25 24.0 NaN NaN NaN NaN
26 2.0 NaN NaN NaN NaN
27 3.0 NaN NaN NaN NaN
28 10.0 NaN NaN NaN NaN
29 NaN NaN NaN NaN NaN
30 1.0 NaN NaN NaN NaN
31 13.0 NaN NaN NaN NaN
32 2.0 NaN NaN NaN NaN
33 2.0 NaN NaN NaN NaN
34 2.0 NaN NaN NaN NaN
35 3.0 NaN NaN NaN NaN
36 13.0 NaN NaN NaN NaN
37 4.0 NaN NaN NaN NaN
38 4.0 NaN NaN NaN NaN
39 1.0 NaN NaN NaN NaN
40 NaN NaN NaN NaN NaN
41 NaN NaN NaN NaN NaN
42 NaN NaN NaN NaN NaN
43 NaN NaN NaN NaN NaN

Unnamed: 13 Unnamed: 14 Unnamed: 15 Unnamed: 16 Unnamed: 17


0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN
12 NaN NaN NaN NaN NaN
13 NaN NaN NaN NaN NaN
14 NaN NaN NaN NaN NaN
15 NaN NaN NaN NaN NaN
16 NaN NaN NaN NaN NaN
17 NaN NaN NaN NaN NaN
18 NaN NaN NaN NaN NaN
19 NaN NaN NaN NaN NaN
20 NaN NaN NaN NaN NaN
21 NaN NaN NaN NaN NaN
22 NaN NaN NaN NaN NaN
23 NaN NaN NaN NaN NaN
24 NaN NaN NaN NaN NaN
25 NaN NaN NaN NaN NaN
26 NaN NaN NaN NaN NaN
27 NaN NaN NaN NaN NaN
28 NaN NaN NaN NaN NaN
29 NaN NaN NaN NaN NaN
30 NaN NaN NaN NaN NaN
31 NaN NaN NaN NaN NaN
32 NaN NaN NaN NaN NaN
33 NaN NaN NaN NaN NaN
34 NaN NaN NaN NaN NaN
35 NaN NaN NaN NaN NaN
36 NaN NaN NaN NaN NaN
37 NaN NaN NaN NaN NaN
38 NaN NaN NaN NaN NaN
39 NaN NaN NaN NaN NaN
40 NaN NaN NaN NaN NaN
41 NaN NaN NaN NaN NaN
42 NaN NaN NaN NaN NaN
43 NaN NaN NaN NaN NaN

Grafik dasar dengan Matpotlib


Pendahuluan
Grafik merupakan salah satu perangkat visualisasi. Visualisasi sendiri sudah menjadi salah satu
challenge atau poin penting dalam data science. Selain bisa mempermudah seseorang untuk
memahami data, visualisasi bisa meningkatkan analisa atau memunculkan knowledge yang tidak
sempat terekspos ketika tidak menggunakan visualisasi. Pada sesi kali ini, kita akan
menggunakan matplotlib untuk melakukan visualisasi data yang sudah ada.

Bar Chart
Sebelum masuk pada membuat grafik bar, kita akan membahas library yang akan gunakan.
Python punya banyak library untuk visualisasi. Salah satu yang paling sering digunakan adalah
matplotlib karena memang sudah ada sejak lama dan relatif stabil dalam perkembangannya.
Maka dari itu, matplotlib dipilih untuk belajar visualisasi pada sesi kali ini.

Matplotlib sendiri menyediakan banyak jenis grafik mulai dari scatter/plot, line, bar, dan lain-
lain. Pada praktik ini, akan ada tambahan library selain dengan menggunakan matplotlib dan
pandas, yaitu menggunakan numpy. Numpy sendiri pada praktek kali ini digunakan untuk
melakukan manipulasi data dari csv untuk memudahkan visualisasi.

Ketikan kode di bawah ini :

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

table =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head
.csv")
table.head()
x_label = table['NAMA KELURAHAN']
plt.bar(x=np.arange(len(x_label)),height=table['LAKI-LAKI WNI'])
plt.show()

Klik tombol maka akan keluar hasil seperti ini:


Parameter dalam Grafik (Memberikan Nilai Axis dari data
CSV)
Jika ditelisik lebih dalam pada CSV, dari sana ada nama kelurahan yang merupakan variabel atau
seharusnya menjadi nilai AXIS pada grafik ini. Di praktek kali ini, kita akan mencoba bagaimana
menempatkan nama kelurahan pada grafik.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

table =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head
.csv")
table.head()

x_label = table['NAMA KELURAHAN']


plt.bar(x=np.arange(len(x_label)),height=table['LAKI-LAKI WNI'])
plt.xticks(np.arange(len(x_label)), table['NAMA KELURAHAN'], rotation=30)
plt.show()

Bila dijalankan akan keluar seperti di bawah ini:


Menambah Title dan Label pada Grafik
Pada implementasi grafik, pemberian label pada AXIS dan Ordinat sangat penting untuk
menjelaskan maksud grafik. Pada praktik kali ini, kita akan mencoba memberikan label dan title
pada grafik yang telah dibuat sebelumnya.

Cobalah ketik kode di bawah ini :

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

table =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/penduduk_gender_head
.csv")
table.head()

x_label = table['NAMA KELURAHAN']


plt.bar(x=np.arange(len(x_label)),height=table['LAKI-LAKI WNI'])
plt.xticks(np.arange(len(x_label)), table['NAMA KELURAHAN'], rotation=90)
plt.xlabel('Kelurahan di Jakarta Pusat')
plt.ylabel('Jumlah Penduduk Laki - Laki')
plt.title('Persebaran Jumlah Penduduk Laki- Laki di Jakarta Pusat')

plt.show()
Bila dijalankan, akan keluar hasil seperti di bawah ini:

Penutup
Mudah bukan? Setelah mempelajari basic Python ini, diharapkan yang sudah mengerjakan bisa
mengerti fundamental dari programming python. Sedikit rangkuman, memang course ini selain
mengajarkan basic rule dari python kita juga sedikit memberikan logic course didalamnya. Kita
tahu bahwa Data Science, AI, ataupun Machine Learning sangat identik dengan programming.
Basic Programming adalah pemahaman logic yang kuat. Harapannya dengan dikuatkan pondasi
dalam course ini ke depannya dalam menghadapi course lain yang ada. Sudah memiliki pondasi
dan bekal yang kuat, next kita akan menyajikan bagaimana bermain dan mengelola data dengan
Python pada course Data Wrangling with Python. See You!

Anda mungkin juga menyukai