Cara menggunakan DATAFRAME.SORT pada Python

By: Finn Christoffer K.

Fungsi sortir dapat digunakan untuk mengurutkan daftar dalam urutan naik, turun atau yang ditentukan pengguna. Tujuan utama dari proses sorting adalah untuk mengurutkan data, baik itu dari terendah ataupun tertinggi.  Yang secara tidak langsung akan menjadikan data lebih terstruktur, rapi dan teratur.

Ada banyak algoritma populer untuk mengurutkan data, seperti : insertion sort, selection sort, merge sort, heap sort, quick sort, bubble sort, shell sort, comb sort, counting sort, bucket sort, radix sort. Tapi di artikel ini saya hanya akan menyebutkan salah satu jenis algoritma sort yaitu Selection Sort.

Selection Sort adalah perbaikan dari algoritma bubble sort, dengan mengurangi jumlah perbandingan. Dikatakan selection sort karena algoritma ini mencoba memilih satu per satu elemen data dari posisi awal, untuk mencari data paling kecil dengan mencatat posisi index-nya saja, lalu dilakukan pertukaran hanya sekali pada akhir setiap tahapan.

Selection  sort merupakan  metode  pengurutan dengan mencari nilai data terkecil dimulai dari data diposisi 0 hingga diposisi N-1. Jika terdapat N data dan data terkoleksi dari urutan 0 sampai dengan N-1 maka algoritma pengurutan dengan metode selection sortadalah sebagai berikut:

  1. Cari data terkecil dalam interval  j= 0 sampai dengan j= N-1
  2. Jika pada posisi  pos ditemukan data yang terkecil, tukarkan data diposisi  pos dengan data di posisi  i jika k.
  3. Ulangi langkah 1 dan 2 dengan j= j+isampai dengan j= N-1, dan seterusnya sampai  j = N

Jika kita memiliki elemen array :  {5, 1, 12, -5, 16, 2, 12, 14} maka cara pengurutannya

Cara menggunakan DATAFRAME.SORT pada Python

Berikut ini implementasi algoritma selection sort dalam Bahasa pemrograman Python:

Cara menggunakan DATAFRAME.SORT pada Python

Ketika program tersebut dijalankan, berikut ini hasil outputnya:

Cara menggunakan DATAFRAME.SORT pada Python

Pandas adalah sebuah paket library pada python yang digunakan untuk mempermudah dalam mengolah dan menganalisa data-data terstruktur. Pandas merupakan paket penting yang wajib diketahui untuk seorang data engineer, data analyst dan data scientist jika ingin mengolah dan manganalisa data menggunakan python. Jika kamu telah terbiasa menggunakan SQL, maka tidak akan sulit untuk membiasakan diri menggunakan fungsi-fungsi pada Pandas.

Panda memiliki format data yang sering digunakan, disebut DataFrame. Pandas DataFrame adalah struktur data 2 Dimensi. Data distrukturisasi seperti tabel yang berisi baris dan kolom, sehingga mudah untuk melakukan queri atau mengakses data tersebut. Baris merepresentasikan record dan kolom merepresentasikan field.

Saya tidak akan menjelaskan secara detail apa itu Panda, karena sudah banyak dibahas dimana-mana. Yuk langsung saja kita KODING !

Dataset

Dataset yang akan digunakan adalah dataset yang sederhana, sehungga lebih mudah untuk memahami Pandas. Data diambil dari Badan Pusat Statistik (bps.go.id). Dataset tersebut memuat beberapa informasi tentang provinsi di Indonesia pada tahun 2015. Dataset ini memiliki 10 kolom:

  1. province: nama provinsi di Indonesia
  2. rainfall: jumah curah hujan dalam mm yang diambil dari stasiun pengamatan yang dimiliki BMKG
  3. rainy_day: jumlah hari terjadinya hujan dalam setahun
  4. expenses_food_urban: rata-rata pengeluaran perkapita dalam sebulan untuk makanan di perkotaan
  5. expenses_other_urban: rata-rata pengeluaran perkapita dalam sebulan untuk barang non makanan di perkotaan
  6. expenses_food_rural: rata-rata pengeluaran perkapita dalam sebulan untuk makanan di pedesaan
  7. expense_other_rural: rata-rata pengeluaran perkapita dalam sebulan untuk barang non makanan di pedesaan
  8. unemployment: persentase angka pengangguran bulan agustus
  9. time_zone: klasifikasi zona waktu
  10. island: nama pulau

Dataset dapat didownload pada github

Import Paket Pandas

Untuk menggunakan paket pandas kita harus melakukan import paket, dan memberikan nama yang lebih pendek seperti pd, dengan menggunakan perintah import as

import pandas as pd
print('Pandas version: {}'.format(pd.__version__))

