Data Visualization With Python Matplotlib for Beginner (Part 1)

I PUTU SEDANA WIJAYA
9 min readDec 6, 2020
Sumber: https://ngodingdata.com/visualisasi-matplotlib-dengan-pandas/

Hai data loverz!

“Bagaimana minggu kalian kali ini?”

Semoga sehat selalu ya! Kali ini aku diberikan kesempatan lagi untuk menjadikan mingguku lebih produktif dengan ikut DQ-Weekend Challenge ke #10 dan menyelesaikan track module Data Visualization With Python Matplotlib for Beginner (Part 1) dari platform DQLab.

Pada kesempatan ini aku ingin berbagi pengalaman sekaligus menjelaskan ke teman-teman bagaimana memvisualisasikan data menggunakan library Matplotlib pada Python. Yuk kita cekidot (check it out)!

Visual Data

“Kenapa sih kita perlu memvisualisasikan data?”

Visual data diperlukan jika kita sedang menganalisis data dengan jumlah yang sangat banyak. Anggap saja ada data pendapatan per hari dan kita ingin menganalisis pendapatantersebut dalam waktu bulanan atau tahunan. Tentunya sangat banyak angka yang dapat memusingkan kepala kita jika kita cari satu per satu. Dengan memvisualisasikan data kita dapat dengan lebih mudah melihat pendapatan bulanan pada data tersebut seperti gambar dibawah ini:

Sumber: https://academy.dqlab.id/main/livecode/164/314/1459

Simple bukan? Kita dapat melihat perbedaan pendapatan tiap bulan dari bulan Juli hingga Desember di tahun 2019 berada dalam rentang angka 4–8. Tentu grafik visual data ini juga dapat kita percantik nantinya.

Sebelum itu, kita perlu memahami beberapa hal berikut, jadi stay tune ya teman-teman!

NB: Pembaca yang langsung ingin tahu gimana visualisasi data bisa langsung ke bagian Plot Visual Data Pertama ya!

Dataset

“Apa ya itu Dataset?”

Dataset adalah tempat menampung data yang kita punya berupa file Excel, CSV (Comma Separated Values), TSV (Tab Separated Values), dan masih banyak lainnya termasuk juga code program kita. Kita perlu belajar Dataset ini karena ada function-function yang dapat digunakan untuk membantu memvisualisasikan data.

Salah satu cara menampung data yang kita punya ke Dataset adalah menggunakan library Pandas pada bahasa pemrograman Python untuk memanggil function .read_csv() untuk file berformat CSV. Beberapa function untuk file berformat lainnya juga ada pada library ini. Contoh codenya seperti berikut:

Sumber: https://academy.dqlab.id/main/livecode/164/312/1447

Nah dengan menampung data pada dataset, kita dapat memanggil function .shape untuk mengetahui jumlah baris dan kolom seperti code di atas dan kemudian memanggil function .head() untuk menampilkan baris 5 teratas pada data. Hasilnya (output) seperti gambar di bawah:

Sumber: https://academy.dqlab.id/main/livecode/164/312/1447

Kita akan memakai data di atas untuk seterusnya ya.. Jadi buat yang belum paham, aku jelasin pemahamannya nih!

Konsep: Dalam perpustakaan pandas, kita akan meminjam buku (function) bernama .read_csv() untuk membantu kita menampung seluruh data di file CSV ke dalam variabel dengan nama df.

Variabel ini dapat kita olah nantinya untuk mendapatkan hasil tergantung dari tujuan pengolahan data. Kita juga meminjam buku bernama .shape untuk membantu kita melihat jumlah baris dan kolom pada data kita.

Terakhir kita meminjam buku bernama .head() untuk membantu kita melihat isi variabel tersebut dari baris awal. Tentunya setelah kita pinjam, buku ini secara otomatis dikembalikan ke perpustakaan Pandas. “Keren bukan?”

Function / Method

