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 Category
- Sales — 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 plotlyimport 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
df = pd.read_csv('Assessment R & Python_ Dataset_superstore_simple.csv',parse_dates=['order_date'])disini saya hanya mengambil berupa head() agar tidak terlalu panjang dan df sebagai nama tabel
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 parameter data berisikan tabel, dan untuk menampilkan pada jupyter menggunakan iplot
Berikut hasilnya :
- Scatter Plot yang memiliki warna
import numpy as nppertama 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
df['marker_color'] = np.where(
df.profit >=0,
'green',
'red',
)
df.head()
hasilnya :
tabel = go.Scatter(selanjutya kita menambahkan parameter ‘marker’ dengan warna yang sudah tersedia pada kolom marker_color
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
data = go.Pie(labels=df.category,values=df.sales)untuk membuat Pie Chart terdapat parameter ‘labels’ dan ‘values’
fig = go.Figure(data=data)
iplot(fig)
hasilnya :
Membuat Histogram
histogram = go.Histogram(x=df.sales,untuk membuat Histogram menggunakan perintahgo.Histogram dengan menggunakan satu parameter saja, selain itu ukuran bar dapat diatur menggunakan xbins
xbins={
'size':500
})
fig = go.Figure(data=histogram)
iplot(fig)
hasilnya :
Membuat Bar Chart
df_segment = df.groupby(['segment']).agg({pertama kita buat dataframe terlebih dahulu, dalam membuat Bar Chart digunakan parameter groupby dan aggregate pada tabel
'sales':'sum'
})
df_segment = df_segment.reset_index()
df_segment.head()
hasilnya :
bar_chart = go.Bar(selanjutnya dalam membuat Bar Chart menggunakan perintah go.Bar()dengan variabel X dan Y
x=df_segment.segment,
y=df_segment.sales)
fig = go.Figure(data=bar_chart)
iplot(fig)
hasilnya :
- Group Bar Chart
df_segment_category = df.groupby(['segment','category']).agg({pertama kita buat dataframe terlebih dahulu, untuk Group Bar Chart dalam parameter groupby memiliki dua variabel yang dibandingkan
'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
data = [bar1,bar2,bar3]selanjutnya untuk Stacked Bar Chart yakni ditambahkan ‘layout’ {‘barmode’:’stack’}
layout = {'barmode':'stack'}
fig = go.Figure(data=data,layout=layout)
iplot(fig)
hasilnya :
Membuat Line Chart
df['month'] = df.order_date.dt.strftime('%Y-%m-01') atau ('%Y-%m')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.head()
selanjutnya :
#hanya menampilkan kolom month dan salesdf_monthly_sales = df.groupby(['month']).agg({'sales':'sum'})
df_monthly_sales = df_monthly_sales.reset_index()
df_monthly_sales.head()
data_line = go.Scatter(untuk memunculkan Line Chart kita menggunakan perintah go.Scatter dan gunakan parameter mode=’lines+markers’)
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
df_monthly_sales_category = df.groupby(['month','category']).agg({kita tambahkan kolom Category di dalam dataframe sebelumnya
'sales':'sum'
})
df_monthly_sales_category = df_monthly_sales_category.reset_index()
df_monthly_sales_category.head()
df_monthly_sales_category = df_monthly_sales_category.pivot(selanjutnya gunakan pivot untuk memindahkan category menjadi kolom yang terdiri dari variabel index, columns, dan values. agar dataset terlihat simple dan rapi
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 parameter mode=’lines+markers’ dan marker={‘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
from scipy import statsslope,intercept,r_value,p_value,std_err=stats.linregress(x=df.sales,y=df.profit)untuk membuat Trend Line diperlukan Library Scipy dan menggunakan kode pada Array
lines = slope*df.sales.values+intercept
lines
#output
array([ 33.71785945, 111.39726896, -7.1630826 , ..., 33.1585439 ,
-4.68715266, 30.61055085])
dot = go.Scatter(disini saya menggunakan ‘dot’ untuk menampilkan Scatter Plot dan ‘line’ untuk menampilkan garis/line dengan variabel Y=Lines
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 menggunakan orientation Horizontal/h, dengan X=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…