dengan perintah "version" kita dapat mengetahui versi pandas yang kita gunakan. Versi Pandas yang digunakan pada tutorial ini adalah versi 1.1.0

Membaca File csv

Dataset yang digunakan adalah data-provinsi-2015 dataset yang telah dijelaskan sebelumnya dan berada pada github.com/project303/dataset. File dataset ini memiliki format text dengan tab sebagai pemisah antar kolom dan memiliki header sebagai nama dari kolom.

Untuk membaca text file dengan delimiter menggunakan perintah read_csv().

url = "https://raw.githubusercontent.com/project303/dataset/master/data-province-2015.cvs"
df = pd.read_csv(url, sep='\t')

Jika file data-provinsi-2015.txt telah didownload terlebih dahulu dan berada di lokal komputer, maka url diubah ke directory dimana file tersebut berada, misalkan url="c:\dataset\data-provinsi-2015.txt"

Sample Data

Setelah berhasil diload ke dalam Pandas DataFrame, hal pertama yang biasa dilakukan adalah melihat contoh. Pandas menyediakan perintah head() untuk melihat 5 baris pertama dari DataFrame.

df.head()

Cara menggunakan DATAFRAME.SORT pada Python

Terlihat data beserta nama kolom dapat ditampilkan dengan baik

Untuk melihat lebih banyak data, perintah head dapat diberi parameter jumlah dataframe yang ingin ditampilkan. Sebagai contoh untuk menampilkan 10 records pertama dari DataFrame

df.head(10)

Cara menggunakan DATAFRAME.SORT pada Python

Untuk menampilkan n record terakhir, dapat menggunakan perintah tail(n). Jika tidak diberi parameter jumlah recordnya, maka secara default akan menampilkan 5 record

df.tail()

Cara menggunakan DATAFRAME.SORT pada Python

Fungsi sample() pada Pandas dapat digunakan jika kita ingin menampilkan dataframe secara acak. Misalkan menampilkan 10 dataframe secara acak

df.sample(10)

Cara menggunakan DATAFRAME.SORT pada Python

Jika ingin menampilkan seluruh data yang ada dalam DataFrame

df

Cara menggunakan DATAFRAME.SORT pada Python

Untuk memperoleh informasi jumlah records pada setiap kolom menggunakan perintah count()

df.count()

Cara menggunakan DATAFRAME.SORT pada Python

Fungsi count() akan menampilkan nama kolom dan jumlah baris/record. Seperti yang ditampilkan, semua kolom memiliki jumlah record yang sama, yaitu 34. Ini juga berarti bahwa tidak ada nilai null di semua kolom.

Cara lain untuk menampilkan jumlah record adalah dengan menggunakan property shape

df.shape[0]

Informasi Struktur Data

Property shape dapat digunakan untuk mengetahui dimensi dari dataframe

df.shape

Cara menggunakan DATAFRAME.SORT pada Python

Dari nilai property shape yang terlihat diatas, memberikan informasi bahwa DataFrame memiliki 34 baris/record dan 10 kolom.

Property DataFrame lainnya adalah dtypes, yang dapat digunakan untuk melihat struktur dari data

df.dtypes

Cara menggunakan DATAFRAME.SORT pada Python

Informasi lebih detail mengenai struktur DataFrame dapat dilihat menggunakan fungsi info()

df.info()

Cara menggunakan DATAFRAME.SORT pada Python

Informasi Statistik

Informasi statistik untuk setiap kolom seperti nilai minimum, nilai maksimum, standar deviasi, rata-rata dan sebagainya, dapat ditampilkan dengan mengikuti perintah berikut

df.describe(include='all')

Cara menggunakan DATAFRAME.SORT pada Python

Menampilkan Kolom

Kita dapat memilih kolom mana saja yang akan ditampilkan, yaitu dengan menyebutkan nama kolom yang akan ditampilkan. Sebagai contoh kita hanya ingin menampilkan kolom province, unemployment dan expenses_food_urban

df[['province', 'unemployment', 'expenses_food_urban']].head()

Cara menggunakan DATAFRAME.SORT pada Python

Memfilter Data

Salah satu bagian penting yang digunakan dalam penyiapan data dan analisis data adalah filtering, yaitu pemilihan data dengan kriteria tertentu. Ini juga disebut data subset.

Bagi mereka yang terbiasa menggunakan SQL, ini adalah bagian dari pernyataan WHERE.

Misalnya, kami ingin menampilkan data untuk pulau yang sama dengan 'Sumatera'

df[(df.island == "Sumatera")].head()

Cara menggunakan DATAFRAME.SORT pada Python

Penggabungkan beberapa kondisi dapat menggunakan operator logika AND("&") dan operator logika OR("|") untuk memilih baris dengan lebih dari satu kriteria.

Misalnya kita ingin menampilkan semua provinsi yang ada di pulau Sumatera dan tingkat pengangguran kurang dari 5