“Wah kita meminjam buku apa lagi nih?”

Sebelum memvisualisasikan data, alangkah baiknya jika kita pastikan dulu datanya sudah siap. Kita akan mengecek kolom apa saja yang terdapat pada data penjualan/pendapatan dengan menggunakan function .columns

Cek kolom data
Output

Karena kita akan menampilkan data penjualan bulanan, kita akan membuat kolom baru bernama ‘order_month’ untuk mengetahui bulan penjualan tersebut. Function yang digunakan disini lumayan banyak jadi mari kita pelan-pelan bahasnya ya:

Kali ini kita menggunakan library datetime untuk membantu pemrosesan tanggal. Kita akan menciptakan kolom baru bulan penjualan, oleh itu inisialisasi dataset[‘order_month’] terlebih dahulu.

Lalu kita dapat tanggal penjualan dari mana? Dari dataset[‘order_date’]. Disini kita akan memanggil function .apply() yang membantu menerapkan function lainnya ke data kita. Ada banyak function yang dapat kita gunakan sekaligus seperti lambda x: merupakan function yang mendefinisikan x sebagai data yang akan diubah nilainya.

Untuk mendapatkan bulan dan tahun dari penjualan kita, kita perlu memisahkan hari dari tanggal dengan menggunakan .strptime() untuk mengubah tipe data date/time menjadi string dan .strftime() untuk mengubah format dari date tersebut.

Terdapat “%Y-%m-%d” dalam function .strptime yang dapat kita artikan secara berturut-turut Year(%Y)-Month(%m)-Day(%d). Sedangkan dalam function .strftime() hanya terdapat “%Y-%m”. Mengapa? Karena kita mengubah format date tersebut dengan hanya mengambil Year dan Monthnya saja. Dan setelah kita berhasil menambahkan kolom order_month, kita akan menampilkannya lagi dengan function .head()

Wah.. Banyak sekali ya function-functionnya! Tenang, kalian tidak perlu menghafal seluruh function yang ada karena kalian dapat menyesuaikan kebutuhan function sesuai case dengan mencarinya di Google.

Pendapatan (Gross Merchandise Value)

“Ternyata data kita belum memiliki pendapatan tiap harinya.”

Kita dapat menggunakan .apply dan lambda seperti sebelumnya, namun ada cara yang lebih mudah yaitu langsung memroses hasil pendapatan:

Konsep: untuk mencari angka pendapatan, kita mengalikan harga dari barang dengan jumlah barang yang terjual.

Data Agregat (Mengumpulkan Informasi)

“Nah setelah data kita siap, ayo kelompokan dulu datanya!”

Kita akan mengambil kolom / key yang akan kita visualisasikan dalam bentuk grafik dengan menggunakan function .groupby()

Data yang akan kita visualisasikan adalah pendapatan dalam waktu bulanan. Oleh itu kita mengambil kolom ‘order_month’ dan ‘gmv’ dan menerapkan function .groupby untuk mengelompokkan data yang berkaitan dengan kedua kolom tersebut, .sum() untuk menjumlahkan pendapatan ‘gmv’ berdasarkan bulan, dan .reset_index() digunakan untuk mereset baris mulai dari 0 (default). Hasilnya seperti berikut:

Output data agregat

Function-function yang dipanggil sekaligus berurutan, akan memproses function paling kiri terlebih dulu, sehingga dalam case diatas yang diproses adalah .groupby > .sum > .reset_index

Plot Visual Data Pertama

“Setelah cukup banyak yang kita siapkan, ayo visualisasikan!”

Matplotlib adalah library yang berfokus pada visualisasi data seperti membuat plot grafik pada pemrograman Python. Sama seperti pandas, dia juga memiliki banyak function yang dapat digunakan.

