Eksplorasi Data Penjualan Buku di Amazon

Kategori Artikel : Life Insight

15 August 2021

Eksplorasi Data Penjualan Buku di Amazon

Published in HIMIT PENS Medium

Written by : Mario Prasetya Mulya

Amazon / Amazon.com, Inc. adalah perusahaan Amerika yang berfokus pada layanan e-commecrce, digital streaming, dan teknologi, seperti cloud computing dan AI. Amazon didirikan oleh Jeff Bezos pada tahun 1994 sebagai toko buku online dan sekarang telah berkembang menjadi layanan e-commerce raksasa. Tidak hanya bergerak dalam bidang e-commerce, Amazon juga memiliki layanan hiburan mereka sendiri, seperti Prime Video dan Amazon Music.

Saat ini sudah terdapat 33 juta judul buku yang dijual di Amazon. Buku-buku yang dijual memiliki beragam bentuk, mulai dari buku fisik maupun e-book. Pada tahun 2018 Amazon menguasai pasar e-book di Amerika Serikat dengan total penjualan mencapai 88% dari total pasar e-book di seluruh Amerika Serikat. Selain itu, Amazon juga menguasai pasar buku fisik dengan total penjualan 42% dari keseluruhan pasar. (Sumber)


Source: pcmag.com

Pada eksplorasi data kali ini, saya akan mencoba menganalisa data buku bestselling pada Amazon. Dataset didapat dari situs Kaggle. Eksplorasi ini ditujukan untuk memahami dataset lebih dalam.

Sekilas Mengenai Data

Dataset ini adalah data 50 buku bestselling selama tahun 2009 hingga 2019. Data diambil dari Goodreads dan ada 550 buku yang tercantum pada dataset ini. Data juga telah dikelompokkan menjadi dua jenis, yaitu Fiction / fiksi dan Non Fiction / nonfiksi. Data dapat diunduh pada tautan berikut ini.

Import Library
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from IPython.display import display
%matplotlib inline
Inspeksi Data

Dataset ini diunggah oleh japandata509 pada Kaggle. Dataset ini hanya menjelaskan mengenai nilai buku dari segi pembeli serta beberapa data tambahan lainnya. Disini data mengenai penjualan tidak ditampilkan sehingga pertanyaan seperti buku yang paling laris, buku yang pernah trending, dan sejenisnya akan terlalu sulit untuk dijawab.


baris, kolom


Sekilat tampilan data

Di dataset ini terdapat 550 data dengan 7 variabel / kolom. Variabel-variabel tersebut antara lain:

  • Name = nama / judul buku
  • Author = penulis buku
  • User Rating = rata-rata penilaian pembeli
  • Reviews = jumlah pembeli yang menambahkan penilaian
  • Price = harga buku
  • Year = tahun buku masuk ke dalam 50 buku bestselling
  • Genre = jenis buku


Sebanyak tiga variabel memiliki tipe object / string dan empat variabel lain bertipe numerik. Dataset ini tidak memiliki null value sehingga data dapat dengan langsung digunakan.

Exploratory Data Analysis

Karena jumlah variabel yang sedikit, EDA kali ini dapat dilakukan dengan menganalisa tiap variabel lalu mengaitkannya dengan variabel lain. Namun sebelum itu, di sini saya ingin menambahkan variabel lain dengan nama Weighted Rating.

Weighted Rating

Nilai suatu buku pada dataset ini dinyatakan dalam bentuk angka yang berada pada variabel User Rating. Variabel ini merupakan hasil rata-rata dari penilaian pembeli. Lalu variabel Reviews adalah variabel yang menunjukkan banyaknya pembeli yang melakukan penilaian pada buku tersebut.


Distribusi User Rating

User Rating pada dataset ini berada rentang nilai antara 3.4 hingga 4.8. Mayoritas berada pada nilai 4.8. Variasi dari User Rating ini dapat dibilang kecil.

Saya rasa tidak adil membandingkan buku yang memiliki User Rating sebesar 4.8 dan banyak Reviews 10 dengan buku yang memiliki User Rating 3.4 dan banyak Reviews 1000. Untuk mengatasi hal ini, kedua variabel akan dilebur. Variabel skor ini saya namakan Weighted Rating.

Sistem weighted rating ini juga diterapkan pada salah satu situs penyedia informasi film terbesar, yaitu IMDb. IMDb menggunakan rumus tersendiri untuk menghitung skor film dengan mempertimbangkan penilaian penonton dengan jumlah penilaiannya. Penjelasan detail mengenai rumus ini dapat dilihat pada pada tautan berikut.