df[(df.island == "Sumatera") & (df.unemployment < 5)]

Cara menggunakan DATAFRAME.SORT pada Python

Penulisan dengan cara yang berbeda tetapi memiliki hasil yang sama

df[(df['island'] == "Sumatera") & (df['unemployment'] < 5)].head()

Cara menggunakan DATAFRAME.SORT pada Python

Pada contoh di atas memiiki 2 kriteria, yaitu

  1.     island = 'Sumatera'
  2.     unemployment < 5

Penggunaan operator logika AND ("&") di atas, akan mengambil data yang cocok dengan kedua kriteria tersebut. Jika Anda ingin mendapatkan data yang cocok hanya untuk salah satu kriteria, dapat menggunakan operator logika OR("|")

Fungsi isin() dapat digunakan untuk memfilter kolom jika nilainya ditentukan dalam bentuk list/daftar. Misalnya, kami ingin menampilkan provinsi di Sumatera dan pulau Kalimantan yang memiliki tingkat pengangguran kurang dari 5

df[  (df['island'].isin(['Sumatera', 'Kalimantan'])) 
   & (df['unemployment'] < 5)
  ]

Cara menggunakan DATAFRAME.SORT pada Python

Untuk penyataan negasi atau NOT menggunakan tanda '~'

df[  ~(df['island'].isin(['Sumatera', 'Kalimantan'])) 
   & (df['unemployment'] < 5)
  ].head()

Cara menggunakan DATAFRAME.SORT pada Python

Hasil pernyataan diatas menunjukkan semua data yang TIDAK berada di pulau Sumatera dan Kalimantan, dan memiliki tingkat pengangguran kurang dari 5

Jika pernyataan kondisi terlalu rumit, maka sebaiknya dibuat variable DataFrame baru sehingga menyederhanakan proses berikutnya

df2 = df[  ~(df['island'].isin(['Sumatera', 'Kalimantan']))
   & (df['unemployment'] < 5)
  ]
df2.sample(5)

Cara menggunakan DATAFRAME.SORT pada Python

Mengurutkan Data

Fungsi sort_values() digunakan untuk melakukan pengurutan data berdasarkan dengan kolom yang disebutkan mulai dari nilai terkecil. Perintah berikut untuk menampilkan data diurutkan berdasarkan kolom rainfall

df.sort_values('rainfall').head()

Cara menggunakan DATAFRAME.SORT pada Python

Atau menggunakan data yang telah difilter sebelumnya

df2.sort_values('rainfall').head(5)

Cara menggunakan DATAFRAME.SORT pada Python

Untuk mengurutkan data dimulai dari nilai terbesar, maka parameter ascending diberi nilai False

df.sort_values('rainfall', ascending=False).head()

Cara menggunakan DATAFRAME.SORT pada Python

Jika ingin mengurutkan data dengan menggunakan lebih dari satu kolom maka perlu ditentukan daftar nama kolom, misalkan mengurutkan berdasarkan kolom rainfall dan rainy_day, dapat dilakukan seperti berikut

df.sort_values(['rainfall', 'rainy_day' ]).head()

Cara menggunakan DATAFRAME.SORT pada Python

pada baris 3 dan 4 terlihat data memiliki nilai rainy_day yang tidak berurut, karena telah diurutkan berdasarkan rainfall terlebih dahulu

Setiap kolom juga dapat memiliki tipe pengurutannya masing-masing, misalkan time_zone diurutkan secara DESC dan rainy_day secara ASC

df.sort_values(['time_zone', 'rainy_day'], ascending=[0, 1]).head(10)

Cara menggunakan DATAFRAME.SORT pada Python

ASC : mengurutkan dengan nilai terbesar lebih dahulu

DESC: mengurutkan dengan nilai terkecil lebih dahulu

Jika ingin menampilkan hanya kolom time_zone, rainy_day, province, dan island

Cara menggunakan DATAFRAME.SORT pada Python

Rehat Sejenak

Mantap! Kamu telah selesai mempelajari BAGIAN 1 - Panduan Praktis Penggunaan Pandas. Semoga kamu mendapatkan ide betapa mudahnya Pandas. Pada bagian ini telah dipelajari tentang cara membaca data, mendapatkan informasi struktur, memfilter, dan mengurutkan data.

Nanti pada BAGIAN 2 - Panduan Praktis Penggunaan Pandas, akan dituntaskan semua hal-hal yang penting untuk diketahui pada Pandas. Akan dijelaskan bagaimana melakukan aggregasi, grouping data, manipulasi kolom, join antar data dan visualisasi data.

Artikel ini juga diposting pada medium
Versi notebook dapat diakses pada github
Untuk yang belum pernah menggunakan Python dapat membaca Berkenalan dengan Python

Enjoy learning and have fun with data !