Untuk menggunakannya kali ini kita perlu mengimpor class “pyplot” dari library tersebut dan menamakannya “plt”. Kita membutuhkan function .plot() untuk mendefinisikan sumbu x dan y pada grafik. Kemudian kita tampilkan dengan menggunakan function .show(). Hasilnya seperti berikut:

Sumber: https://academy.dqlab.id/main/livecode/164/314/1459

Cara ini bukan satu-satunya yang dapat digunakan, kalian dapat langsung memanggil .plot() setelah .groupby() dan sum() dijalankan seperti berikut:

Kemudian tampilkan menggunakan plt.show()

Konsep: Perpustakaan memiliki buku yang dikelompokkan dalam beberapa kategori mulai dari novel, matematika, dan masih banyak yang lainnya. Dalam library (Matplotlib) juga demikian, kategori ini disebut class (pyplot) dan biasanya cara memanggilnya dengan menggunakan titik setelah nama library. Kita bisa memanggil library Matplotlib saja, namun codenya akan lebih panjang dalam pemanggilan function seperti: matplotlib.pyplot.show()

Kustomisasi Grafik

“Semakin jelas tampilan, dapat mempengaruhi pemahaman kita”

Sebelum mulai kustomisasi, ada baiknya kita pahami dulu anatomi dari sebuah Figure di maplotlib seperti gambar di bawah:

Sumber: https://academy.dqlab.id/main/livecode/164/314/1458

Istilah komponen plot di atas harap dicatat ya teman-teman, karena ini akan berguna untuk menetapkan parameter dalam function nantinya. Next, kita akan mulai belajar kustomisasi grafik.

Mengubah Figure Size

“Hal pertama yang perlu kita ubah adalah ukuran”

Mengapa? Sebab kalo diubahnya belakangan tampilannya akan kacau karena komponen lain yang berubah bentuknya. Caranya adalah menetapkan panjang dan lebar dengan satuan inch didalam parameter figsize pada function .figure() seperti dibawah:

Menambahkan Title and Axis Labels

“Grafik akan sulit dipahami jika tidak ada deskripsi”

Oleh itu, kita perlu menambahkan judul pada grafik serta deskripsi pada sumbu x dan y dengan menggunakan function .title(), x.label(), dan ylabel().

Kustomisasi Title and Axis Labels

“Agar tidak monoton kita dapat membuat kustom tersendiri”

Caranya adalah dengan menambahkan parameter dalam function title, xlabel, dan ylabel. Parameter loc mengartikan alignment text apakah dia rata kiri, kanan, atau tengah, pad mengartikan jarak text terhadap grafik dengan satuan px, fontsize mengartikan ukuran font text, dan color mengartikan warna yang diterapkan ke text.

Kustomisasi Line dan Point

“Mengganti garis dan point grafik agar lebih menarik untuk dilihat”

Kita dapat menambahkan parameter pada function .plot() sesuai dengan kebutuhan kustom line dan point. Misalkan seperti dibawah mengubah warna (color) menjadi hijau, point (marker) menjadi ‘o’ atau bulat, menerapkan style (linestyle) pada line ‘-.’ yaitu garis dan titik. serta mengubah ketebalan garis (linewidth) dengan satuan ukuran px.

Kustomisasi Grid

“Kustomisasi grid berguna untuk membuat point terlihat lebih jelas”

Function .grid() digunakan dengan mengisi parameter sesuai kebutuhan:

HASIL GRAFIK PART 1

“Gimana ya hasil grafiknya sekarang?”

Sampai sini dulu kita akan melihat perbandingannya grafiknya setelah berberapa kustomisasi

Sebelum kustomisasi
Setelah kustomisasi

Menarik bukan? Masih akan ada yang kita kustomisasi lagi loh!

Kustomisasi Axis Ticks

“Mengubah rentang nilai agar lebih mudah dipahami”

Mengubahnya memanggil function ke dua variabel, dan kali ini yang kita gunakan hanya variabel labels saja untuk mengkonversi nilai pendapatan dalam rentang miliar.

