Pertemuan 4 : Data Visualization (seaborn)

Data visualization in python using seaborn
Published

April 30, 2024

Kembali ke EDA

Seaborn

Seaborn adalah library visualisasi data yang dibangun di atas matplotlib, dan menggunakan struktur data yang ada pada library pandas. Seaborn banyak digunakan karena penggunaannya yang cukup simple dibandingkan dengan matplotlib.pyplot dengan hasil visualisasi yang lebih beragam.

baca dokumentasi seaborn di sini : Seaborn


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#load dataset yang disediakan oleh modul atau library seaborn
iris = sns.load_dataset('iris')
iris

Berikut salah satu contoh visualisasi dari data iris yang dihasilkan oleh seaborn.


Inputs

Seaborn memiliki 3 cara untuk menginput data sebagai parameter (sumbu y dan/atau sumbu x) dari fungsi-fungsi visualisasinya.

  1. List/Series/Array
  2. Pandas Dataframe dan kolom
  3. Langsung masuk ke dataframenya untuk diolah

List/Series/Array

#Mengambil isinya saja dari kolom sepal length dan sepal width
length = iris['sepal_length'].values
width = iris['sepal_width'].values
print(length, width)
sns.scatterplot(x=length, y=width)

plt.show()

Dataframe dan kolomnya

sns.scatterplot(x=iris['sepal_length'], y=iris['sepal_width'])

plt.show()

atau

sns.scatterplot(x='sepal_length', y='sepal_width', data=iris)

plt.show()

Olah dataframe

sns.boxplot(data=iris)

plt.show()

Plots

Seaborn memiliki banyak sekali jenis plot dengan fungsi yang berbeda-beda. 5 diantaranya yang akan dibahas pada pertemuan ini :

  1. Distribution Plot
  2. Count Plot
  3. Heatmap
  4. Scatter Plot
  5. Box Plot

untuk plot lainnya, silakan telusuri dokumentasi seaborn berikut :

Seaborn Plots

Distribution Plot

sns.displot(iris['petal_length'])

plt.show()
iris['petal_length'].skew()
sns.displot(iris['sepal_width'])

plt.show()
iris['sepal_width'].skew()
sns.histplot(iris['sepal_length'])

plt.show()
sns.histplot(iris['sepal_width'])

plt.show()
# Histogram kumulatif dari sepal width
sns.histplot(iris['sepal_width'], cumulative=True)

plt.show()

Count Plot

#tips dari seaborn
tips=sns.load_dataset('tips')
tips

# Histogram kumulatif dari sepal width
sns.countplot(x='day', data=tips)

plt.show()
# Histogram kumulatif dari sepal width
sns.countplot(x=tips['day'])

plt.show()
# Histogram kumulatif dari sepal width
sns.countplot(x='sex', data=tips, palette='Accent', hue='sex')

plt.show()
# Histogram kumulatif dari sepal width
sns.countplot(x='day', data=tips, palette='Blues', hue='sex')

plt.show()
# Histogram kumulatif dari sepal width
sns.countplot(x='sex', data=tips, palette='Blues', hue='day')

plt.show()
#Jika ingin mengammbar dalam sumbu vertikal ya y=
sns.countplot(y='day', data=tips, palette='Blues', hue='sex')

plt.show()
sns.countplot(x='sex', data=tips, hue='smoker')

plt.show()
sns.countplot(x='smoker', data=tips, hue='sex')

plt.show()

Heatmap

iris.drop('species', axis=1, inplace=True)
iris

korelasi_iris = iris.corr()
korelasi_iris
sns.heatmap(iris.corr())

plt.show()
sns.heatmap(iris.corr(), cmap='YlGnBu')

plt.show()
sns.heatmap(iris.corr(), cmap='YlGnBu')

plt.xticks(rotation=45)

plt.show()
sns.heatmap(iris.corr(), cmap='YlGnBu')

plt.yticks(rotation=45)

plt.show()
sns.heatmap(iris.corr(), cmap='YlGnBu')

plt.xticks(rotation=45)

plt.yticks(rotation=45)

plt.show()
sns.heatmap(korelasi_iris[(korelasi_iris >= 0.5)])

plt.show()
sns.heatmap(korelasi_iris[(korelasi_iris >= 0.5) | (korelasi_iris <= -0.2)])

plt.show()
sns.heatmap(korelasi_iris[(korelasi_iris >= 0.5) | (korelasi_iris <= -0.2)], annot = True)

plt.show()
sns.heatmap(korelasi_iris[(korelasi_iris >= 0.5) | (korelasi_iris <= -0.2)], annot = True, cmap='Blues')

plt.show()
sns.heatmap(korelasi_iris[(korelasi_iris >= 0.5) | (korelasi_iris <= -0.2) ], annot = True, cmap = 'Blues', linewidth = 1, linecolor = 'black')

plt.show()

Scatter Plot

iris = sns.load_dataset('iris')
iris

sns.scatterplot(x='sepal_length', y='sepal_width', data=iris, palette='Accent_r', hue='species')

plt.show()
sns.regplot(x='sepal_length', y='sepal_width', data=iris)

plt.show()
sns.regplot(x='petal_length', y='petal_width', data=iris)

plt.show()
iris['petal_length'].corr(iris['petal_width'])

Box Plot

sns.boxplot(x='petal_length', data=iris)

plt.show()
sns.boxplot(x='sepal_width', data=iris)

plt.show()
?sns.countplot