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
comments powered by Disqus