m = df['Reviews'].min()
C = df['User Rating'].mean()
def getWeightedRating(data, m=m, C=C):
    v = data['Reviews']
    R = data['User Rating']
    return (v/(v+m)*R) + (m/(v+m)*C)
df['Weighted Rating'] = df.apply(lambda x: getWeightedRating(x), axis=1)
df.head()


Dataset dengan kolom baru


Distrbusi Weighted Rating

Distribusi dari Weighted Rating ini memiliki bentuk yang hampir sama seperti User Rating. Variabel ini akan saya gunakan sebagai pengganti dari User Rating.

sns.lineplot(data=df, x='Year', y='Weighted Rating', ci=False)


Weighted Rating dari tahun 2009 hingga 2019

Rata-rata nilai dari Weighted Rating dari tahun 2009 hingga 2019 cenderung naik. Nilai terendah berada pada tahun 2012 dan mencapai puncaknya pada tahun 2019.

Analisa Genre

Buku pada dataset ini dibagi menjadi dua jenis, yaitu Fiction / fiksi dan Non Fiction / nonfiksi. Nama variabel yang menandakan genre / jenis buku ialah Genre.

sns.countplot(x=df['Genre'])


Distribusi variabel Genre pada dataset

Buku bergenre nonfiksi lebih banyak daripada genre fiksi. Ini berarti lebih banyak buku dengan genre nonfiksi pada 50 bestselling selama 2009 hingga 2019. Lalu bagaimana untuk tiap tahunnya? Apakah buku genre nonfiksi selalu lebih banyak daripada fiksi?

fiction_count = df[df['Genre'] == 'Fiction'].groupby('Year').size()
nonfiction_count = df[df['Genre'] == 'Non Fiction'].groupby('Year').size()
count_total = pd.DataFrame([fiction_count, nonfiction_count]).transpose()
count_total.columns = ['Fiction', 'Non Fiction']
count_total.plot()


Persebaran Genre dari tahun ke tahun

Hampir setiap tahun buku nonfiksi lebih banyak daripada fiksi. Namun pada tahun 2014 buku fiksi sempat lebih banyak daripada buku nonfiksi.

sns.barplot(data=df, x=’Genre’, y=’Weighted Rating’)


Rata-rata Weighted Rating untuk tiap genre

Kedua genre memiliki rata-rata Weighted Rating yang hampir sama.

sns.lineplot(data=df, x=’Year’, y=’Weighted Rating’, hue=’Genre’, ci=False)


Rata-rata Weighted Rating tiap tahun untuk kedua genre

Namun saat ditelisik lebih jauh, genre fiksi cenderung memiliki Weighted Rating yang lebih tinggi daripada nonfiksi. Pada tahun 2012 genre nonfiksi sempat memiliki Weighted Rating yang lebih tinggi.

Analisa Harga

Nilai harga pada dataset ini terdapat pada variabel bernama Price. Variabel ini menyatakan harga buku dalam kurs dollar USD ($).


Distribusi harga buku

Harga buku memiliki variasi yang kecil. Kebanyakan harga buku berkisar di bawah 20 dollar dengan harga tertinggi berada di atas 100 dollar.

sns.lineplot(data=df, x='Year', y='Price')


Harga buku dari tahun ke tahun

Rata-rata harga buku dari tahun ke tahun mengalami tren turun.


Perbandingan harga buku pada kedua genre

Buku nonfiksi memiliki kecenderungan lebih mahal daripada fiksi.

sns.lineplot(data=df, x='Year', y='Price', hue='Genre')


Perbandingan harga buku pada kedua genre dari tahun ke tahun

Setiap tahunnya juga harga rata-rata buku nonfiksi konsisten lebih mahal daripada genre fiksi.

Berbicara mengenai harga, pertanyaan yang sekilas terbesit adalah Buku apa yang paling mahal?.


Deskripsi variabel Price

Terlihat bahwa harga buku paling mahal adalah 105 dollar. Harga buku paling murah ialah 0 dollar. Harga ini saya asumsikan bahwa buku tersebut sudah tidak dijual lagi / stok habis pada tahun tersebut.

df[df['Price'] == df['Price'].max()]


Buku termahal

