Visualisasi Data dengan Python
Pada era big data dan artificial inteligence, data science, dan machine learning telah menjadi hal yang penting dalam bidang sains dan teknologi. Aspek yang diperlukan dalam hal tersebut adalah kemampuan untuk mendeskripsikan, menyimpulkan, dan memvisualkan data. Statistika library dalam Python lebih luas dan populer untuk digunakan sebagai alat mengolah data.
Kali ini kita akan memvisualisasikan data dengan menggunakan Python. Sebelum itu perlu diketahui fungsi-fungsi pada library yang digunakan
NumPy : sebagai komputasi numerik, mengoptimalkan kerja dari single dan multi dimensi pada himpunan. Digunakan pula dalam statistika analisis
SciPy : Menawarkan fungsionalitas tambahan dibandingkan dengan NumPy, termasuk scipy.stats untuk analisis statistik.
Pandas : Unggul dalam menangani data berlabel satu dimensi (1D) dengan objek Seri dan data dua dimensi (2D) dengan objek DataFrame.
Matplotlib : library yang diperuntukkan sebagai visualisasi. Akan bekerja jika digabungkan dengan NumPy, SciPy, Pandas.
Mari kita mulai,
Buka lebar kerja Python, saya disini memakai Python versi 3.7.2 disarankan untuk tidak menggunakan versi terbaru.
Import library yang sudah disebutkan diawal tadi kedalam lembar kerja, dengan menggunakan perintah:
>>> import numpy as np
>>> import scipy.stats
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> plt.style.use('ggplot')
Dibeberapa kasus, import Matplotlib sering terjadi error, jika tidak bisa install terlebih dahulu Matplotlib.
jika ingin install Matplotlib untuk Python 3 lewat APT package manager, kamu membutuhkan package python3-matplotlib
:
sudo apt-get install python3-matplotlib
jika ingin menggunakan install melalui Pip untuk Python 3, kamu perlu menggunakanpip3
:
sudo pip3 install matplotlib
Jika masih belum bisa, bisa install melalui salah satu perintah ini,
python -mpip install -U pippython -mpip install -U matplotlib
Kalau masih belum bisa juga, buka file directory C, dan ketikkan
pip install matplotlib
Box Plot
Buat terlebih dahulu data pada lembar kerja Python
Akomodasi = (20, 116, 61, 58, 64,9 )
Kamar = (1503, 10732, 3653, 5206, 2187, 4781, 523)
Bed = 92579, 16418, 6015, 7832, 2885, 6800, 786)
Maka akan terlihat seperti berikut
Sekarang setelah memiliki data untuk dikerjakan, Anda dapat menerapkan .boxplot ()
untuk mendapatkan boxplot:
fig, ax = plt.subplots()
ax.boxplot((Akomodasi, Kamar, Bed), vert=False, showmeans=True, meanline=True,
labels=('Akomodasi', 'Kamar', 'Bed'), patch_artist=True,
medianprops={'linewidth': 2, 'color': 'blue'},
meanprops={'linewidth': 2, 'color': 'red'})
plt.show()
vert
mengatur orientasi plot menjadi horizontal saat False. Orientasi default adalah vertikal.showmeans
menunjukkan mean ketikaTrue
.meanline
merepresentasikan mean pada baris ketikaTrue
.labels
: label data Anda.patch_artist
menentukan cara menggambar grafik.medianprops
menunjukkan sifat-sifat garis yang mewakili median.meanprops
menunjukkan sifat-sifat garis yang mewakili mean.
Maka Box Plot yang terbentuk seperti gambar dibawah ini
- Mean adalah yang garis berwarna merah.
- Median adalah garis yang berwarna Biru Tua.
- Quartil 1 adalah tepi kiri dari persegi panjang biru.
- Quartil 3 adalah tepi kanan persegi panjang biru.
- Interquartile adalah panjang dari persegi panjang biru.
- Range adalah yang memuat semua dari kiri ke kanan.
- Outliers titik yang berada paling kanan, di luar range.
Histogram
Histogram sangat berguna ketika memiliki angka unik atau angka yang besar dalam dataset. Histogram membagi nilai dari dataset yang diurutkan ke dalam interval.
Copy koding berikut kedalam Python
>>> hist, bin_edges = np.histogram(Kamar, bins=10)
>>> hist
>>> bin_edges
hist
berisi frekuensi atau jumlah item.bin_edges
berisi tepi atau batasan pada bin.
Selanjutnya menghitung data untuk dijadikan sebagai histogram
fig, ax = plt.subplots()
ax.hist(Kamar, bin_edges, cumulative=False)
ax.set_xlabel('Kamar')
ax.set_ylabel('Frequency')
plt.show()
Dapat dilihat terdapat jarak antar histogram, hal itu dikarenakan tidak terdapat data pada rang 2000–4000 dan data 6000–9000.
Pie Charts
Pie chart mewakili data dengan jumlah kecil dan memberikan frekuensi yang relatif. Pie chart tidak bisa digunakan jika data bejenis nominal.
Akomodasi, Kamar, Bed= 359, 28585, 43315
>>> fig, ax = plt.subplots()
>>> ax.pie((Akomodasi, Kamar, Bed), labels=('Akomodasi', 'Kamar', 'Bed'), autopct='%1.1f%%')
>>> plt.show()
Didapatkan pie chart seperti berikut,
Variabel Bed yang memiliki persentase paling besar sedangkan yang terkecil variabel Akomodasi dengan nilai persentase 0.5%. Persentase menunjukkan ukuran relatif dari masing-masing nilai dibandingkan dengan jumlah mereka.
X-Y Plots atau Scatter Plot
mewakili pasangan data dari dua set data. Sumbu x horisontal menunjukkan nilai dari himpunan x, sedangkan sumbu y vertikal menunjukkan nilai yang sesuai dari himpunan y. Anda dapat menyertakan garis regresi dan koefisien korelasi.
Copy kodingan berikut kedalam Python:
>>> x = np.arange(21)
>>> y = 3+ 2 * x + 6* np.random.randn(18)
>>> slope, intercept, r, *__ = scipy.stats.linregress(x, y)
>>> line = f'Regression line: y={intercept:.2f}+{slope:.2f}x, r={r:.2f}'
linregress
mengembalikan beberapa nilai. Anda membutuhkan slope
danintercept
dari garis regresi, serta koefisien korelasir
. Kemudian Anda bisa memasukkan.plot()
untuk mendapatkan plot x-y :
fig, ax = plt.subplots()
ax.plot(x, y, linewidth=0, marker='s', label='Data points')
ax.plot(x, intercept + slope * x, label=line)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend(facecolor='yellow')
plt.show()
Hasilnya akan berbentuk seperti ini,
Kotak merah merupakan (x-y) dan garis biru merupakan garis regresi. Dari plot dapat dilihat bahwa titik-titik mengikuti dan mendekati garis linear sehingga dapat disimpulkan bahwa data berasumsi berdistribusi normal. Namun dalam statistika diperlukan pengujian lebih lanjut untuk mendapatkan data berdistribusi normal atau tidak. Uji yang biasanya digunakan adalah uji Kolmogorov-Smirnov dan uji Shapiro-Wilk untuk memastikan model.
Sekian hasil paparan materi yang dapat disampaikan
Terima Kasih,
Tamara Shafira
Referensi:
[1] Mirko Stojiljkovic, Python Statistics Fundamentals: How to Describe Your Data, https://realpython.com/python-statistics/