Exploratory Coffee Analysis (Part 1)

Zaky Syihan
Make-AI Data Stories
7 min readAug 29, 2019

Pada artikel sebelumnya kita telah membahas mengenai bagaimana membuat visualisasi data yang baik. Baik dalam arti dapat menyampaikan insight yang terdapat pada data yang kita visualisasikan. Dalam artikel tersebut saya menampilkan visualisasi mengenai kualitas kopi tiap negara di dunia.

Check my previous article here!

Nah, pada artikel kali ini kita akan membahas lebih dalam mengenai Exploratory Data Analysis (EDA) dari data kopi tersebut. Kita akan membahas bagaimana kita mendapatkan suatu insight dari data melalui tahapan-tahapan dalam EDA. Lalu kita akan menampilkan insight yang kita temukan dalam bentuk visualisasi dengan menerapkan kaidah-kaidah yang telah kita lakukan pada artikel sebelumnya.

Belum tau apa itu EDA? Coba cek di sini dan di sini untuk penjelasan singkatnya.

Let’s get this EDA started!

Setelah kita mendapatkan data yang akan kita analisis, yang pertama kita lakukan adalah melakukan import data ke dalam jupyter notebook agar dapat kita olah. Kita dapat menggunakan fungsi read_csv karena data kopi yang kita dapatkan berformat csv. Oh iya, teman-teman bisa download datanya di sini.

Import data menggunakan fungsi pandas read_csv

Tahap awal yang biasa saya lakukan adalah melihat sekilas data itu sendiri. Kita dapat menggunakan fungsi pandas dataframe head() dan info(). Dengan menggunakan dua fungsi ini kita dapat mengetahui fitur(kolom) apa saja yang terdapat pada data kopi yang kita miliki. Selain itu kita juga dapat mengetahui berapa banyak jumlah baris dan kolom dari data, tipe data dari tiap fitur, dan jumlah data pada tiap fiturnya.

Melihat sekilas data dalam bentuk tabel dengan menggunakan fungsi pandas head, serta melihat fitur, jumlah, dan tipe dari data menggunakan fungsi pandas info.

Lumayan banyak ya ternyata fiturnya. Jika kita lihat pada jumlah kolom data, total semuanya berjumlah 44 kolom. Untuk memperkecil lingkup analisis pada artikel kali ini kita akan mengambil hanya beberapa fitur saja yang sekiranya menarik untuk dianalisis.

Pemilihan beberapa fitur untuk dianalisis.

Kalau kita lihat sekilas, kira-kira teman-teman sudah familiar belum dengan beberapa fitur yang dipilih? Mungkin kalau teman-teman ada yang demen banget minum kopi pasti familiar dengan beberapa fitur ini. Kalau ada yang bukan anak kopi bisa nyontek deskripsi fitur di bawah ini deh, hahahaha.

Country.of.Origin : Negara tempat kopi diproduksi.

Variety : Varietas biji kopi.

Processing.Method : Metode kopi tersebut diproses sebelum disangrai.

Aroma : Bau dari kopi yang keluar ketika kopi diseduh.

Flavor : Tingkat kekayaan rasa pada kopi. Flavor merupakan karakteristik kopi yang paling subyektif dalam penilaiannya.

Aftertaste : Seberapa lama durasi yang singgah, bagaimana konsistensi rasa yang tertinggal di mulut.

Acidity : Tingkat keasaman yang ada pada kopi.

Body : Tekstur yang ada pada kopi, bagaimana karakter kekentalan saat kopi berada dalam mulut.

Balance : Seberapa harmonis / seimbang rasa pada kopi.

Uniformity : Konsistensi rasa yang ada pada kopi saat cupping di beberapa cangkir kopi.

Clean.Cup : Seberapa tingkat kebersihan karakter rasa, yang mana dari mulai menyesapnya hingga aftertaste apakah ada rasa lain yang mengganggu.

Sweetness : Sensasi manis pada kopi.

Total.Cup.Points : Total nilai akhir penilaian kopi

Jika kita merujuk pada SCAA(Specialy Coffee Association of America), sebenarnya masih ada beberapa komponen penilaian lain untuk menilai kualitas kopi. Tapi pada kasus ini kita akan ambil beberapa komponen saja.

Selanjutnya kita akan cek tipe data dari tiap fitur yang kita pilih. Kita dapat melihat tipe data dari tiap fitur dengan fungsi pandas info.

Cek tipe data tiap fitur.

Jika kita bandingkan antara tabel dengan tipe datanya, terdapat beberapa fitur numerik yang memiliki tipe data object. Untuk kemudahan analisis kita pada tahap selanjutnya, kita harus merubah tipe data fitur-fitur tersebut ke dalam tipe data yang seharusnya. Pada kasus ini merubah tipe data semua fitur numerik ke dalam tipe data float. Kita dapat menggunakan fungsi pandas yaitu to_numeric.

Mengubah tipe data dari object menjadi float. Lalu melihat hasilnya dengan fungsi info.

Mengubah tipe data beberapa fitur dapat kita lakukan menggunakan perulangan. Untuk memastikan hasilnya kita gunakan fungsi info. Teman-teman bisa melihat pada keterangan tipe data yang sebelumnya object sekarang telah berubah menjadi float.

Tujuan kita mengubah tipe data object menjadi float adalah agar kita dapat melihat nilai statistik dari data kita. Masih menggunakan fungsi pandas, kali ini kita menggunakan fungsi describe untuk melihat nilai statistik pada data.

