Introduction to Pandas
Tulisan ini terinspirasi setelah mengikuti sesi minggu ke-3 atau minggu terakhir dari Workshop Python for Data Scientist yang diselenggarakan oleh Program Studi Statistika dan Sains Data - IPB University. Workshop Pyhton for Data Scientist diselenggarakan selama 3 hari di mana hari pertama pada tanggal 21 Agustus 2021 membahas tentang Introduction to Python. Hari kedua diselenggarakan pada 28 Agustus 2021 dan membahas tentang Data Analysis using Python. Hari ketiga di mana akhirnya bisa ikut secara live diselenggarakan pada 04 September 2021. Kali ini yang dibahas adalah Machine Learning using Python.
Entah kenapa bisa miss di minggu pertama dan minggu kedua :-D
Meskipun hanya mengikuti hari terakhir, tulisan ini bukan materi yang dibahas di hari terakhir. Ucapan terima kasih sangat layak kepada panitia Workshop yang telah memberikan mengumpulkan dan membagi materi yang dibahas pada minggu pertama dan kedua sehingga yang tidak sempat ikut pun bisa mencoba untuk membaca dan mempelajarinya.
Pandas adalah salah satu library Python yang sangat berguna dalam mengolah dataframe. Pandas digunakan untuk meng-explore, membersihkan hingga memproses suatu data frame. Dataframe adalah sebuah tabel dua dimensi di mana setiap kolom berisi nilai-nilai dari suatu peubah (variabel). Berikut adalah contoh dataframe yang terdiri atas 3 kolom peubah, yaitu Nama, Pekerjaan, dan Alamat.
Nama | Pekerjaan | Alamat |
---|---|---|
Masdian | Freelancer | Serang |
Cato | Dreamer | Serang |
Abah | Programmer | Serang |
Cara membuat dataframe - input data manual
Dataframe bisa dibuat si python dengan cara mengkonversi dictionary
menjadi dataframe menggunakan fungsi DataFrame
dari library pandas. Pertama, buat dictionary
menggunakan data pada tabel di atas.
data_dict = {
'Nama':['Masdian', 'Cato', 'Abah'],
'Pekerjaan':['Freelancer', 'Dreamer', 'Programmer'],
'Alamat':['Serang', 'Serang', 'Serang']
}
Setelah itu import library pandas.
import pandas as pd
Berikut adalah sintaks untuk menampilkan dictionary data_dict
sebagai dataframe.
pd.DataFrame(data_dict)
## Nama Pekerjaan Alamat
## 0 Masdian Freelancer Serang
## 1 Cato Dreamer Serang
## 2 Abah Programmer Serang
Jika ingin mengubah data_dict
menjadi dataframe, maka bisa menggunakan sintaks berikut.
data_dict = pd.DataFrame(data_dict)
Jika dijalankan, sintaks tersebut tidak menampilkan keluaran apapun karena hanya meng-assign pd.DataFrame(data_dict)
ke data_dict.
Jika ingin menampikan isi dari data_dict
bisa menggunakan sintaks berikut.
data_dict
## Nama Pekerjaan Alamat
## 0 Masdian Freelancer Serang
## 1 Cato Dreamer Serang
## 2 Abah Programmer Serang
Membaca file Excel/csv di Phython
Membaca file excel atau csv di python bisa menggunakan fungsi read_excel
atau read_csv
dari library pandas. Misalkan kita akan membaca file HR_comma_sep.csv dari Kaggle. Karena akan menggunakan fungsi dari library pandas
, maka jangan lupa untuk mengimpor library pandas
terlebih dahulu.
import pandas as pd
Misalkan kita akan membaca HR_comma_sep.csv
dan menyimpannya menjadi dataframe df.
df = pd.read_csv("HR_comma_sep.csv")
Operasi dataframe sederhana
Jika ingin mengetahui banyaknya peubah dan tipe data dari setiap peubah, maka bisa menggunakan fungsi info()
pada dataframe df
.
df.info()
## <class 'pandas.core.frame.DataFrame'>
## RangeIndex: 14999 entries, 0 to 14998
## Data columns (total 10 columns):
## # Column Non-Null Count Dtype
## --- ------ -------------- -----
## 0 satisfaction_level 14999 non-null float64
## 1 last_evaluation 14999 non-null float64
## 2 number_project 14999 non-null int64
## 3 average_montly_hours 14999 non-null int64
## 4 time_spend_company 14999 non-null int64
## 5 Work_accident 14999 non-null int64
## 6 left 14999 non-null int64
## 7 promotion_last_5years 14999 non-null int64
## 8 sales 14999 non-null object
## 9 salary 14999 non-null object
## dtypes: float64(2), int64(6), object(2)
## memory usage: 1.1+ MB
df.info()
memberikan informasi tentang nama peubah yang ditampilkan pada kolom Column.
Terdapat 10 peubah dimulai dari satisfaction_level
hingga salary.
Kolom Non-Null Count
menampilkan banyak data yang tidak kosong dari setiap peubah. Terlihat bahwa tidak ada data kosong pada dataframe df
. Tipe setiap peubah ditampilkan pada kolom Dtype
. float64
adalah tipe data berupa bilangan real, int64
berupa integer atau bilangan bulat, dan object
merupakan string atau karakter.
Ukuran atau dimensi dataframe df
bisa dilihat dari hasil yang ditampilkan df.info(),
di mana terdapat 14.999 baris dan 10 kolom. Selain menggunakan fungsi info()
, dimensi atau ukuran dataframe df bisa dilihat menggunakan fungsi shape
.
df.shape
Dimensi dataframe yang dihasilkan fungsi shape
adalah 14.999 baris dan 10 kolom.
## (14999, 10)
Kita juga bisa menampilkan data teratas dari dataframe df
menggunakan fungsi head()
. Secara default fungsi ini akan menampilkan 5 data teratas. Jika ingin menampilkan sejumlah k
data teratas, maka kita bisa menambahkan argumen k
pada fungsi head()
. Misalkan kita ingin menampilkan 8 data teratas, maka sintaks yang bisa digunakan adalah sebagai berikut.
df.head(8)
Output yang dihasilkan adalah sebagai berikut.
## satisfaction_level last_evaluation ... sales salary
## 0 0.38 0.53 ... sales low
## 1 0.80 0.86 ... sales medium
## 2 0.11 0.88 ... sales medium
## 3 0.72 0.87 ... sales low
## 4 0.37 0.52 ... sales low
## 5 0.41 0.50 ... sales low
## 6 0.10 0.77 ... sales low
## 7 0.92 0.85 ... sales low
##
## [8 rows x 10 columns]
Selain menampilkan data teratas, kita juga bisa menampilkan data paling bawah menggunakan fungsi tail().
Misalnya kita akan menampilkan 10 data paling bawah.
## satisfaction_level last_evaluation ... sales salary
## 14989 0.43 0.57 ... technical low
## 14990 0.89 0.88 ... support low
## 14991 0.09 0.81 ... support low
## 14992 0.40 0.48 ... support low
## 14993 0.76 0.83 ... support low
## 14994 0.40 0.57 ... support low
## 14995 0.37 0.48 ... support low
## 14996 0.37 0.53 ... support low
## 14997 0.11 0.96 ... support low
## 14998 0.37 0.52 ... support low
##
## [10 rows x 10 columns]
Jika kita ingin menampilkan \(k\) buah data secara acak, maka kita bisa menggunakan fungsi sample()
dengan argumen \(k\). Misalkan kita ingin menampilkan 8 buah data secara acak.
df.sample(8)
Output yang dihasilkan adalah sebagai berikut.
## satisfaction_level last_evaluation ... sales salary
## 2293 0.75 0.77 ... management medium
## 10371 0.99 0.37 ... product_mng low
## 13614 0.48 0.67 ... management medium
## 10317 0.22 0.70 ... sales medium
## 3024 0.41 0.96 ... support medium
## 12006 0.10 0.77 ... sales low
## 5106 0.53 0.80 ... IT low
## 3869 0.74 0.70 ... support low
##
## [8 rows x 10 columns]
Terlihat bahwa data yang ditampilkan tidak berurutan, tetapi diambil secara acak.
Jika ingin menghitung dan menampilkan ringkasan data dari dataframe df
, kita bisa menggunakan fungsi describe.
Berikut adalah sintaks yang bisa digunakan.
df.describe()
Output:
## satisfaction_level last_evaluation ... left promotion_last_5years
## count 14999.000000 14999.000000 ... 14999.000000 14999.000000
## mean 0.612834 0.716102 ... 0.238083 0.021268
## std 0.248631 0.171169 ... 0.425924 0.144281
## min 0.090000 0.360000 ... 0.000000 0.000000
## 25% 0.440000 0.560000 ... 0.000000 0.000000
## 50% 0.640000 0.720000 ... 0.000000 0.000000
## 75% 0.820000 0.870000 ... 0.000000 0.000000
## max 1.000000 1.000000 ... 1.000000 1.000000
##
## [8 rows x 8 columns]
Terlihat bahwa yang ditampilkan adalah ringkasan data untuk semua peubah bertipe numerik (float64
, integer64
). Sedangkan untuk peubah bertipe object
tidak ditampilkan. Jika ingin menampilkan ringkasan data untuk peubah bertipe object
, maka bisa menggunakan sintaks berikut.
df.select_dtypes('object').describe()
Output
## sales salary
## count 14999 14999
## unique 10 3
## top sales low
## freq 4140 7316