Exploratory Data Analisis dan Visualisasi Data Netflix
Kita seringkali bergantung dengan data dalam pengambilan keputusan, perusahaan seperti Netflix juga sangat bergantung pada analisis data untuk mendapatkan informasi tentang user behaviour serta preferensi pengguna. Analisis Data Eksplorasi (EDA) memainkan peran penting dalam memahami pola dan karakteristik data sebelum terjun ke tahap pemodelan yang kompleks atau proses pengambilan keputusan. Pada artikel ini, kita akan membahas panduan langkah demi langkah tentang cara melakukan EDA dan membuat visualisasi data yang bermakna dengan menggunakan contoh dataset dari Netflix.
Langkah 1: Pengumpulan dan Pemahaman Data
Langkah pertama dalam proses analisis data adalah mengumpulkan data. Sebagai latihan kali ini, kita akan menggunakan dataset yang berisi informasi tentang Acara TV dan film Netflix. Kita perlu memahami struktur dataset, arti setiap kolom, dan potensi nilai yang hilang atau masalah kualitas data
Overview Data
#Load Data
data = pd.read_csv("../input/netflix-shows/netflix_titles.csv")
data.head()
data.info()
Function ini digunakan untuk menampilkan informasi detail tentang dataframe, seperti jumlah baris data, nama kolom, beserta jumlah data dan tipe data nya.
Dataset diatas memiliki 8807 baris dan 12 kolom
- show_id: ID untuk setiap acara tv dan atau Film
- type: Kategori tayangan (acara tv atau film)
- title: Judul tayangan
- director: Nama sutradara tayangan
- cast: Nama aktor dan pemeran lainya dalam tayangan
- country: Nama negara dimana tayangan Netflix bisa ditonton
- date_added: Tanggal ketika tayangan ditambahkan ke Netflix
- release_year: Tahun rilis tayangan
- rating: Rating tayangan di Netflix
- duration: Durasi tayangan
- listed_in: Genre tayangan
- description: Deskripsi singkat mengenai tayangan tersebut
Langkah 2: Pembersihan Data (Data Cleaning)
Data Cleaning merupakan aspek penting dari proses EDA. Langkah ini melibatkan penanganan missing value, menghapus data yang duplikat, dan mengoreksi setiap inkonsistensi dalam data. Pembersihan data memastikan bahwa analisis selanjutnya akurat
Missing Value Handling
# Visualize missing values as a matrix
msno.matrix(data);
Dengan menggunakan matriks ini kita dapat menemukan missing value di dalam dataset. Dari visualisasi di atas kita dapat mengamati bahwa “director”, “pemeran” dan “negara” memiliki banyak missing value yang hilang
- director: Informasi yang sangat kurang untuk analisis sehingga kolom ini akan dihilangkan
- cast : ada terlalu banyak value yang berbeda sehingga akan dihilangkan
- country : Variabel penting sehingga kita perlu memperbaikinya
- date_added: hanya ada beberapa baris yang kosong sehingga kita drop saja barisnya
- rating: hanya ada beberapa baris yang kosong sehingga kita drop saja barisnya
Langkah 3: Ringkasan Data dan Statistik Deskriptif
Setelah data dibersihkan, langkah selanjutnya yaitu untuk mendapatkan gambaran umum tentang kumpulan data menggunakan statistik ringkasan dan analisis deskriptif. Menghitung statistik seperti rata-rata, median, deviasi standar, dan kuartil untuk memahami kecenderungan sentral dan penyebaran data.
data.describe(include='object')
Secara default fungsi describe() akan menghasilkan summary statistic descriptive
Langkah 4: Mengeksplorasi Pola Data
EDA melibatkan penemuan pola, tren, dan hubungan di dalam data. Mulailah dengan melakukan analisis univariat, di mana Anda mengeksplorasi variabel individual untuk memahami karakteristik dan distribusinya. Selanjutnya, lakukan analisis bivariat untuk memeriksa hubungan antara dua variabel. Misalnya, kita dapat menganalisis korelasi antara bulan dan tahun dimana acara sering tayang.
month_order = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][::-1]
df = data.groupby('year_added')['month_added'].value_counts().unstack().fillna(0)[month_order].T
plt.figure(figsize=(10, 7), dpi=200)
plt.pcolor(df, cmap='afmhot_r', edgecolors='white', linewidths=2) # heatmap
plt.xticks(np.arange(0.5, len(df.columns), 1), df.columns, fontsize=7, fontfamily='serif')
plt.yticks(np.arange(0.5, len(df.index), 1), df.index, fontsize=7, fontfamily='serif')
plt.title('Netflix Contents Update', fontsize=12, fontfamily='calibri', fontweight='bold', position=(0.20, 1.0+0.02))
cbar = plt.colorbar()
cbar.ax.tick_params(labelsize=8)
cbar.ax.minorticks_on()
plt.show()
Langkah 5: Visualisasi Data
Visualisasi data adalah sebuah alat yang kuat yang memungkinkan otak manusia menafsirkan pola data yang kompleks dengan mudah. Buat berbagai visualisasi seperti bar charts, line plots, scatter plots, heat maps, dan pie charts untuk menyajikan temuan secara efektif. Visualisasi juga dapat membantu mengidentifikasi tren dan anomali dalam data.
Contohnya misal:
Tipe acara di Netflix
plt.figure(figsize=(14, 7))
labels=['TV Show', 'Movie']
plt.pie(data['type'].value_counts().sort_values(),labels=labels,explode=[0.1,0.1],
autopct='%1.2f%%',colors=['lightblue','royalblue'], startangle=90)
plt.title('Type of Netflix Content')
plt.axis('equal')
plt.show()
Rating Film dengan jumlah tertinggi
plt.figure(figsize=(12,10))
sns.set(style="darkgrid")
ax = sns.countplot(x="rating", data=netflix_movies, palette="Set2", order=netflix_movies['rating'].value_counts().index[0:15])
Distribusi durasi film paling banyak
from scipy.stats import norm
plt.figure(figsize=(15,7))
sns.distplot(netflix_movies['duration'].str.extract('(\d+)'),fit=norm,kde=False, color=['red'])
plt.title('Distplot with Normal distribution for Movies',fontweight="bold")
plt.show()
10 Negara teratas yang memproduksi konten paling banyak
from collections import Counter
country_data = data['country']
country_count = pd.Series(dict(Counter(','.join(country_data).replace(' ,',',').replace(
', ',',').split(',')))).sort_values(ascending=False)
top10country = country_count.head(10)
plt.figure(figsize=(15,5))
sns.barplot(x= top10country.index, y=top10country, palette="pastel")
plt.xticks(rotation=50)
plt.title('Top 10 countries with most contents', fontsize=15, fontweight='bold')
plt.show()
Wordcloud Genre Film
from wordcloud import WordCloud, STOPWORDS
text = ' '.join(netflix_movies['listed_in'])
plt.rcParams['figure.figsize'] = (12,12)
wordcloud = WordCloud(background_color = 'white', width = 1200, height = 1200, max_words = 121).generate(text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
EDA dan Visualisasi Data merupakan langkah penting dalam memahami dan mendapatkan informasi serta insight dari sebuah data. Dengan mengikuti proses langkah demi langkah yang diuraikan dalam artikel ini, maka dapat secara efektif membersihkan data, menemukan pola yang, dan menyajikan temuan menggunakan visualisasi yang menarik.