Melihat statistik dari data.

Kira-kira ada yang aneh gak nih menurut teman-teman? Coba deh lihat nilai maksimum (max) dari fitur Body, Balance, Uniformity, dan Acidity. Dalam tabel, nilai maksimum dari beberapa fitur melebihi 10. Padahal jika kita lihat pada data, range nilai dari fitur-fitur tersebut berkisar pada 0 sampai 10 saja. Kita bisa tarik kesimpulan bahwa penilaian kopi pada aspek-aspek tersebut tidak melebihi nilai 10. Diperlukan analisis lebih lanjut untuk mengetahui kenapa nilai maksimum fitur-fitur tersebut bisa lebih dari 10. Kita dapat menggunakan filtering dengan kondisi tertentu untuk mencari penyebabnya.

Melakukan filtering data untuk mencari data dengan nilai lebih dari 10

Nah ketemu nih, ternyata ada 2 baris data yang bermasalah. Kemungkinan masalah tersebut disebabkan oleh kesalahan input oleh pengguna. Yaa who knows sih hahahaha, kita tidak akan melakukan analisis sejauh itu.

Lalu apa yang kita lakukan dengan 2 baris data ini? Karena dalam data terdapat nilai yang kosong atau null value (NaN), kita akan membersihkannya pada tahap selanjutnya yaitu Null Value Analysis.

Langkah pertama yang kita lakukan adalah melihat berapa banyak data yang memiliki null value. Kita dapat menggunakan fungsi pandas isnull.

Melihat jumlah dan presentase null value pada data tiap fitur

Kita dapat melihat jumlah atau presentase null value pada tiap fitur. Selanjutnya kita akan melakukan null value handling dengan menggunakan fungsi pandas fillna untuk mengisi null value dan dropna untuk menghilangkan baris data yang memiliki null value.

Null Value Handling

Untuk fitur kategorik akan kita isi (fillna) dengan menggunakan keterangan ‘Unknown’. Sedangkan untuk numerik akan kita hilangkan (dropna) saja. Jangan lupa kita cek kembali apakah null value telah terisi semuanya.

Cek kembali jumlah null value pada data

Done! Data kita sudah bebas dari null value. Bisa dibilang data kita sudah cukup bersih. Selanjutnya kita bisa mulai eksplorasi data kita untuk mencari beberapa insight menarik.

Hmmmm apa ya kira-kira? Coba deh kita lihat dulu 10 kopi terbaik berdasarkan Total.Cup.Points dari kopi-kopi tersebut.

Top 10 Best Coffee by Total.Cup.Points

Wah ternyata setelah kita cek, kopi-kopi dari Ethiopia mendominasi dalam 10 kopi terbaik di dunia berdasarkan data yang kita punya.

Kita bisa lihat dari sisi lain untuk mencari insight dari data kita. Nah kita coba lihat nih negara mana sih yang kopinya termasuk kopi berkualitas.

Top 10 Country with High Quality Coffee by Mean of Total.Cup.Points

Ternyata negara dengan kopi terbaik adalah United States. Kok bisa? Padahal kopi-kopi terbaik didominasi oleh Ethiopia. Untuk mengetahui penyebabnya kita bisa visualisasikan data kita menggunakan boxplot untuk mengetahui persebaran kopi berdasarkan Total.Cup.Points pada tiap negara. Kita dapat menggunakan matplotlib dan seaborn untuk membuat boxplot. Coba deh kita cek United States dengan Ethiopia dulu.

United States vs Ethiopia (Box Plot Visualization)

Setelah kita visualisasikan, ternyata bisa dilihat kalau kopi dari mayoritas kopi dari United States memiliki Total.Cup.Points lebih tinggi daripada Ethiopia. Walaupun kopi-kopi terbaik didominasi oleh Ethiopia, namun secara keseluruhan rata-rata Total.Cup.Points United States masih lebih unggul.

Btw, daritadi kopi Indonesia belum kelihatan nih hahaha, coba kita lihat yuk kira-kira untuk peringkat negara berdasarkan rata-rata Total.Cup.Points Indonesia menduduki peringkat berapa.

Peringkat negara berdasarkan rata-rata Total.Cup.Points

Wah ternyata Indonesia berada pada peringkat 15 (14 pada tabel karena index dimulai dari 0). Walaupun popularitas kopi Indonesia cukup tinggi pada tingkat mancanegara, namun dalam data yang kita miliki kualitas kopi Indonesia masih belum cukup untuk masuk 10 besar.

Terus setertinggal apa sih kopi Indonesia? Apa yang kurang dari kopi Indonesia jika dibandingkan dengan kopi-kopi negara lain? Apa yang bisa ditingkatkan kopi Indonesia untuk menjadi kopi terbaik di dunia?

Stay tuned in the next article! Exploratory Coffee Analysis Part 2

Pada artikel selanjutnya kita akan menjawab pertanyaan-pertanyaan tersebut dengan eksplorasi data yang lebih mendalam. Selain itu kita juga akan coba membuat visualisasi dari insight yang kita temukan, tentunya dengan kaidah-kaidah visualisasi yang baik dong.

Jadi, jangan lupa untuk selalu mengikuti artikel-artikel data science di Make-AI Data Stories.

Ingin belajar Data Science lebih dalam? Yuk belajar di Make-AI Data Science Online Course!

--

--

Zaky Syihan
Make-AI Data Stories

Data Scientist at Telkom Indonesia | Researcher at akademi-ai