Menentukan Batas Minimum dan Maksimum Axis Ticks

“Menentukan batas grafik membuat data lebih mudah dipahami”

Jika dilihat dari grafik setelah kustomisasi, pendapatan seakan-akan naik tiga kali lipat pada bulan Oktober, oleh itu kita perlu menetapkan sumbu y dimulai dari 0 dengan cara berikut:

Menambahkan Informasi Pada Plot

“Dengan tambahan informasi, insight akan dapat lebih mudah didapatkan!”

Dilihat pada grafiknya, pendapatan memiliki kenaikan yang cukup signifikan. Oleh itu kita akan menambahkan informasi terhadap hal tersebut:

Terdapat dua parameter awal berupa angka adalah rentang nilai sumbu y yang akan kita tambahkan informasinya, kemudian diikuti dengan deskripsi, transform untuk koordinat agar berkisar antara 0–1 dan color untuk warna.

HASIL GRAFIK PART 2

“Wow banyak juga yang kita ubah dari awal!”

Grafiknya telah selesai, mari kita lihat perbandingan grafik part 1 dengan grafik saat ini:

Grafik part 1
Grafik part 2

NB: Kita tidak perlu menghapal seluruh parameter yang ada, karena kita dapat mencarinya di Google.

“Grafiknya jadi lebih mudah dipahami! Dan kita bisa membuat grafik seperti itu hanya dengan menuliskan code? KEREN SEKALI !!!

Simpan Grafik ke File

“Grafik selesai! Ayo kita simpan!”

Setelah selesai memplot grafik data, kita akan menyimpannya dengan memanggil function .savefig() dan simpan dengan nama dan ekstensi file yang dibutuhkan.

Selain itu kita juga dapat menetapkan parameter saat menyimpan grafik, seperti quality untuk kualitas gambar dari rentang 1 (paling buruk) hingga 95 (paling bagus)

Mini Project

“Cara paling baik dalam meningkatkan kemampuan, adalah berlatih terus!”

Tak terasa kita sudah belajar banyak ya! Sekarang untuk para pembaca ayo coba praktekan sendiri untuk membuat grafik seperti di bawah ini dengan Beberapa spesifikasi yang harus diperhatikan:

  • Ukuran figure adalah 10x5
  • Sumbu-x adalah tanggal pembelian, dari tanggal 1–31 Desember 2019
  • Sumbu-y adalah jumlah unique customers di tiap tanggal
  • Title dan axis label harus ada, tulisan dan style-nya silakan disesuaikan sendiri

Dataset: https://dqlab-dataset.s3-ap-southeast-amazonaws.com/retail_raw_reduced.csv

Sumber: https://academy.dqlab.id/main/livecode/164/316/1477

Pengalaman Belajar

“Wah banyak ilmu bermanfaat yang bisa kudapatkan!”

Data Science cukup populer di masa kini dan di DQLab terdapat beragam modul dengan bahasa Indonesia yang membuatku mudah dalam memahaminya. Materinya lengkap dan penjelasannya cukup menarik ditambah aku ga perlu install apa-apa untuk mulai belajar, karena langsung disediakan live coding serta output grafik seperti di atas bikin ga perlu repot untuk persiapan dan bisa diakses dimana saja. Bagi kalian yang tertarik untuk belajar Data Science wajib banget buat ikuti kelas di DQLab loh!

Untuk Promo kalian bisa menggunakan referal code : SEDA7713 !

atau bisa klik link : https://dqlab.id/signup?referralCode=SEDA7713

DQLab Module: Data Visualization With Python Matplotlib for Beginner (Part 1)

Sekian materi yang dapat ku bagikan, sekurang-kurangnya mohon maaf bila ada kesalahan dan Terima Kasih Telah Membaca! ⭐⭐⭐⭐⭐

Sorry For Long Post, Here’s your potatoes! 🥔🥔🥔

--

--