Python for Data Analysts#
Anaconda as Environment Manager#
Apa perbedaan dari Anaconda dan Miniconda?#
Anaconda adalah Python distributor yang menyediakan interpreter dari bahasa pemrograman Python, conda sebagai package dan environment manager, serta lebih dari 100 packages dalam satu paket pre-install untuk kebutuhan komputasi ilmiah atau analisis. Proses instalasi Anaconda akan membutuhkan beberapa gigabyte ruang disk karena ukuran bundle atau paket distribusi yang cukup besar.
Miniconda adalah versi mini dari Anaconda yang terdiri dari bahasa pemrograman Python, conda, dan jumlah package yang lebih kecil sehingga jika Anda memiliki masalah pada ruang penyimpanan maka Anda direkomendasikan melakukan instalasi Miniconda dibandingkan dengan Anaconda.
Apa perbedaan perintah conda
dan pip
?#
conda
adalah package manager untuk instalasi package dimana package yang terinstall adalah versi package yang sudah stabil. Package yang terdaftar pada conda
biasanya tidak hanya untuk bahasa pemrograman Python. Sedangkan pip
adalah package manager untuk instalasi package, spesifik untuk bahasa pemrograman Python.
Package manager mana yang akan kita gunakan untuk proses instalasi? Anda dapat menggunakan keduanya atau memilih salah satu di antara mereka. Selain itu, Anda bisa memastikan kembali pada dokumentasi package yang akan diinstalasi apakah sudah terdaftar pada conda
atau pip
juga.
Untuk conda list
, jika dalam environment tersebut terdapat banyak package, apakah memungkinkan untuk menggunakan notasi wildcard (contoh : conda list panda*
)?#
Pemanggilan perintah conda
di terminal/console tidak bisa dikombinasikan dengan wildcard dan harus dilihat satu per satu package yang ada di dalam sebuah environment.
Apakah bisa membuka dua Anaconda Prompt secara bersamaan?#
Bisa. Anda dapat membuka lebih dari satu Anaconda Prompt untuk melakukan aktivitas yang berbeda-beda, misalnya mengakses Jupyter Notebook yang berbeda.
Bagaimana cara untuk mengetahui bahwa sebuah package bisa cocok dengan versi Python?#
Tidak semua package pada Python cocok untuk semua versi Python. Ketika kita melakukan instalasi package pada versi Python yang tidak cocok, maka secara default Python akan memberikan pesan error bahwa package (dengan versi tertentu) tidak dapat diinstall dengan baik. Untuk memastikannya, Anda dapat membuka dokumentasi package tersebut agar package yang terinstall bisa cocok dengan versi Pythonnya.
Apakah environment harus dibuat berbeda-beda untuk setiap project?#
Pada umumnya pembuatan environment disesuaikan dengan pengerjaan suatu project. Secara best practice, setiap environment memang hanya didedikasikan untuk satu project. Akan tetapi, Anda masih bisa menggunakan environment yang secara general sama struktur dan penggunaannya ketika akan mengerjakan project baru. Anda hanya perlu memisahkan letak project baru tersebut dengan project yang lama.
Saat mengubah kernel, mengapa pilihan kernelnya hanya ada Python 3 saja?#
Jika pilihan kernel yang tampil hanya tersedia Python 3 saja, kemungkinan Anda belum membuat kernel baru. Anda dapat membuat dan mendaftarkan terlebih dahulu kernel yang nantinya dapat digunakan bersama environment Python. Berikut ini adalah cara yang bisa Anda lakukan untuk membuat sebuah kernel baru pada sebuah environment:
Langkah pertama, lakukan instalasi
ipykernel
pada environment yang telah dibuat sebelumnyaconda install ipykernel
Selanjutnya daftarkan kernel tersebut pada environment yang telah dibuat
python -m ipykernel install --user --name <ENV_NAME>
Jupyter Notebook#
Apakah ada ketentuan khusus untuk menempatkan file notebook dalam satu folder dengan instalasi Python atau Anaconda?#
Tidak ada ketentuan khusus dalam menempatkan file Python. File code Python dapat disimpan di mana saja, akan tetapi disarankan untuk menyimpannya satu folder sesuai dengan project yang sedang dikerjakan. Hal ini untuk mempermudah ketika nantinya ingin mengakses file lain yang berhubungan.
Apa perbedaan ketika saya membuka Jupyter Notebook melalui Anaconda Prompt, Command Prompt, atau icon Jupyter Notebook sendiri?#
Anaconda Prompt maupun Command Prompt dapat digunakan untuk membuka Jupyter Notebook dan Anda dibebaskan untuk mengaktifkan environment mana yang akan digunakan. Jika menggunakan Anaconda prompt, Anda akan langsung diberitahu di awal saat pertama kali membuka prompt Anda berada di environment base, sedangkan pada Command Prompt tidak memberikan informasi ini di awal.
Apabila melalui icon Jupyter Notebook maka secara otomatis Anda akan membukanya menggunakan environment base dan Anda tidak bisa mengganti dengan environment lain.
Saat pertama kali membuka file .ipynb, mengapa ada pilihan “Continue without kernel”?#
Saat pertama kali membuka file .ipynb Anda dapat memilih kernel mana yang akan dipakai. Kotak dialog tersebut muncul karena kernel tidak dapat ditemukan, karena secara default Jupyter Notebook mencari kernel bawaan dari file .ipynb yang sebelumnya dibuat. Anda dapat memilih pilihan “Continue Without Kernel” untuk menggunakan kernel base, atau memilih kernel yang sesuai pada daftar kernel kemudian pilih “Set Kernel”.
Selain melakukan import library, apakah kita juga harus menjalankan semua kode lagi setiap membuka Jupyter Notebook?#
Benar. Saat membuka file .ipynb, Anda harus menjalankan kembali kode penting seperti mengimport library, memanggil variabel, dan lainnya. Cara cepat yang bisa Anda lakukan untuk menjalankan semua code adalah dengan pilihan Run All Above atau Run All Below pada Jupyter Notebook. Akan tetapi, cara ini harus ditinjau kembali karena proses running akan berhenti ketika menemukan sebuah cell yang gagal atau error dieksekusi.
Apa arti tanda bintang In [*]
pada sisi kiri cell di Jupyter Notebook?#
Tanda bintang tersebut menandakan bahwa code pada cell sedang dieksekusi. Jika cell tersebut merupakan cell code maka setelah selesai running tanda bintang tersebut akan berubah menjadi sebuah angka yang menunjukkan urutan proses running cell.
Python Basics#
Apa saja special character yang tidak dapat dijadikan sebagai penamaan variabel pada python?#
Dalam Python, terdapat beberapa batasan terkait dengan penggunaan karakter khusus dalam penamaan variabel. Berikut adalah aturan-aturan tersebut:
Karakter spasi (Whitespace): Tidak diperbolehkan menggunakan spasi dalam penamaan variabel. Jika Anda memerlukan pemisahan kata, gunakan garis bawah
_
atau gaya camelCase (huruf pertama kata kedua diawali dengan huruf kapital).
Wrong Example
nama_variabel = 10
namaVariabel = 20
Angka sebagai karakter pertama: Tidak diperbolehkan menggunakan angka sebagai karakter pertama dalam penamaan variabel. Namun, angka dapat digunakan setelah karakter pertama.
Wrong Example
var1 = 10
var2 = 20
Karakter khusus: Beberapa karakter khusus seperti
!
,@
,#
,$
,%
,^
,&
, dan lainnya tidak diperbolehkan dalam penamaan variabel.
Wrong Example
variabel@ = 10
variabel# = 20
Kata kunci Python: Kata kunci atau reserved words seperti
if
,else
,while
,for
, dan sebagainya tidak dapat digunakan sebagai nama variabel.
Wrong Example
if = 10
while = 20
Underscore diawali dengan dua garis bawah: Underscore diawali dengan dua garis bawah (
__
) sering digunakan untuk penamaan yang bersifat khusus (seperti metode khusus dalam kelas).
Wrong Example
__variabel = 10
Penting untuk diingat bahwa memilih penamaan variabel yang deskriptif dan mudah dimengerti akan meningkatkan kejelasan dan keberlanjutan kode Anda. Selalu pilih nama yang merepresentasikan makna dari variabel tersebut.
Apa perbedaan tuple dan list?#
Tuple dan list adalah dua jenis struktur data yang umum digunakan dalam bahasa pemrograman Python. Berikut adalah perbedaan utama antara tuple dan list:
Mutabilitas (Kemampuan diubah atau tidak):
List: Mutable (dapat diubah). Artinya, elemen-elemen dalam list dapat diubah setelah list tersebut dibuat. Anda dapat menambahkan, menghapus, atau mengganti elemen-elemen di dalam list.
Tuple: Immutable (tidak dapat diubah). Setelah sebuah tuple dibuat, elemen-elemen di dalamnya tidak dapat diubah. Anda tidak dapat menambahkan, menghapus, atau mengganti elemen-elemen dalam tuple.
# contoh list (mutable)
my_list = [1, 2, 3]
my_list[0] = 10 # memungkinkan perubahan
print(my_list) # output: [10, 2, 3]
# contoh tuple (immutable)
my_tuple = (1, 2, 3)
my_tuple[0] = 10 # akan menghasilkan kesalahan (TypeError)
Notasi (Cara mendefinisikan):
List: Didefinisikan dengan menggunakan kurung siku (
[]
).Tuple: Didefinisikan dengan menggunakan kurung biasa (
()
). Kadang-kadang, koma diperlukan untuk mendefinisikan tuple dengan satu elemen.
# contoh list
my_list = [1, 2, 3]
# contoh tuple
my_tuple = (1, 2, 3)
another_tuple = (4,) # perlu koma jika tuple hanya memiliki satu elemen
Kecepatan (Speed):
Karena tuple bersifat immutable, mereka dapat sedikit lebih cepat daripada list dalam beberapa operasi, terutama ketika datanya tetap tidak berubah.
Metode dan Fungsi Bawaan:
Meskipun keduanya memiliki sejumlah metode dan fungsi yang serupa, ada beberapa perbedaan. Misalnya, list memiliki metode seperti
append()
,extend()
, danremove()
, yang tidak dimiliki oleh tuple karena sifat imutabilitasnya.
# contoh metode list
my_list = [1, 2, 3]
my_list.append(4) # menambahkan elemen ke list
print(my_list) # output: [1, 2, 3, 4]
# tuple tidak memiliki metode seperti append karena sifat imutabilitasnya
Penggunaan Umum:
List: Digunakan ketika kita membutuhkan urutan elemen yang dapat diubah, seperti daftar item di dalam keranjang belanja.
Tuple: Digunakan ketika kita memiliki kumpulan data yang tidak boleh diubah, seperti koordinat (x, y) atau informasi konfigurasi yang tetap.
Pemilihan antara tuple dan list tergantung pada kebutuhan spesifik dan karakteristik dari data yang akan Anda atur. Jika Anda membutuhkan kemampuan perubahan, gunakan list; jika tidak, tuple dapat menjadi pilihan yang baik.
Bagaimana cara lihat variabel yang sudah tersimpan di jupyter notebook?#
Seluruh variabel yang tersimpan pada python dapat dilihat dengan fungsi dir()
tetapi perlu diketahui bahwa yang ditampilkan adalah seluruh variable baik yang kita buat/deklarasikan, maupun yang sudah built-in.
Working with Dataframe#
Apa perbedaan attribute
dan method
?#
Attribute
merupakan nilai/informasi yang terkandung dari sebuah object. Beberapa attribute
yang ada pada dataframe antara lain adalah .shape
, .dtypes
, .size
, .axes
dan lain-lain.
Method
merupakan perintah/function yang dapat terdapat pada suatu object, ditandain dengan penggunaan tanda kurung bulat ()
sebagai tempat untuk memasukkan argumen. Beberapa method
yang ada pada dataframe antara lain adalah .describe()
, .head()
, .tail()
dan lain-lain.
Kapan menggunakan tanda kurung kurawal { }
, siku [ ]
, ataupun bulat ( )
?#
Tanda kurung kurawal {}
digunakan untuk membuat sebuah dictionary, berisi pasangan key dan value.
student_dict = {
'Name': ['Fafilia', 'Lita', 'Tomy'],
'Age': [25, 26, 24],
'Address': ['Jakarta Selatan', 'Jakarta Pusat', 'Jakarta Barat']}
type(student_dict)
dict
Tanda kurung siku []
digunakan untuk:
Melakukan subsetting terhadap DataFrame (misalnya mengambil kolom atau conditional subsetting)
Melakukan indexing dengan
.loc
atau.iloc
Membuat sebuah list
student = pd.DataFrame(student_dict)
# melakukan subsetting
student['Name']
0 Fafilia
1 Lita
2 Tomy
Name: Name, dtype: object
# melakukan indexing
student.loc[2:]
Name | Age | Address | |
---|---|---|---|
2 | Tomy | 24 | Jakarta Barat |
# membuat list
position = ['CEO', 'Vice President', 'General Manager']
type(position)
list
Tanda kurung bulat ()
digunakan untuk pemanggilan method atau fungsi. Misalnya saat memanggil method .tail()
, .head()
, .describe()
, ataupun saat memanggil fungsi seperti print()
.
# menampilkan 2 baris teratas
student.head(2)
Name | Age | Address | |
---|---|---|---|
0 | Fafilia | 25 | Jakarta Selatan |
1 | Lita | 26 | Jakarta Pusat |
Bagaimana cara mengubah tipe data float tetapi dengan 2 angka decimal?#
Dapat menggunakan opsi pengaturan pada notebook yang dimiliki dengan pd.options.display.float_format = '{:,.2f}'.format
Apa perbedaan penggunaan tanda petik tunggal (‘string’) dan ganda (“string”) pada penulisan character atau string?#
Penggunaan tanda petik tunggal maupun ganda sama-sama untuk menunjukkan string. Umumnya tanda petik tunggal digunakan untuk menuliskan suatu karakter tunggal seperti ‘a’, ‘b’, ‘!’, dan sejenisnya. Tanda petik ganda digunakan untuk menuliskan kata atau kalimat seperti “Algoritma”, “Algoritma Data Science School”, dan sebagainya.
abjad = ['a','b','c']
kata = ["Algoritma", "Data", "Indonesia"]
print(abjad)
print(kata)
['a', 'b', 'c']
['Algoritma', 'Data', 'Indonesia']
Bagaimana cara kita ingin menampilkan tanda petik dalam string?#
Terdapat dua cara yang dapat dilakukan untuk menuliskan tanda petik dalam sebuah string.
Cara pertama: gunakan karakter back slash
\
sebelum tanda kutip (baik petik tunggal atau ganda) seperti contoh di bawah ini:
print('Mereka berkata: \'Algoritma luar biasa!\'')
Mereka berkata: 'Algoritma luar biasa!'
print("Mereka berkata: \"Algoritma luar biasa!\"")
Mereka berkata: "Algoritma luar biasa!"
Cara kedua: kombinasikan petik tunggal dan ganda untuk mengapit sebuah kalimat atau string yang mengandung tanda kutip seperti contoh di bawah ini:
print("Mereka berkata: 'Algoritma luar biasa!'")
Mereka berkata: 'Algoritma luar biasa!'
print('Mereka berkata: "Algoritma luar biasa!"')
Mereka berkata: "Algoritma luar biasa!"
Mengapa jika kita menggunakan method .select_dtypes()
dan menggunakan parameter include = 'integer'
, maka kolom dengan tipe data int64 tidak keluar. Sedangkan jika include = 'float'
, maka kolom dengan tipe data float64 ikut terpilih?#
Secara umum, float tidak perlu dituliskan nilai bitnya sedangkan pada int perlu dituliskan nilai bitnya.
Dalam penggunaan .loc
jika kita telah mengatur index saat membaca data pada parameter index_col
, apakah nantinya sistem pemanggilan nama index juga akan ikut berubah?#
Sistem pemanggilan nama index akan ikut berubah. Perhatikan contoh berikut ini:
companies = pd.read_csv('data_input/companies.csv', index_col = 'Customer Name')
companies.loc[['PT. Algoritma Data Indonesia']]
ID | Consulting Sales | Software Sales | Forecasted Growth | Returns | Month | Day | Year | Location | Account | |
---|---|---|---|---|---|---|---|---|---|---|
Customer Name | ||||||||||
PT. Algoritma Data Indonesia | 57531 | IDR850000 | IDR395500 | 4.00% | 0 | 7 | 17 | 2017 | Jakarta | Startup |
Kita mengatur kolom Customer Name
sebagai index sehingga nilai di setiap barisnya adalah nama perusahaan. Ketika menggunakan metode .loc[]
untuk subsetting, maka pemanggilan nama indexnya pun akan mengikuti nilai dari index dataframe itu sendiri. Pada contoh di atas, kita melakukan indexing untuk perusahaan yang bernama PT. Algoritma Data Indonesia.
Saat melakukan conditional subsetting, apakah kita dapat menggunakan lebih dari dua kondisi?#
Sangat bisa. Anda dapat menggunakan lebih dari dua kondisi yang dikombinasikan menggunakan operasi & (AND) atau operasi | (OR) untuk melakukan conditional subsetting. Pada conditional subsetting, jumlah kondisi tidak terbatas dan tergantung pada kebutuhan analisis Anda.
Contoh: kita ingin menampilkan companies
yang berlokasi di Surabaya dan Bandung dan berdiri di antara tahun 2012 dan 2018.
companies[
(
(companies['Location'] == 'Surabaya') |
(companies['Location'] == 'Bandung')
) &
(
(companies['Year'] >= 2012) &
(companies['Year'] <= 2018)
)
]
ID | Consulting Sales | Software Sales | Forecasted Growth | Returns | Month | Day | Year | Location | Account | |
---|---|---|---|---|---|---|---|---|---|---|
Customer Name | ||||||||||
PT. Kreasi Metrik Solusi | 18374 | 0 | IDR550403 | 25.00% | 0 | 3 | 29 | 2012 | Surabaya | Enterprise |
Palembang Konsultansi | 19002 | IDR2115000 | 0 | -15.00% | 0 | 2 | 24 | 2018 | Bandung | Startup |
Bagaimana cara untuk melakukan export dataframe ke file csv?#
Gunakan method .to_csv()
seperti contoh di bawah ini:
object_dataframe.to_csv("PATH/NAMA_FILE.csv")