Data Visualization - Phần 1 - Phân Tích Dữ Liệu Netflix

Mục tiêu của chúng ta hôm nay là khám phá tập dataset netflix này, để khám phá và đào xới những thông tin ẩn bên trong, phục vụ cho việc ra quyết định loại phim/ chương trình nào nên sản xuất và chúng ta nên đề xuất loại hình kinh doanh nào cho mỗi quốc gia khác nhau.

Trực quan hoá dữ liệu - Data Visualization

Dataset các bạn có thể download ở đây: https://www.kaggle.com/datasets/shivamb/netflix-shows

Đầu tiên, chúng ta sẽ import các thư viện cần thiết để phục vụ cho việc phân tích. Các như viện không thể thiếu là pandas, matplotlib, seaborn, numpy.

1
2import matplotlib.pyplot as plt
3
4import seaborn as sns
5
6import pandas as pd

Ngó sơ qua dataset, chúng ta có các cột như sau:

Show_id: mã định danh duy nhất cho các show / phim

Type: Loại chương trình

Title: Tên phim / show

Director: Tên đạo diễn

Cast: Diễn viên chính

Country: Quốc gia nơi bộ phim được sản xuất

Date_added: Ngày được đưa lên hệ thống netflix

Release_year: Ngày hoàn thành bộ phim

Rating: Điểm yêu thích của bộ phim

Duration: Thời gian của bộ phim, hoặc số tập .

Listed_in: Thể loại phim

Description: Mô tả sơ bộ về bộ phim

Bây giờ, chúng ta load dữ liệu bằng pandas và phân tích thử

1
2data=pd.read_csv('netflix.csv')
3
4print(data.shape)
5
6>>>(8807, 12)

Data có 12 cột như đã đề cập ở trên, 8807 dòng. Ngó xem phân bố dữ liệu rỗng như thế nào

1
2plt.figure(figsize=(8,8))
3sns.heatmap(data.isna())
4
5plt.show()

heatmap na

Nhìn vào biểu đồ trên, chúng ta thấy rằng cột director bị lủng NA nhiều nhất, tiếp đến là cột cast và cột country. Cột Date_added và và rating lủng chút chút, các cột còn lại khá tốt.

Do cột director bị lủng nhiều, nên chúng ta sẽ bỏ qua, không phân tích top 10 đạo điễn có số lượng phim nhiều nhất. Tương tự như vậy với cột diễn viên chính (cast), và cột quốc gia sản xuất (country). Ngó đi ngó lại, chỉ còn có liệt kê top 10 thể loại phim (Listed_in) được sản xuất nhiều nhất .

1
2plt.figure(figsize=(16,16))
3data["listed_in"].value_counts()[:10].plot(kind="barh", color="orange")
4plt.title("Top 10 thể loại phim trên NETFLIX",size=20)
5
6plt.show()

top 10 thể loại phim

Phim truyền hình và phim tài liệu có số lượng phim nhiều nhất, tiếp theo là phim hài

Do Na ở cột country khá nhiều, nên chúng ta sẽ loại bỏ hết các dòng có contry na đi

1
2df = data.copy()
3df['country'] = df['country'].ffill(axis=0)
4df.head(10)

10 phim đã lọc NA ở country

Quan sát dữ liệu cột country, chúng ta nhận thấy rằng có nhiều phim được quay ở nhiều địa điểm, nên chúng ta ta cần xử lý lại chỗ này một chút. Đơn giản là mình chỉ lấy quốc gia đầu tiên xuất hiện trong cột country.

1
2df['trim_country'] = df['country'].apply(lambda x: x.split(',')[0])
3df.head(10)

loại bỏ đa quốc gia trong cột country

Thử show ra biểu đồ rating của top 5 quốc gia nhiều phim nhất

 1
 2
 3countries = df['trim_country'].unique()
 4
 5ratings = df['rating'].unique()
 6
 7fig = plt.figure(
 8    figsize=(20,30)
 9    )
10
11for i, name in enumerate(countries[:5]):
12  frame = df[df['trim_country'] == str(name)]
13  ax = fig.add_subplot(len(countries[:5]),1,i+1)
14  topic = name
15  sns.countplot(x='rating', data= frame[frame['rating'].isin(ratings)])
16  ax.set_title(topic)
17  plt.subplots_adjust(left=0.1,
18                    bottom=0.1,
19                    right=0.9,
20                    top=0.9,
21                    wspace=0.4,
22                    hspace=0.4)
23  ax.set(ylabel='Content Produced')

top 5 country - Ratings

Thử show ra biểu đồ đếm thể loại phim được quay trên top 5 quốc gia có nhiều phim nhất xem như thế nào

 1
 2countries = df['trim_country'].unique()
 3
 4listing = df['trim_listed_in'].unique()
 5ratings = df['rating'].unique()
 6
 7fig = plt.figure(
 8    figsize=(40,30)
 9    )
10
11for i, name in enumerate(countries[:5]):
12  frame = df[df['trim_country'] == str(name)]
13  ax = fig.add_subplot(len(countries[:5]),1,i+1)
14  topic = name
15  sns.countplot(x='trim_listed_in', data= frame[frame['trim_listed_in'].isin(listing)])
16  ax.set_title(topic)
17  plt.subplots_adjust(left=0.1,
18                    bottom=0.1,
19                    right=0.9,
20                    top=0.9,
21                    wspace=0.4,
22                    hspace=0.4)
23  ax.set(ylabel='Content Produced')

top 5 country - Listed in

Còn nhiều cái để khám phá nữa, ví dụ

  • Top 10 diễn viên xuất hiện nhiều nhất trên TV Shows

  • Top 10 diễn viên xuất hiện nhiều nhất trên Movies

  • TV Shows nhiều mùa nhất

  • Thời gian công chiếu dài nhất

Tham khảo:

https://www.kaggle.com/code/shivamb/netflix-shows-and-movies-exploratory-analysis/notebook

https://www.analyticsvidhya.com/blog/2021/09/performing-eda-of-netflix-dataset-with-plotly/

https://medium.datadriveninvestor.com/netflix-data-exploration-and-visualization-1d270234c2d4

https://public.tableau.com/views/DataVizProject_16166857387730/dashboard_assignement?%3Aembed=y&%3AshowVizHome=no&%3Adisplay_count=y&%3Adisplay_static_image=y&%3AbootstrapWhenNotified=true&%3Alanguage=en&%3Amobile=true&:embed=y&:showVizHome=n&:apiID=host0

https://jovian.ai/shagunsharma04061998/netflix-data-analysis/v/1?utm_source=embed#C33

Comments