Buku dengan harga 105 dollar memiliki judul “Diagnostic and Statistical Manual of Mental Disorders, 5th Edition: DSM-5”. Buku ini ditulis oleh American Psychiatric Association dan sempat menjadi 50 bestselling pada tahun 2013 dan 2014. Buku dengan genre nonfiksi ini memiliki Weighted Rating sebesar 4.5.

Buku Terbaik

Sebelum mencari buku terbaik, definsi “terbaik” perlu ditentukan terlebih dahulu. Saya akan ambil cara yang termudah, yaitu mengambil nilai Weighted Rating yang paling besar. Sebelum itu, saya juga akan mencari buku terbaik untuk tiap genrenya, oleh karena itu data akan dibagi menjadi dua dataset berdasarkan genrenya.

df_fiction = df[df['Genre'] == 'Fiction']
df_nonfiction = df[df['Genre'] == 'Non Fiction']

Data yang sudah dipisah dimasukkan ke dalam variabel bernama df_fiction dan df_nonfiction.

df[df['Weighted Rating'] == df['Weighted Rating'].max()]


Buku dengan Weighted Rating tertinggi

Buku dengan Weighted Rating tertinggi ialah “Oh, the Places You’ll Go!” karangan Dr. Seuss. Buku ini masuk ke dalam 50 buku bestselling dari tahun 2012 hingga 2019 secara bertutut-turut. Lalu bagaimana buku terbaik dari tahun ke tahun?

best = []
for i in range(2009, 2020):
    temp = df[df['Year'] == i]
    best.append(temp[temp['Weighted Rating'] == temp['Weighted Rating'].max()])
    
pd.concat(best, axis=0)


Buku terbaik dari tahun ke tahun

Buku karangan Dr. Seuss selalu menduduki posisi pertama selama tahun 2012 hingga 2019. Sebelum itu, ada 3 buku yang menduduki posisi pertama tiap tahunnya, dua di antaranya merupakan buku nonfiksi.

Karena buku terbaik merupakan buku fiksi , selanjutnya saya buku nonfiksi terbaik.

df_nonfiction[df_nonfiction['Weighted Rating'] == df_nonfiction['Weighted Rating'].max()]


Buku nonfiksi terbaik

Buku nonfiksi terbaik berjudul “Jesus Calling: Enjoying Peace in His Presence (with Scripture References)” yang ditulis oleh Sarah Young. Buku ini menduduki posisi pertama dalam deretan nonfiksi dengan nilai Weighted Rating 4.899469.

Berikut juga akan ditampilkan 10 buku bestselling terbaik dari tiap genre.


10 buku fiksi terbaik


10 buku nonfiksi terbaik

Penulis Terbaik

Sama seperti buku terbaik, definisi “terbaik” perlu dibuat terlebih dahulu. Di sini terbaik akan saya definisikan sebagai penulis dengan buku bestselling terbanyak. Penulis pada dataset ini ada pada variabel Author.

Untuk mendapatkan nama penulis terbaik, cara yang dapat dilakukan ialah mengelompokkan data berdasarkan penulisnya lalu menghitung total namanya.

df.groupby('Author').size().sort_values(ascending=False).head(10).plot.barh()


10 penulis terbaik

Jeff Kinney merupakan penulis terbaik dengan 12 buku yang beliau tulis. Jika ditelisik lagi, didapat data bahwa Jeff Kinney merupakan pengarang buku seri “Diary of a Wimpy Kid”. Kedua belas seri buku ini masuk ke dalam 50 bestselling.


Buku karangan Jeff Kinney


Buku seri Diary of a Wimpy Kid

Eksplorasi dimulai dengan membuat skor yang lebih balance antara penilaian pembeli dan jumlah penilaian. Setelah itu skor ini digunakan untuk menganalisa tiap variabelnya. Dari analisa variabel ini, didapat beberapa pertanyaan yang dapat dijawab selama eksplorasi data.

Sekian untuk tulisan ini. Semoga bermanfaat.

Catatan Kaki:

Kode dari tulisan ini dapat diakses di GitHub saya: https://github.com/Dryluigi/amazon-books-eda

Dataset dapat diunduh melalui tautan berikut ini: https://www.kaggle.com/sootersaalu/amazon-top-50-bestselling-books-2009-2019

Daftar Pustaka:

https://kaggle.com

https://id.wikipedia.org/wiki/Amazon_(perusahaan)

https://www.bbc.com/news/business-48884596


ALAMAT

Institut Teknologi Sepuluh Nopember, Kampus, Jl. Raya ITS, Keputih, Kec. Sukolilo, Kota SBY, Jawa Timur 60111, Indonesia