Building Simple Chart in Python Languange
Halloo kembali lagi bersama saya!! kali ini saya akan menjelaskan bagaimana membuat Chart yang simple tapi juga menarik menggunakan Python Languange. penasaran kan yukk langsung saja…
Dataset yang digunakan
untuk dataset yang digunakan adalah dari US Superstore Data
untuk detail data yang saya gunakan adalah sebagai berikut :
Order ID
— ID created when a product order is placed.Order Date
— Date on which a customer places his/her order.Customer ID
— ID assigned to each customer who places an order.Segment
— Section from where the order is placed.Category
— Category to which each product belongs to.Sub-Category
— Sub-Category of each CategorySales
— Selling Price of each product.Quantity
— number of quantity available for a particular product.Profit
— Profit gained on each product.
Library yang di gunakan
- Plotly
plotly adalah packages yang memudahkan menerjemahkan grafik ‘ggplot2’ ke versi interaktif berbasis web dan/atau membuat visualisasi berbasis web langsung dari Python. Setelah diunggah ke akun ‘plotly’, grafik ‘plotly (dan data dibelakangnya) dapat diliat dan dimodifikasi di browser web
2. Pandas
Pandas (Python for Data Analysis) adalah library Python yang fokus untuk proses analisis data seperti manipulasi data, persiapan data, dan pembersihan data. Pandas juga dapat membaca file dari berbagai format seperti .txt, .csv, .tsv, dan lainnya. Anggap saja Pandas adalah spreadsheet namun tidak memiliki GUI dan punya fitur seperti SQL.
3. Numpy
Numpy memiliki kegunaan untuk operasi vektor dan matriks. Fiturnya hampir sama dengan MATLAB dalam mengelola array dan array multidimensi. Numpy merupakan salah satu library yang digunakan oleh library lain seperti Scikit-Learn untuk keperluan analisis data.
4. Scipy
Kegunaanya adalah untuk menangani operasi aljabar dan matriks serta operasi matematika lainya. Disini kamu dapat menangani sejumlah operasi matematika yang lebih kompleks daripada menggunakan library math bawaan Python.
Import Library dan Dataset
import plotly
import pandas as pd
import plotly.graph_objs as go #karena saya disini menggunakan Jupyter Notebook
from plotly.offline import download_plotlyjs, init_notebook_mode, plot,iplot
init_notebook_mode(connected=True)
notes : saya menamakan pandas as pd
dan plotly.graph_objs as go
Membaca Dataset
disini saya hanya mengambil berupa
head()
agar tidak terlalu panjang dandf
sebagai nama tabel
df = pd.read_csv('Assessment R & Python_ Dataset_superstore_simple.csv',parse_dates=['order_date'])
df.head()
Berikut hasilnya :
Membuat Scatter Plot
untuk memanggil Scatter Plot menggunakan go.scatter
lalu masukan variabel X
dan Y
dari tabel df
, setelah itu masukan parameter mode
menggunakan tipe ‘markers’ dan saya beri nama tabel ‘Sales VS Profit’
tabel = go.Scatter(
x=df.sales,
y=df.profit,
mode='markers',
name='Sales VS Profit'
)
fig = go.Figure(data=tabel)
iplot(fig)
jangan lupa untuk membuat sebuah objek
Figure
yang kita beri parameterdata
berisikantabel
, dan untuk menampilkan pada jupyter menggunakaniplot
Berikut hasilnya :
- Scatter Plot yang memiliki warna
pertama kita buat dataframe terlebih dahulu, untuk itu kita harus import Library Numpy, dan membuat kolom baru ‘warna’ berdasarkan ‘profit’ pada fungsi
where()
, warna hijau dengan profit ≥0 dan warna merah <0
import numpy as np
df['marker_color'] = np.where(
df.profit >=0,
'green',
'red',
)
df.head()
hasilnya :
selanjutya kita menambahkan parameter ‘marker’ dengan warna yang sudah tersedia pada kolom
marker_color
tabel = go.Scatter(
x=df.sales,
y=df.profit,
mode='markers',
marker={
'color':df.marker_color
},
name='Sales VS Profit'
)
fig = go.Figure(data=tabel)
iplot(fig)
hasilnya :
Membuat Pie Chart
untuk membuat Pie Chart terdapat parameter ‘labels’ dan ‘values’
data = go.Pie(labels=df.category,values=df.sales)
fig = go.Figure(data=data)
iplot(fig)
hasilnya :
Membuat Histogram
untuk membuat Histogram menggunakan perintah
go.Histogram
dengan menggunakan satu parameter saja, selain itu ukuran bar dapat diatur menggunakanxbins
histogram = go.Histogram(x=df.sales,
xbins={
'size':500
})
fig = go.Figure(data=histogram)
iplot(fig)
hasilnya :
Membuat Bar Chart
pertama kita buat dataframe terlebih dahulu, dalam membuat Bar Chart digunakan parameter groupby dan aggregate pada tabel
df_segment = df.groupby(['segment']).agg({
'sales':'sum'
})
df_segment = df_segment.reset_index()
df_segment.head()
hasilnya :
selanjutnya dalam membuat Bar Chart menggunakan perintah
go.Bar()
dengan variabel X dan Y
bar_chart = go.Bar(
x=df_segment.segment,
y=df_segment.sales)
fig = go.Figure(data=bar_chart)
iplot(fig)
hasilnya :
- Group Bar Chart
pertama kita buat dataframe terlebih dahulu, untuk Group Bar Chart dalam parameter groupby memiliki dua variabel yang dibandingkan
df_segment_category = df.groupby(['segment','category']).agg({
'sales':'sum'
})
df_segment_category=df_segment_category.reset_index()
df_segment_category.head()
hasilnya :
untuk itu kita bagi jumlah Bar berdasarkan masing-masing Segment, antara lain Corporate, Consumer, dan Home Office
hasilnya :
- Stacked Bar Chart
selanjutnya untuk Stacked Bar Chart yakni ditambahkan ‘layout’
{‘barmode’:’stack’}
data = [bar1,bar2,bar3]
layout = {'barmode':'stack'}
fig = go.Figure(data=data,layout=layout)
iplot(fig)
hasilnya :
Membuat Line Chart
pertama kita buat dataframe terlebih dahulu dan buat kolom baru bernama ‘month’, karena order_date barupa string maka kita ubah dulu berdasarkan datetime. karena Line Chart membutuhkan variabel waktu
df['month'] = df.order_date.dt.strftime('%Y-%m-01') atau ('%Y-%m')
df.head()
selanjutnya :
#hanya menampilkan kolom month dan sales
df_monthly_sales = df.groupby(['month']).agg({'sales':'sum'})
df_monthly_sales = df_monthly_sales.reset_index()
df_monthly_sales.head()
untuk memunculkan Line Chart kita menggunakan perintah
go.Scatter
dan gunakan parametermode=’lines+markers’)
data_line = go.Scatter(
x=df_monthly_sales.month,
y=df_monthly_sales.sales,
mode='lines+markers')
fig = go.Figure(data=data_line)
iplot(fig)
hasilnya :
- Membuat Line Chart berdasarkan Category
kita tambahkan kolom Category di dalam dataframe sebelumnya
df_monthly_sales_category = df.groupby(['month','category']).agg({
'sales':'sum'
})
df_monthly_sales_category = df_monthly_sales_category.reset_index()
df_monthly_sales_category.head()
selanjutnya gunakan pivot untuk memindahkan category menjadi kolom yang terdiri dari variabel index, columns, dan values. agar dataset terlihat simple dan rapi
df_monthly_sales_category = df_monthly_sales_category.pivot(
index='month',
columns='category',
values='sales'
)
df_monthly_sales_category.head()
setelah itu untuk munculkan Line Chart menggunakan perintah
go.Scatter
berdasarkan 3 jenis Category antara lain Furniture, Office Supplies, dan Technology. dengan parametermode=’lines+markers’
danmarker={‘symbol’:’diamond’}
untuk marker bisa di variasikan sesuai selera serta untuk pembeda antara line1 dengan lainnya
hasilnya :
Membuat Advanced Scatter Plot
terlebih dahulu membuat Grafik Scatter Plot menggunakan go.scatter
lalu masukan variabel X
dan Y
dari tabel df
, setelah itu masukan parameter mode
menggunakan tipe ‘markers’
data1 = go.Scatter(
x=df.sales,
y=df.profit,
mode='markers'
)
fig = go.Figure(data=data1)
iplot(fig)
hasilnya :
- Membuat Trend Line
untuk membuat Trend Line diperlukan Library Scipy dan menggunakan kode pada Array
from scipy import statsslope,intercept,r_value,p_value,std_err=stats.linregress(x=df.sales,y=df.profit)
lines = slope*df.sales.values+intercept
lines
#output
array([ 33.71785945, 111.39726896, -7.1630826 , ..., 33.1585439 ,
-4.68715266, 30.61055085])
disini saya menggunakan ‘dot’ untuk menampilkan Scatter Plot dan ‘line’ untuk menampilkan garis/line dengan variabel
Y=Lines
dot = go.Scatter(
x=df.sales,
y=df.profit,
mode='markers'
)
line = go.Scatter(
x=df.sales,
y=lines,
name='Linear Trend Line'
)
fe=[dot,line]
fig = go.Figure(data=fe)
iplot(fig)
hasilnya :
di dalam query terdapat 3 data yaitu data1, data2, dan data3 karena disini saya akan membagi data berdasarkan Category Furniture, Office Supplies, dan Technology. dengan variabel X =‘sales’ dan Y = ‘profit’. selain itu ukuran marker dapat diatur menggunakan fungsi
'size'
. selain itu pada Lines saya menggunakan tipe garis putus-putus(dash)
sedangkan untuk layout saya memberi judul Sales VS Profit pada fungsi
‘title’
dan‘text’
dengan posisi 0.5 (ditengah), selain itu untuk menampilkan judul variabel X dan Y menggunakan‘xaxis’
dan‘yaxis’
dengan range berdasarkan masing-masing value variabel. selanjutnya untuk Legend menggunakanorientation
Horizontal/h, denganX=0.5, Y=1,'xanchor’:’center'
agar posisi berada di tengah atas.
hasilnya :
Akhirnya selesai juga teman!! nah menarik bukan. terus simak yaa jangan bosan-bosan belajar :) semoga bermanfaat yaa…