Analisa Produk Menggunakan Pemograman Python – Hallo teman–teman apa kabar? mudah-mudahan selalu diberikan kesehatan ya. Pada Artikel kali ini kita membahas tutorial cara melakukan analisa data Produk Menggunakan Pemograman PYTHON. Pada Praktikum kali ini kita menggunakan Aplikasi Google Colab untuk menganalisa data Produk tersebut. Sedangkan Untuk Datasetnya kita menggunakan data OnlineRetail.xlxs yang dapat di download pada Link Berikut
Baca Juga: Data Science bagi Pemula | #2 Melakukan Analisa Data Kasus Covid19 Menggunakan Pemrograman Python
Adapun Penjelasan setiap koding dan penjelasan Lengkap tentang hasil/output dari Analisa Data Produk dan Penjualan dapat teman-teman lihat pada Video Youtube kami ini.
ANALISA DATA PRODUCT MENGGUNAKAN PYTHON
Pertama – tama panggillah Library yang dibutuhkan pada tahapan analisa ini seperti Library untuk menampilkan tabel dan Grafik Analisa
%matplotlib inline import matplotlib.pyplot as plt import pandas as pd
Sekarang kita panggil dataset yang kita butuhkan dan simpan dataset tersebut kedalam sebuah variabel
df = pd.read_excel(io='/content/drive/MyDrive/Dataset/UAS/Online Retail.xlsx', sheet_name='Online Retail')
Sekarang kita lihat Jumlah data dan Jumlah Kolom yang ada pada dataset ini
df.shape
Lalu kita lihat 5 data pertama dari dataset ini
df.head()
Quantity Distribution
Sekarang kita lihat distribusi data Qiantity Product tersebut
ax = df['Quantity'].plot.box( showfliers=False, grid=True, figsize=(10, 7) ) ax.set_ylabel('Order Quantity') ax.set_title('Quantity Distribution') plt.suptitle("") plt.show()
Selanjutnya kita lihat Informasi dan Deskripsi dari Kolom Quantity ini
pd.DataFrame(df['Quantity'].describe())
Kita Gunakan Fungsi Filter untuk lihat Jumlah data dari data Product yang Quantity-nya hanya besar dari 0
df.loc[df['Quantity'] > 0].shape
Update data pada Variabel dataset tersebut berdasarkan hasil Filter data yang besar dari 0
df = df.loc[df['Quantity'] > 0]
Time-series Number of Orders
Sekarang kita akan melakukan filter data berdasarkan Waktu Penjualan Product tersebut. Kemudian data ini kita simpan ke dalam Variabel baru (Di Group berdasarkan Bulan (M))
monthly_orders_df = df.set_index('InvoiceDate')['InvoiceNo'].resample('M').nunique()
Kita lihat Informasi sebaran data Product berdasarkan Jumlah Product dan Waktu Penjualan ke dalam Grafik
ax = pd.DataFrame(monthly_orders_df.values).plot( grid=True, figsize=(10,7), legend=False ) ax.set_xlabel('date') ax.set_ylabel('number of orders/invoices') ax.set_title('Total Number of Orders Over Time') plt.xticks( range(len(monthly_orders_df.index)), [x.strftime('%m.%Y') for x in monthly_orders_df.index], rotation=45 ) plt.show()
Selanjutnya kita Filter Data Product berdasarkan tanggal penjualan yang setelah tanggal “2011-12-01” sampai saat ini
invoice_dates = df.loc[ df['InvoiceDate'] >= '2011-12-01', 'InvoiceDate' ]
Kita lihat Tanggal paling Min dan Max dari Variabel data Product yang besar dari tanggal “2011-12-01”
print('Min date: %s\nMax date: %s' % (invoice_dates.min(), invoice_dates.max()))
Sekarang kita cek data Product yang berada pada tanggal “2011-12-01” Kebawah
df.loc[df['InvoiceDate'] < '2011-12-01'].shape
Kita simpan data ini ke dalam sebuah Variabel baru untuk dilakukan Proses analisa Product kita
df = df.loc[df['InvoiceDate'] < '2011-12-01']
Kita lakukan Grouping terhadap data yang telah kita filter ini dan tampilkan data tersebut dan Group berdasarkan Bulan (M)
monthly_orders_df = df.set_index('InvoiceDate')['InvoiceNo'].resample('M').nunique() monthly_orders_df
Sekarang kita lihat sebaran terdapat data yang telah kita Filter ini ke dalam Grafik
ax = pd.DataFrame(monthly_orders_df.values).plot( grid=True, figsize=(10,7), legend=False ) ax.set_xlabel('date') ax.set_ylabel('number of orders') ax.set_title('Total Number of Orders Over Time') ax.set_ylim([0, max(monthly_orders_df.values)+500]) plt.xticks( range(len(monthly_orders_df.index)), [x.strftime('%m.%Y') for x in monthly_orders_df.index], rotation=45 ) plt.show()
Time-series Revenue
Sekarang kita akan menghitung dan Menganalisa Keuntungan Product berdasarkan Waktu. Jadi pertama – tama kita hitung dulu Total Penjualan Product
df['Sales'] = df['Quantity'] * df['UnitPrice']
Selanjutnya Filter dan Hitung data tersebut berdasarkan Tanggal yang di Group berdasarkan Bulan setiap Penjualan Product
monthly_revenue_df = df.set_index('InvoiceDate')['Sales'].resample('M').sum() monthly_revenue_df
Lalu liat Sebaran dari Penjualan Product tersebut ke dalam Grafik
ax = pd.DataFrame(monthly_revenue_df.values).plot( grid=True, figsize=(10,7), legend=False ) ax.set_xlabel('date') ax.set_ylabel('sales') ax.set_title('Total Revenue Over Time') ax.set_ylim([0, max(monthly_revenue_df.values)+100000]) plt.xticks( range(len(monthly_revenue_df.index)), [x.strftime('%m.%Y') for x in monthly_revenue_df.index], rotation=45 ) plt.show()
Time-series Repeat Customers
Sekarang kita akan lihat data Customer yang melakukan Pembelian Berulang tiap Waktunya. Pertama – tama kita Group data tersebut berdasarkan Nomor dan Tanggal Invoice lalu hitung Total Pembelian Product tersebut
invoice_customer_df = df.groupby( by=['InvoiceNo', 'InvoiceDate'] ).agg({ 'Sales': sum, 'CustomerID': max, 'Country': max, }).reset_index()
Kita lihat Informasi Variabel data yang telah kita Group tersebut
invoice_customer_df.head()
Sekarang kita Group lagi data tersebut untuk melihat banyaknya Transaksi Unik tiap Bulannya
monthly_repeat_customers_df = invoice_customer_df.set_index('InvoiceDate').groupby([ pd.Grouper(freq='M'), 'CustomerID' ]).filter(lambda x: len(x) > 1).resample('M').nunique()['CustomerID'] monthly_repeat_customers_df
Kita lihat banyaknya Transaksi Keseluruhan data tersebut berdasarkan Bulan dan Customer
monthly_unique_customers_df = df.set_index('InvoiceDate')['CustomerID'].resample('M').nunique() monthly_unique_customers_df
Sekarang kita lihat persentasi Pencapaian Product yang dibeli berulang oleh Customer berdasarkan Bulan
monthly_repeat_percentage = monthly_repeat_customers_df/monthly_unique_customers_df*100.0 monthly_repeat_percentage
Lalu lita lihat perbandingan antara data keseluruhan Constumer dengan banyaknya Pembelian Oleh Customer yang sama atau berulang
ax = pd.DataFrame(monthly_repeat_customers_df.values).plot( figsize=(10,7) ) pd.DataFrame(monthly_unique_customers_df.values).plot( ax=ax, grid=True ) ax2 = pd.DataFrame(monthly_repeat_percentage.values).plot.bar( ax=ax, grid=True, secondary_y=True, color='green', alpha=0.2 ) ax.set_xlabel('date') ax.set_ylabel('number of customers') ax.set_title('Number of All vs. Repeat Customers Over Time') ax2.set_ylabel('percentage (%)') ax.legend(['Repeat Customers', 'All Customers']) ax2.legend(['Percentage of Repeat'], loc='upper right') ax.set_ylim([0, monthly_unique_customers_df.values.max()+100]) ax2.set_ylim([0, 100]) plt.xticks( range(len(monthly_repeat_customers_df.index)), [x.strftime('%m.%Y') for x in monthly_repeat_customers_df.index], rotation=45 ) plt.show()
Revenue from Repeat Customers
Sekarang menghitung dan menganalisa banyaknya Keuntungan yang didapat dari Pembelian Customer yang berulang. Pertama – tama kita lakukan Grouping terhadap data tersebut
monthly_rev_repeat_customers_df = invoice_customer_df.set_index('InvoiceDate').groupby([ pd.Grouper(freq='M'), 'CustomerID' ]).filter(lambda x: len(x) > 1).resample('M').sum()['Sales']
Lalu kita hitung persentase setiap Product yang terjual oleh Consumen yang sama
monthly_rev_perc_repeat_customers_df = monthly_rev_repeat_customers_df/monthly_revenue_df * 100.0 monthly_rev_repeat_customers_df
Sekarang kita lihat perbandingan antara Keuntungan Seluruh Product dengan Keuntungan yang dihasilkan Oleh Customer berulang
ax = pd.DataFrame(monthly_revenue_df.values).plot(figsize=(12,9)) pd.DataFrame(monthly_rev_repeat_customers_df.values).plot( ax=ax, grid=True, ) ax.set_xlabel('date') ax.set_ylabel('sales') ax.set_title('Total Revenue vs. Revenue from Repeat Customers') ax.legend(['Total Revenue', 'Repeat Customer Revenue']) ax.set_ylim([0, max(monthly_revenue_df.values)+100000]) ax2 = ax.twinx() pd.DataFrame(monthly_rev_perc_repeat_customers_df.values).plot( ax=ax2, kind='bar', color='g', alpha=0.2 ) ax2.set_ylim([0, max(monthly_rev_perc_repeat_customers_df.values)+30]) ax2.set_ylabel('percentage (%)') ax2.legend(['Repeat Revenue Percentage']) ax2.set_xticklabels([ x.strftime('%m.%Y') for x in monthly_rev_perc_repeat_customers_df.index ]) plt.show()
Popular Items Over Time
Sekarang kita lihat Product yang Populer dari Waktu ke waktu. Pertama – tama kita lakukan Filter terhadap Product kita dari waktu ke waktu
date_item_df = pd.DataFrame( df.set_index('InvoiceDate').groupby([ pd.Grouper(freq='M'), 'StockCode' ])['Quantity'].sum() ) date_item_df
Selanjutnya Ranking setiap product yang Populer tersebut berdasarkan Total Penjualan
# Rank items by the last month sales last_month_sorted_df = date_item_df.loc['2011-11-30'].sort_values( by='Quantity', ascending=False ).reset_index() last_month_sorted_df
Lalu kita ambil 5 Product Populer untuk sebagai acuan terhadap Penjualan Product tersebut dari waktu ke waktu
# Regroup for top 5 items date_item_df = pd.DataFrame( df.loc[ df['StockCode'].isin([23084, 84826, 22197, 22086, '85099B']) ].set_index('InvoiceDate').groupby([ pd.Grouper(freq='M'), 'StockCode' ])['Quantity'].sum() ) date_item_df
Kita ubah tampilan Perbandingan tersebut menjadi tabel sehingga lebih mudah untuk melakukan analisa terhadap product tersebut
trending_itmes_df = date_item_df.reset_index().pivot('InvoiceDate','StockCode').fillna(0) trending_itmes_df = trending_itmes_df.reset_index() trending_itmes_df = trending_itmes_df.set_index('InvoiceDate') trending_itmes_df.columns = trending_itmes_df.columns.droplevel(0) trending_itmes_df
Lakukan Perbandingan terhadap ke 5 Product tersebut ke dalam Grafik
ax = pd.DataFrame(trending_itmes_df.values).plot( figsize=(10,7), grid=True, ) ax.set_ylabel('number of purchases') ax.set_xlabel('date') ax.set_title('Item Trends over Time') ax.legend(trending_itmes_df.columns, loc='upper left') plt.xticks( range(len(trending_itmes_df.index)), [x.strftime('%m.%Y') for x in trending_itmes_df.index], rotation=45 ) plt.show()
Sekian materi tentang Analisa Produk Menggunakan Pemograman PYTHON. Untuk Project lengkapnya dapat didownload pada link ((GITHUB)) kami ini.