Mengeksplorasi dan menganalisis dataset konten Netflix guna memahami pola-pola dalam konten yang disediakan oleh platform tersebut. Fokus utama akan pada kategori konten, analisis waktu, negara asal, rating, durasi, dan sutradara. Proyek ini juga akan mencakup visualisasi data yang membantu dalam memahami distribusi dan tren dalam dataset.
Description
Mengimpor library dan memuat dataset
import pandas as pd: Mengimpor modul Pandas dengan alias pd untuk manipulasi data tabular.
import numpy as np: Mengimpor modul NumPy dengan alias np untuk operasi numerik yang efisien.
import matplotlib.pyplot as plt: Mengimpor modul pyplot dari Matplotlib dengan alias plt untuk membuat visualisasi grafik.
import seaborn as sns: Mengimpor modul Seaborn dengan alias sns untuk visualisasi data yang lebih menarik dan informatif.
from wordcloud import WordCloud: Mengimpor kelas WordCloud dari modul wordcloud untuk membuat visualisasi awan kata-kata
df = pd.read_csv('netflix.csv'): Memuat dataset Netflix dari file CSV ke dalam sebuah DataFrame Pandas yang disimpan dalam variabel df.
print(df.head()): Menampilkan lima baris pertama dari DataFrame df. Ini membantu untuk melihat struktur awal dari dataset.
Menghapus seluruh nilai ‘Not Given’
df.replace('Not Given', np.nan, inplace=True): Mengganti semua nilai yang memiliki string "Not Given" dengan nilai NaN (Not a Number) di seluruh dataset df. np.nan berasal dari NumPy dan merupakan representasi standar untuk nilai yang hilang atau tidak valid dalam Pandas. Parameter inplace=True digunakan untuk mengubah DataFrame df secara langsung tanpa perlu menyimpan ke variabel baru.
df.dropna(inplace=True): Menghapus baris-baris dari DataFrame df yang mengandung setidaknya satu nilai NaN di seluruh kolomnya. Ini bertujuan untuk membersihkan dataset dari baris yang tidak lengkap atau tidak valid setelah penggantian nilai "Not Given" menjadi NaN. Parameter inplace=True juga digunakan di sini untuk mengubah DataFrame df asli.
print(df.isna().sum()): Mengonfirmasi perubahan dengan mencetak jumlah nilai NaN di setiap kolom DataFrame df setelah proses pembersihan. Jika semua nilai "Not Given" telah diganti dengan NaN dan baris yang mengandung NaN telah dihapus, maka perintah ini seharusnya mencetak nilai 0 untuk setiap kolom, menunjukkan tidak ada nilai NaN yang tersisa.
Mengubah format data dan statistik deksriptif
Definisi Fungsi convert_duration: Mengubah durasi teks ke angka: menit jika ada 'min', konversi season ke menit jika ada 'Season', atau NaN jika tidak ada keduanya.
Penerapan Fungsi pada Kolom DataFrame: df['duration'] = df['duration'].apply(convert_duration) : terapkan fungsi convert_duration pada setiap elemen di kolom duration DataFrame df.
print(df.describe()) menampilkan statistik deskriptif dasar untuk kolom numerik dalam DataFrame df, seperti jumlah data, rata-rata, standar deviasi, nilai minimum, persentil, dan nilai maksimum.
Distribusi Jenis Konten
plt.figure(figsize=(10, 5)):Membuat sebuah figure baru dengan ukuran 10x5 inci.
sns.countplot(data=df, x='type'):Menggunakan Seaborn untuk membuat count plot dari kolom type dalam DataFrame df.
plt.title('Distribusi Jenis Konten'):Menambahkan judul plot: "Distribusi Jenis Konten".
sns.histplot(data=df, x='release_year', bins=30) membuat histogram dari kolom release_year dalam DataFrame df dengan 30 bin, menggunakan Seaborn.
Analisis Negara Asal Konten
top_countries = df['country'].value_counts().head(10).index digunakan untuk menghasilkan indeks dari 10 negara teratas berdasarkan frekuensi kemunculan dalam kolom 'country' dari DataFrame df.
sns.countplot(data=df['country'].isin(top_countres)], y='country', order=top countries) memfilter data untuk hanya menampilkan 10 negara teratas berdasarkan frekuensi kemunculan dalam kolom 'country' dari DataFrame df, lalu membuat count plot dengan urutan berdasarkan frekuensi tersebut.
Analisis Durasi Konten
Wordcloud untuk Genre
text = ' '.join(df['listed_in'].dropna()): Menggabungkan semua teks dari kolom 'listed_in', setelah menghapus nilai-nilai kosong.
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text): Membuat word cloud dengan lebar 800 piksel, tinggi 400 piksel, latar belakang putih, menggunakan teks yang telah digabungkan.
plt.imshow(wordcloud, interpolation='bilinear'): Menampilkan word cloud menggunakan metode interpolasi bilinear untuk meningkatkan kualitas visualisasi.
plt.axis('off'): Menyembunyikan sumbu plot agar tidak terlihat.
Jumlah Konten Berdasarkan Sutradara
director_counts = df['director'].value_counts().head(20) digunakan untuk menghitung dan menyimpan jumlah kemunculan setiap nilai unik dalam kolom 'director' dari DataFrame df, lalu mengambil 20 nilai teratas berdasarkan jumlah kemunculannya.
Kesimpulan
Berdasarkan analisis visual dari data Netflix, dapat disimpulkan bahwa mayoritas konten dalam dataset ini adalah film (Movies), menunjukkan fokus dominan platform ini pada penyediaan film. Distribusi tahun rilis konten menunjukkan tren peningkatan yang signifikan dari tahun 2010 hingga sekitar tahun 2018, meskipun terjadi sedikit penurunan pada tahun 2020. Secara geografis, Amerika Serikat merupakan penyumbang terbesar konten Netflix, diikuti oleh India dan kemudian Inggris. Durasi film yang paling umum adalah sekitar 90 menit, diikuti oleh 100 menit dan 110 menit. Genre yang mendominasi dalam katalog Netflix adalah "International Movies", seperti yang tercermin dalam wordcloud yang menyoroti kata-kata kunci terkait. Dari segi kontribusi sutradara, Rajiv Cilaka menonjol dengan jumlah konten tertinggi, diikuti oleh Alastair Fothergill, dan Raul Campos bersama Jan Suter. Kesimpulan ini memberikan gambaran komprehensif tentang karakteristik konten Netflix yang dapat diambil dari analisis data visual yang telah dilakukan.
Informasi Course Terkait
Kategori: Data Science / Big Data
Course: Data Science SIB Batch 6