MATPLOTLIB
DATA VISUALIZATION – DATA SCIENCE [12]
• Matplotlib adalah sebuah library di Python yang sering digunakan
untuk visualisasi data. Matplotlib dilengkapi dengan scripting
interface yang direpresentasikan dengan pyplot untuk memudahkan
kita membuat grafik.
• Arsitektur matplotlib terdiri dari tiga layer utama, yaitu backend layer,
artist layer, dan scripting layer.
• Matplotlib dapat digunakan di banyak tools, salah satunya Jupyter
Notebook, yang sedang kita gunakan saat ini. Seperti library yang
lainnya, matplotlib harus di-install terlebih dahulu.
Figure dan Axes di Matplotlib
• Figure adalah objek Matplotlib
yang mengandung semua
elemen dari sebuah grafik,
sedangkan Axes merupakan
tempat dimana method untuk
plotting didefinisikan,
termasuk method untuk
membuat dan memanipulasi
garis axis, grid, label tick,
ataupun background.
Jika kita asumsikan seperti melukis,
Satu plot (gambar) adalah satu Axes, jadi misalnya kita akan
membuat sebuah Figure terdiri dari beberapa plot, katakanlah 4
plot, berarti Figure tersebut harus memiliki 4 Axes.
Membuat plot sederhana
Untuk membuat sebuat plot, kita harus mengimpor matplotlib.pyplot terlebih dahulu.
plt disini adalah sebagai singkatan agar saat dipanggil kita tidak perlu repot menuliskan
matplotlib.pyplot tetapi cukup dengan plt. Sama halnya kita menyingkat Pandas dengan pd
dan Numpy dengan np.
Ada dua cara yang dapat kita gunakan yaitu cara Explicit dan Implicit.
Explicit
Disini kita akan membuat grafik sederhana dari dua buah kumpulan bilangan yang
didefinisikan di dalam dua buah list, yaitu x dan y
Setelah itu, coba Anda cek di folder yang sama dengan yang Anda gunakan untuk
menyimpan file notebook ini, file contoh_visualisasi.png otomatis tersimpan disana.
BAR PLOT
DATA VISUALIZATION – DATA SCIENCE [12-1]
Dataset
Dataset yang digunakan adalah dataset Automobile yang berasal dari UCI Machine Learning Repository.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
df = pd.read_csv('datasets/automobile.data', names=column_names)
df.head()
Seperti yang kita lihat dari contoh dataframe df, ada beberapa cell yang
mengandung missing values berupa simbol tanda tanya ?.
Oleh karena itu, kita harus menangani dulu missing values ini.
df = df.replace('?', np.nan)
# Menghapus baris yang mengandung mising values di kolom price
df.dropna(subset=['price'], axis=0, inplace=True)
avg_bore = df['bore'].astype('float').mean(axis=0)
df['bore'].replace(np.nan, avg_bore, inplace=True)
avg_horse = df['horsepower'].astype('float').mean(axis=0)
df['horsepower'].replace(np.nan, avg_horse, inplace=True)
avg_peak = df['peak-rpm'].astype('float').mean(axis=0)
df['peak-rpm'].replace(np.nan, avg_norm, inplace=True)
df.head()
Selanjutnya kita ganti tipe datanya.
group_make = df.groupby('make').size()
df_tot = pd.DataFrame(group_make).reset_index()
df_tot = df_tot.rename(columns={0: 'total'})
df_tot
Setelah dataframe siap, kita dapat memvisualisasikannya dengan bar plot seperti di bawah ini
plt.figure(figsize=(16,8))
plt.bar(df_tot['make'], df_tot['total'])
plt.ylabel('Total\n', size=14)
plt.xticks(size=14, rotation=90)
plt.yticks(size=14)
plt.show()
fig, ax = plt.subplots(figsize=(16,8))
plot_data = ax.bar(df_tot['make'], df_tot['total'], color='#c60cef',
width=0.85)
Ada beberapa parameter lagi dari annotate() yang tidak digunakan di praktek ini, namun mungkin akan
berguna untuk penggunaan lainnya.
Grouped bar chart
• Kita juga dapat membuat grouped bar chart. Misalnya kita ingin
membuat bar chart dimana kita ingin menampilkan jumlah data
untuk masing-masing body-style yang dikelompokkan juga
berdasarkan fueltype.
• Pertama kita harus membuat dataframe baru untuk menampung data
yang dibutuhkan. Disini, kita mengelompokkan data berdasarkan
body-style dan fuel-type dan mengkalkulasi jumlahnya menggunakan
size(). Setelah itu, kita buat dataframe dari pengelompokkan tersebut.
body_style = df.groupby(['body-style', 'fuel-type']).size()
df_body = pd.DataFrame(body_style).reset_index()
df_body = df_body.rename(columns={0: 'total'})
df_body
Kita perlu membuat list yang berisi nilai unik dari kolom body-
style yang akan digunakan sebagai xticklabels nantinya.
Sekarang kita filter dataframe df_body untuk data dengan fuel-type =='gas'
dan menyimpannya sebagai dataframe gas.
gas = df_body[df_body['fuel-type']=='gas'].sort_values(
by='body-style').reset_index(drop=True)
gas
diesel = df_body[df_body['fuel-type']=='diesel']
diesel
Jika kita lihat dari dataframe diesel, hanya ada 4 kategori body-style, sementara yang
kita tahu ada 5 kategori. Jika dibiarkan, ini akan menjadi masalah perbedaan dimensi.
Oleh karena itu, kita harus menambahkan data baru pada dataframe diesel yang
menyatakan bahwa jenis convertible dengan fuel type diesel berjumlah 0.
x = np.arange(len(body))
width = 0.4
labels = body
peaklabel(d1)
peaklabel(d2)
plt.show()
Selesai
MATPLOTLIB
BAR PLOT