Python For Data Analyst Using Google Colab
Python menjadi bahasa pemrograman paling populer saat ini menurut TIOBE index tahun 2022. Python memiliki tool box lengkap untuk membantu kita dalam proses perhitungan statistik, matematik, data analisis dan machine learning dengan dukungan ekosistem berbasis komunitas yang luas.
Pada kesempatan kali ini, kita akan mencoba menyelesaikan beberapa case mengenai data analisis dengan menggunakan Google Colab (Klik disini).
1. Dear Data Analyst,
Akhir tahun ini, perusahaan akan memberikan hadiah bagi pelanggan yang memenangkan kompetisi Festival Akhir Tahun. Tim Marketing membutuhkan bantuan untuk menentukan perkiraan hadiah yang akan diberikan pada pemenang kompetisi nantinya. Hadiah tersebut akan diambil dari TOP 5 Produk dari Kategori Mobiles & Tablets selama tahun 2022, dengan jumlah kuantitas penjualan (valid = 1) paling tinggi.
Mohon bantuan, untuk mengirimkan data tersebut sebelum akhir bulan ini ke Tim Marketing. Atas bantuan yang diberikan, kami mengucapkan terima kasih.
RegardsTim Marketing
Langkah awal kita menyeleksi kondisi yaitu is_valid = 1, category = mobiles & tablets, tanggal transaksi selama 2022 ( >= 2022/01/01 & <=2022/12/31). Kemudian mengelompokkan data tersebut dan memberikan fungsi “SUM” untuk menjumlahkan transaksi. Kemudian mengurutkan dan membatasi data sesuai dengan permintaan yaitu TOP 5 dan memberikan nama penjualan_2022.
data1 = pd.DataFrame(df[(df['is_valid']==1) &\
(df['category']=='Mobiles & Tablets') &\
((df['order_date'] >= '2022-01-01') & (df['order_date'] <= '2022-12-31'))]\
.groupby(by=["sku_name"])["qty_ordered"]\
.sum()\
.sort_values(ascending=False)\
.head(5)\
.reset_index(name='penjualan_2022')\
)
data1
Berikut tampilan data yang didapatkan
Dear Tim Marketing
Berikut data TOP 5 produk dalam Category Mobiles & Tablets selama transaksi di tahun 2022.
Best Regards
Data Analyst.
2. Dear Data Analyst,
Menindaklanjuti meeting gabungan Tim Werehouse dan Tim Marketing, kami menemukan bahwa ketersediaan stock produk dengan Kategori Others pada akhir 2022 kemarin masih banyak.
Kami mohon bantuan untuk melakukan pengecekan data penjualan kategori tersebut dengan tahun 2021 secara kuantitas penjualan. Dugaan sementara kami, telah terjadi penurunan kuantitas penjualan pada 2022 dibandingkan 2021. (Mohon juga menampilkan data ke-15 kategori)
Apabila memang terjadi penurunan kuantitas penjualan pada kategori Others, kami mohon bantuan untuk menyediakan data TOP 20 nama produk yang mengalami penurunan paling tinggi pada 2022 jika dibanding dengan 2021. Hal ini kami gunakan sebagai bahan diskusi pada meeting selanjutnya.
Mohon bantuan untuk mengirimkan data tersebut paling lambat 4 hari dari hari ini. Atas bantuan yang diberikan, kami mengucapkan terima kasih.
RegardsTim Werehouse
Pertama, kita menampilkan data tahun 2021 dengan syntax dibawah ini
data2 = pd.DataFrame(df[(df['is_valid']==1) &\
((df['order_date'] >= '2021-01-01') & (df['order_date'] <= '2021-12-31'))]\
.groupby(by=["category"])["qty_ordered"]\
.sum()\
.sort_values(ascending=False)\
.reset_index(name='qty_2021'))
data2
karena permintaan team bahwa semua kategory untuk ditampilkan, maka kita tidak memfilter category=Others. kemudian menampilkan syntax ke 2 untuk menampilkan data tahun 2022 dibawah ini
data3 = pd.DataFrame(df[(df['is_valid']==1) &\
((df['order_date'] >= '2022-01-01') & (df['order_date'] <= '2022-12-31'))]\
.groupby(by=["category"])["qty_ordered"]\
.sum()\
.sort_values(ascending=False)\
.reset_index(name='qty_2022'))
data3
Kemudian kita menggabungkan antara kedua data tersebut
data4 = data2.merge(data3, left_on = 'category', right_on = 'category')
data4
Setelah data yang diminta muncul, kemudian kita melihat bagaimana perkembangan dari data tahun 2021 ke 2022.
data4['qty_growth']=data4['qty_2022']-data4['qty_2021']
data4.sort_values(by=['qty_growth'],ascending=True,inplace=True)
data4
Karena disini category Other mengalami penurunan transaksi, maka untuk mendapatkan data produk dalam kategori Others yang paling banyak mengalami penurunan, kita kembali menampilkan 2 syntax terlebih dahulu untuk mendapatkan category others di tahun 2021 & 2022.
data5 = pd.DataFrame(df[(df['is_valid']==1) &\
(df['category']=='Others') &\
((df['order_date'] >= '2021-01-01') & (df['order_date'] <= '2021-12-31'))]\
.groupby(by=["sku_name"])["qty_ordered"]\
.sum()\
.sort_values(ascending=False)\
.reset_index(name='qty_2021'))
data5
data6 = pd.DataFrame(df[(df['is_valid']==1) &\
(df['category']=='Others') &\
((df['order_date'] >= '2022-01-01') & (df['order_date'] <= '2022-12-31'))]\
.groupby(by=["sku_name"])["qty_ordered"]\
.sum()\
.sort_values(ascending=False)\
.reset_index(name='qty_2022'))
data6
Setelah mendapatkan kedua data tersebut, maka kita akan menampilkan penurunan paling drastis di tahun 2022 dan mengurutkan nya.
data_check = data5.merge(data6, how='outer')
data_check.fillna(0, inplace=True)
data_check['qty_growth']=data_check['qty_2022']-data_check['qty_2021']
data_check.sort_values(by=['qty_growth'],ascending=True,inplace=True)
data_check = data_check.head(20)
data_check
Berikut data yang didapatkan.
Dear Tim Warehouse
Berikut hasil pengecekan data transaksi berdasarkan masing masing category dari tahun 2021–2022 beserta keterangan perubahan transaksi
didapatkan bahwa Category Others mengalami penurunan transaksi. maka berikut TOP 20 produk yang mengalami penurunan tertinggi selama transaksi 2021–2022
Best regards
Data Analyst
3. Dear Data Analyst,
Terkait ulang tahun perusahaan pada 2 bulan mendatang, Tim Digital Marketing akan memberikan informasi promo bagi pelanggan pada akhir bulan ini. Kriteria pelanggan yang akan kami butuhkan adalah mereka yang sudah melakukan check-out namun belum melakukan pembayaran (is_gross = 1) selama tahun 2022. Data yang kami butuhkan adalah ID Customer dan Registered Date.Mohon bantuan, untuk mengirimkan data tersebut sebelum akhir bulan ini ke Tim Digital Marketing. Atas bantuan yang diberikan, kami mengucapkan terima kasih.
RegardsTim Digital Marketing
Pertama kita menampilkan data pelanggan yang belum melakukan pembayaran (is_gross = 1 / is_valid = 0/ is_net=0) dan membatasi transaksi selama 2022.
data8 = df[
(df['is_gross']==1) &\
(df['is_valid']==0) &\
(df['is_net']==0) &\
((df['order_date'] >= '2022-01-01') & (df['order_date'] <= '2022-12-31'))]
data9 = data8[['customer_id','registered_date']]
data9
Setelah data didapatkan maka kita dapat mengunduh file data kemudian mengirimkan kepada tim Digital Marketing.
from google.colab import files
data9.to_csv('audience_list.csv', encoding = 'utf-8-sig',index=False)
files.download('audience_list.csv')
Dear Tim Digital Marketing
Berikut data pelanggan yang sudah melakukan check-out namun belum melakukan pembayaran.
Klik disini
Best Regards
Data Analyst
4. Dear Data Analyst,
Pada bulan October hingga Desember 2022, kami melakukan campaign setiap hari Sabtu dan Minggu. Kami hendak menilai, apakah campaign tersebut cukup berdampak pada kenaikan penjualan (before_discount). Mohon bantuan untuk menampilkan data:Rata-rata harian penjualan weekends (Sabtu dan Minggu) vs rata-rata harian penjualan weekdays (Senin-Jumat) per bulan tersebut. Apakah ada peningkatan penjualan pada masing-masing bulan tersebut.
Rata-rata harian penjualan weekends (Sabtu dan Minggu) vs rata-rata harian penjualan weekdays (Senin-Jumat) keseluruhan 3 bulan tersebut.
Mohon bantuan untuk mengirimkan data tersebut paling lambat minggu depan. Atas bantuan yang diberikan, kami mengucapkan terima kasih.
RegardsTim Campaign
Langkah pertama, kita membuat kolom baru untuk mendapatkan nama hari & bulan dengan syntax dibawah ini
df['day']=df['order_date'].dt.day_name()
df['month']=df['order_date'].dt.month_name()
df['month_num']=df['order_date'].dt.month
df.head(5)
Setelah itu, kita mencari data transaksi weekdays & weekend
data16 = pd.DataFrame(df[(df['is_valid']==1) \
& (df['day'].isin(['Saturday','Sunday']))\
& (df['order_date'] >= '2022-10-01') & (df['order_date'] <= '2022-12-31')]\
.groupby(by=["month_num","month"])["before_discount"].mean()\
.round()\
.sort_values(ascending=False)\
.reset_index(name='avg_sales_weekend'))
data16
data17 = pd.DataFrame(df[(df['is_valid']==1) \
& (df['day'].isin(['Monday','Tuesday','Wednesday','Thursday','Friday']))\
& (df['order_date'] >= '2022-10-01') & (df['order_date'] <= '2022-12-31')]\
.groupby(by=["month_num","month"])["before_discount"].mean()\
.sort_values(ascending=False)\
.round()\
.reset_index(name='avg_sales_weekdays'))
data17
Setelah mendapatkan kedua data tersebut, maka kita gabungkan data tersebut
data18 = data16.merge(data17, left_on = 'month', right_on = 'month')
data18.sort_values(by='month_num_x',ascending=True, inplace=True)
data18 = data18[["month","avg_sales_weekend","avg_sales_weekdays"]]
df_groupby_weekend = data18
df_groupby_weekend
Kemudian kita akan membandingkan kedua data tersebut sehingga dapat dijadikan kesimpulan apakah transaksi mengalami peningkatan / penurunan
df_groupby_weekend['diff_value'] = df_groupby_weekend['avg_sales_weekend'] - df_groupby_weekend['avg_sales_weekdays']
df_groupby_weekend['diff_percent'] = round(df_groupby_weekend['diff_value']/df_groupby_weekend['avg_sales_weekend']*100)
df_groupby_weekend
Setelah mendapatkan data tersebut, kemudian kita mencari jumlah rata-rata transaksi selama 3 bulan tersebut dengan menyeleksi transaksi weekend & weekdays
weekend_2022 = df[
(df['is_valid']==1) &\
(df['day'].isin(['Saturday','Sunday'])) &\
((df['order_date'] >= '2022-10-01') & (df['order_date'] <= '2022-12-31'))]
weekday_2022 = df[
(df['is_valid']==1) &\
(df['day'].isin(['Monday','Tuesday','Wednesday','Thursday','Friday'])) &\
((df['order_date'] >= '2022-10-01') & (df['order_date'] <= '2022-12-31'))]
Kemudian kita akan menampilkan jumlah rata rata transaksi selama 3 bulan dan membandingkan transaksi antara weekend & weekdays
data21 = {
'Periode':'Total 3 months',\
'Avg Weekend Sales': round(weekend_2022['before_discount'].mean(),2), \
'Avg Weekdays Sales': round(weekday_2022['before_discount'].mean(),2),\
'Diff (Value)': round(weekend_2022['before_discount'].mean() - weekday_2022['before_discount'].mean(),2),\
'Diff (%)': pd.Series(round(((weekend_2022['before_discount'].mean() - weekday_2022['before_discount'].mean())/weekend_2022['before_discount'].mean())*100,2), dtype=str)+'%'
}
pd.DataFrame(data=data21, index=[0])
Berikut data yang didapatkan
Dear Tim Campaign
Berikut perbandingan transaksi antara weekend & weekdays
dan berikut perbandingan total rata rata transaksi 3 bulan tersebut antara weekend & weekdays
Best Regards
Data Analyst
Demikian pembahasan Case Data Analyst dengan Python menggunakan Google Colab. Semoga bermanfaat