Python数据分析案例12——网飞影视剧数据分析及其可视化

这篇具有很好参考价值的文章主要介绍了Python数据分析案例12——网飞影视剧数据分析及其可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景介绍

Netflix是最受欢迎的媒体和视频流平台之一。他们的平台上有超过 8000 部电影或电视节目。截至 2021 年年中,他们在全球拥有超过 2 亿订阅者。

博主看美剧也较为多,像《怪奇物语》、《性爱自修室》等高分美剧都是网飞的。

对于网飞的影视剧,我们可以分析其电影和电视剧的成分占比,发行年份、国家,影视剧类型,收视率,简介关键词等,进行一定程度的描述性统计及其可视化。从而可以得到哪些类型影视剧更受欢迎,哪些国家发行影视剧更多等等结论。

注:(本文不涉及高级复杂的数学模型,主要的核心是数据的描述性分析和可视化。) 


关于数据集介绍

此表格数据集来源kaggle,包含 Netflix 上可用的所有电影和电视节目的列表,以及演员、导演、评级、发行年份、持续时间等详细信息。

不方便的同学可以参考这个获取数据集:网飞数据。


数据读取和清洗

导入数据分析常用的包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns

plt.rcParams ['font.sans-serif'] ='SimHei'              #显示中文
plt.rcParams ['axes.unicode_minus']=False               #显示负号

下面读取数据集转化为pandas数据框对象,删除所有值都为空白的列,把第一列节目标号设置为索引,查看数据前五行

df=pd.read_csv('netflix_titles.csv',encoding='ANSI').dropna(how='all',axis=1).set_index('show_id')
df.head()

Python数据分析案例12——网飞影视剧数据分析及其可视化

可以看到主要都是文本类型数据。


 数据变量介绍和分析

变量信息介绍

‘type’为影视剧类型,即属于电影还是电视剧,分类型变量

‘title’为影视剧名称,文本型变量

‘director' 为导演名字,文本变量

‘cast’为所有演员名称,文本变量

‘ country’为发行制作国家,分类变量

‘date_added’该影视剧在 Netflix 上添加的日期,时间变量

‘release_year’该影视剧实际发布年份,时间变量

‘rating’电影/节目的电视评级,分类变量

‘duration’总持续时间, 分类变量

‘listed_in’影视剧节目类型,多组分类变量

‘description’影视剧简介,文本变量


查看数据的所有变量信息

df=df.infer_objects()
print(df.shape)
df.info()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 从上面数据信息可以看到该数据总共有8798条,11个变量, 有些变量存在一定的缺失值,下面对缺失值进行处理,


数据清洗

对缺失值进行可视化

#观察缺失值
import missingno as msno
msno.matrix(df)

Python数据分析案例12——网飞影视剧数据分析及其可视化

可以看出导演这一列出现缺失值较多,演员和发行国家也存在一些缺失值。 由于每个影视剧的导演和演员都是第一无二的,而且是文本型数据,所以这里不能采用均值或者是众数进行填充,我们使用‘无数据’代替空值。

发行国家采用已有数据里面发行影视剧最多的国家进行填充, 其他列存在缺失值的样本可以进行删除。

填充修改

df['country'] = df['country'].fillna(df['country'].mode()[0])
df['cast'].fillna('No Data',inplace  = True)
df['director'].fillna('No Data',inplace  = True)
df.dropna(inplace=True)

去除重复值

df.drop_duplicates(inplace=True)

将时间变量转化为时间格式

便于后面分析,这里将影视剧添加到网飞版块时间的年月作为分类变量提取出来

df["date_added"] = pd.to_datetime(df['date_added'])
df['year_added'] = df['date_added'].dt.year
df['month_name_added']=df['date_added'].dt.month_name()
df['release_year']=df['release_year'].astype('int')

再次查看数据信息

df.info()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 最终剩余8774条样本数据,变量都无缺失值,变量类型都正确,可以进行下面的分析和可视化


分析及其可视化

网飞影视剧中电影和电视剧的各自占比分析

plt.figure(figsize=(2,2),dpi=180)
p1=df.type.value_counts()
plt.pie(p1,labels=p1.index,autopct="%1.3f%%",shadow=True,explode=(0.2,0),colors=['royalblue','pink']) #带阴影,某一块里中心的距离
plt.title("网飞影视剧中电影和电视剧的各自占比")
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 可以看出网飞影视剧中电影数量占比更多,将近七层,电视剧占比30%左右。

网飞影视剧中发行国家分析

import squarify
p2=df.country.value_counts()[:15]
fig = plt.figure(figsize = (8,4),dpi=256)
ax = fig.add_subplot(111)
plot = squarify.plot(sizes = p2, # 方块面积大小
                     label = p2.index, # 指定标签
                     #color = colors, # 指定自定义颜色
                     alpha = 0.8, # 指定透明度
                     value = p2, # 添加数值标签
                     edgecolor = 'white', # 设置边界框
                     linewidth =0.1 # 设置边框宽度
                    )
# 设置标题大小
ax.set_title('网飞影视剧数量发行量排名前15的国家',fontsize = 22)
# 去除坐标轴
ax.axis('off')
# 去除上边框和右边框刻度
ax.tick_params(top = 'off', right = 'off')
# 显示图形
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

可以看到,由于网飞是美国的公司,在其本土上的影视作品数量最多,几乎占据了所有影视作品的一半,其次是印度、英国、日本、韩国、加拿大,这五个国家的网飞影视剧也较多。

(只选取了前15的国家,因为国家太多了图就会很乱)

网飞影视剧发行量前10的国家电影和电视剧数量对比分析 

def check0(txt):
    if txt in p2.index[:10]:
        a=True
    else:
        a=False
    return a
df_bool=df.country.astype('str').apply(check0)
p3=pd.crosstab(df[df_bool].type,df[df_bool].country,normalize='columns').T.sort_values(by='TV Show')
m =np.arange(len(p3))
plt.figure(figsize = (8,4),dpi=256)
plt.bar(x=m, height=p3.iloc[:,0], label=p3.columns[0], width=0.3,alpha=0.5, hatch='.',color='orange') 
plt.bar(x=m , height=p3.iloc[:,1], label=p3.columns[1], bottom=p3.iloc[:,0],width=0.3,alpha=0.5,hatch='*',color='lime')
plt.xticks(range(len(p3)),p3.index,fontsize=10,rotation=30)
plt.legend()
plt.ylabel('频率')
plt.title("网飞影视剧发行量前10的国家电影和电视剧数量对比")
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

从网飞发行量前十的国家来看,印度的网飞影视剧的电影占比非常高,其次是埃及,美国。

电视剧占比较高的是韩国、日本、英国。

说明网飞在印度,埃及,美国地区制作拍摄影视剧是更偏向与电影。而在韩国,日本,英国更偏向于电视剧发行。

(只选取了前10的国家,因为国家太多了图就会很乱,国家名称都堆叠在一起放不下去)

影视剧评级分析

p4=df.rating.value_counts()
plt.figure(figsize = (6,3),dpi=256)
sns.barplot(x=p4.index,y=p4)
plt.ylabel('数量')
plt.xlabel('评价')
plt.xticks(fontsize=10,rotation=45)
plt.title("网飞所有影视剧不同评级数量对比")
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 可以看到绝大多数的评价都是TV-MA和TV-14,即适合成年人的影视剧和合适14岁以上影视剧的评级。

df_bar=pd.crosstab(df.type,df.rating).T.sort_values(by='Movie',ascending=False).unstack().reset_index().rename(columns={0:'number'})
plt.subplots(figsize = (10,4),dpi=128)
sns.barplot(x=df_bar.rating,y=df_bar.number,hue=df_bar.type,palette = "copper")

Python数据分析案例12——网飞影视剧数据分析及其可视化

 可以看到评级是TV-MA,TV-14和TV-PG的电影和电视剧都有,评级为R和PG的都是电影。

不同发行国家的影视剧评级分析

df_heatmap=df[df_bool].groupby('country')['rating'].value_counts().unstack().sort_index().fillna(0).astype(int).T#.sort_values(by='Movie',ascending=False).T
for col in df_heatmap.columns:
    df_heatmap[col]=df_heatmap[col]/df_heatmap[col].sum()
corr = plt.subplots(figsize = (8,6),dpi=256)
corr= sns.heatmap(df_heatmap,annot=True,square=True,annot_kws={'size':6,'weight':'bold', 'color':'royalblue'},fmt='.2f',cmap='cubehelix_r')
plt.title('不同发行国家的网飞影视剧评级对比')
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 从上图可以直观的看出绝大多数的网飞影视剧评级都是TV-MA和TV-14,这与前面的结论一致。

从不同发行国家的角度来看,加拿大,法国,墨西哥,西班牙,英国,美国制作发行的网飞影视剧数量更多偏向于适合成年人观看的。

埃及、印度、日本、韩国制作发行的网飞影视剧有较大的频率被评价为适合14岁以上观看的。

这与传统观念一致,欧美等西方国家的影视剧会更加开放一点,而印度日本韩国亚洲国家的影视剧则会更加保守一点。

影视剧上映年份分析

plt.figure(figsize=(8,3.5),dpi=128)
colors=['tomato','orange','royalblue','lime','pink']
for i, mtv in enumerate(df['type'].value_counts().index):
    mtv_rel = df[df['type']==mtv]['year_added'].value_counts().sort_index()
    plt.plot(mtv_rel.index, mtv_rel, color=colors[i], label=mtv)
    plt.fill_between(mtv_rel.index, 0, mtv_rel, color=colors[i], alpha=0.8)
    plt.legend()
plt.ylabel('网飞发行影视剧数量')
plt.xlabel('年份')
plt.title('网飞在不同年份上映影视剧数量')
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 可以看出网飞从2014年开始,影视剧数量开始达到一个爆发式的增长状况,尤其在2019年上映的影视剧作品最多。

19年之后受到疫情等影响上映影视作品数量又呈现慢慢下降趋势。

影视剧上映月份分析

plt.figure(figsize=(5,5),dpi=128)
colors=['tomato','orange','royalblue','lime','pink','brown']

p5=df.month_name_added.value_counts()
plt.pie(p5,labels=p5.index,autopct="%1.3f%%",shadow=True,explode=(0.2,0.1,0.08,0.06,0.04,0.02,0,0,0,0,0,0),colors=colors) #带阴影,某一块里中心的距离
plt.title('网飞影视剧上映月份分析')
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

可以看出网飞影视剧数量上映的月份较为均匀,其中七月和十二月上映的电视剧较多,正好也对应了西方的暑假和寒假,假期上映电视剧较多。

上映影视剧最少的是二月和三月。

上映影视剧的年龄分析

df_age=df.assign(age=df.year_added-df.release_year)[['type','age']]
plt.figure(figsize=(3,4),dpi=128)
sns.boxplot(x='type',y='age',width=0.8,data=df_age,orient="v") 
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

可以看出绝大部分的电影或是电视剧的上映时间和发行时间相差不大,中位数在2到3年左右,电影会稍微偏大点,这也反应了好电影比电视剧能一直流传的特点

电影电视剧的异常值都较多,极大值偏多,主要可能是网飞上映收录了不少以前的经典电视剧和电影。

影视剧类型分析

p6=df.assign(kind=df.listed_in.str.split(',')).explode('kind')['kind'].value_counts()[:15]
plt.figure(figsize=(10,4),dpi=128)
sns.barplot(y=p6.index,x=p6,orient="h")
plt.xlabel('影片数量')
plt.ylabel('影视剧类型')
plt.xticks(fontsize=10,rotation=45)
plt.title("网飞不同影视剧类型数量对比")
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

可以看清楚的看到网飞的影视剧最多的类型是国际电影,然后是戏剧,喜剧,动作冒险片,纪录片

只看美国的影视剧类型

p7=df.assign(kind=df.listed_in.str.split(',')).explode('kind').where(lambda d:d.country=='United States').dropna()['kind'].value_counts()[:12]         
plt.figure(figsize=(5,5),dpi=128)
plt.pie(p7,labels=p7.index,autopct="%1.2f%%",shadow=True,explode=(0.15,0.1,0.08,0.06,0.04,0.02,0,0,0,0,0,0),colors=['c', 'b', 'g', 'tomato', 'm', 'y', 'lime', 'w','orange','pink','grey','tan']) 
plt.title('在美国制作发行的网飞影视剧类型数量对比')
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 从上饼图得知在美国网飞上映的影视剧中,纪录片类型的最多,其次是戏剧,喜剧,家庭片,独立电影等。

网飞影视剧的导演和演员分析

p8=df.assign(directo=df.director.str.split(',')).explode('directo')['directo'].value_counts()[1:11]
p9=df.assign(cas=df.cast.str.split(',')).explode('cas')['cas'].value_counts()[1:11]

plt.subplots(1,2,figsize=(12,5),dpi=128)
plt.subplot(121)
sns.barplot(y=p8.index,x=p8,orient="h")
plt.ylabel('导演姓名')
plt.xlabel('导演影视剧的数量',fontsize=14)
plt.title("(a)网飞影视剧导演数量前十的导演")
 
plt.subplot(122)
sns.barplot(y=p9.index,x=p9,orient="h")
plt.ylabel('演员名字')
plt.xlabel('出演影视剧的数量',fontsize=14)
plt.title("(b)网飞影视剧出演数量前十的演员")
#plt.legend()
plt.tight_layout()
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

从上图得知网飞的影视剧数量前十名的导演,和出演数量前十名的演员。(只能看到名字我也不认识他们.....) ((只选取了前10,因为人名太多了图就会显得很乱))

网飞的影视剧名称的词云图

背景使用网飞的logo

Python数据分析案例12——网飞影视剧数据分析及其可视化

from wordcloud import WordCloud
import random
from PIL import Image
import matplotlib
# Custom colour map based on Netflix palette
mask = np.array(Image.open('wf.png'))

cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", ['#221f1f', '#b20710'])
text = str(list(df['title'])).replace(',', '').replace('[', '').replace("'", '').replace(']', '').replace('.', '')
wordcloud = WordCloud(background_color = 'white', width = 500,  height = 200,colormap=cmap, max_words = 150, mask = mask).generate(text)
plt.figure( figsize=(9,5),dpi=1028)
plt.imshow(wordcloud, interpolation = 'bilinear')
plt.axis('off')
plt.tight_layout(pad=0)
plt.show()

 Python数据分析案例12——网飞影视剧数据分析及其可视化

 可以看到网飞影视剧标题用词数量最高的是'LOVE','World','Day','Life','Girl'等词汇。

网飞的影视剧简介的词云图

text2=str(list(df['description'])).replace(',', '').replace('[', '').replace("'", '').replace(']', '').replace('.', '')
wordcloud = WordCloud(background_color = 'white', width = 500,  height = 200,colormap='coolwarm', max_words =30).generate(text2)
plt.figure( figsize=(8,4),dpi=512)
plt.imshow(wordcloud, interpolation = 'bilinear')
plt.axis('off')
plt.tight_layout(pad=0)
plt.show()

Python数据分析案例12——网飞影视剧数据分析及其可视化

 可以看到网飞影视剧简介用词频率最高的是'life','family','love','find','new'等词汇。


总结

通过分析网飞的八千多部影视剧的数据,我们能得到如下的一些结论:

1、网飞影视剧中电影数量占比更多,将近七层,电视剧占比30%左右

2、由于网飞是美国的公司,在其本土上的影视作品数量最多,几乎占据了网飞所有影视作品的一半, 其次是印度、英国、日本、韩国、加拿大,这五个国家的网飞影视剧也较多。

3、网飞在印度,埃及,美国地区制作拍摄影视剧是更偏向与电影。而在韩国,日本,英国更偏向于电视剧发行。

4、网飞绝大多数的影视剧评级都是TV-MA和TV-14,即适合成年人的影视剧和合适14岁以上影视剧的评级。

5、网飞影视剧的发行国家和影视剧的评级有关,欧美等西方国家的影视剧会更加开放一点,而印度日本韩国亚洲国家的影视剧则会更加保守一点。

6、2014年开始,影视剧数量开始达到一个爆发式的增长状况,尤其在2019年上映的影视剧作品最多。19年之后受到疫情等影响上映影视作品数量又呈现慢慢下降趋势。

7、网飞影视剧数量上映的月份较为均匀,其中七月和十二月上映的电视剧较多,正好也对应了西方的暑假和寒假,假期上映电视剧较多。上映影视剧最少的是二月和三月。

8、网飞的大部分的电影或是电视剧的上映时间和发行时间相差不大,电影会稍微偏大点,反应了好电影比电视剧能一直流传的特点。电影电视剧的异常值都较多,极大值偏多,主要可能是网飞上映收录了不少以前的经典电视剧和电影

9、网飞的影视剧最多的类型是国际电影,然后是戏剧,喜剧,动作冒险片,纪录片。

10、在美国网飞上映的影视剧中,纪录片类型的最多,其次是戏剧,喜剧,家庭片,独立电影等。

11、得知网飞的影视剧数量前十名的导演,和出演数量前十名的演员。

12、网飞影视剧标题用词数量最高的是'LOVE','World','Day','Life','Girl'等词汇。

13、网飞影视剧简介用词频率最高的是'life','family','love','find','new'等词汇


本文由于没有用很复杂的数学模型,得到的结论不算很高级,但是也很有效有意义了。excel可做不出来这效果...大家可以核心地学学这些画图的方法吧,毕竟漂亮的图像和有效地结论才是可视化的意义。


创作不易,看官觉得写得还不错的话点个关注和赞吧,本人会持续更新python数据分析领域的代码文章~(需要定制代码可私信)文章来源地址https://www.toymoban.com/news/detail-480377.html

到了这里,关于Python数据分析案例12——网飞影视剧数据分析及其可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

    最近总看到《消失的她》票房多少多少,《孤注一掷》票房又破了多少多少..... 于是我就想自己爬虫一下获取中国高票房的电影数据,然后分析一下。 数据来源于淘票票:影片总票房排行榜 (maoyan.com) 爬它就行。 不会爬虫的同学要这代码演示数据可以参考:数据   首先爬虫

    2024年02月08日
    浏览(60)
  • Python数据分析处理报告--实训小案例

    目录 1、实验一 1.1、题目总览 1.2、代码解析 2、实现二 2.1、题目总览 2.2、代码解析 3、实验三 3.1、题目总览 3.2、代码解析 4、实验四 3.1、题目总览 3.2、代码解析 哈喽~ 今天学习记录的是数据分析实训小案例。 就用这个案例来好好巩固一下 python 数据分析三剑客。 前期准备

    2024年02月10日
    浏览(50)
  • Python数据分析案例15——超市零售购物篮关联分析(apriori)

    啤酒和纸尿裤的故事大多数人都听说过,纸尿裤的售卖提升了啤酒的销售额。 关联分析就是这样的作用,可以研究某种商品的售卖对另外的商品的销售起促进还是抑制的作用。 案例背景 本次案例背景是超市的零售数据,研究商品之间的关联规则。使用的自然是最经典的apr

    2023年04月15日
    浏览(45)
  • Python数据分析案例11——灰色预测法预测时间序列数据

    本次案例来自2022华为杯第E题,第2小问。给定了2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度的月度数据。典型的时间序列预测。 传统的时间序列预测肯定是ARIMA模型,可以参考我之前的文章。Python统计学10——时间序列分析自回归模型(ARIMA) 现在流行的

    2024年02月06日
    浏览(61)
  • Python数据分析案例19——上市银行财务指标对比

    我代码栏目都是针对基础的python数据分析人群,比如想写个本科毕业论文,课程论文,做个简单的案例分析等。过去写的案例可能使用了过多的机器学习和深度学习方法,文科的同学看不懂,可能他们仅仅只想用python做个回归或者画个图。本期开始我会更新一些简单的案例,

    2024年02月08日
    浏览(69)
  • Python数据分析及案例详细讲解(文末赠书~)

    名字:阿玥的小东东 学习:Python、C++ 博客主页:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 数据分析 618多得图书活动来啦  本期推荐

    2024年02月08日
    浏览(61)
  • Python综合案例-小费数据集的数据分析(详细思路+源码解析)

    目录 1. 请导入相应模块并获取数据。导入待处理数据tips.xls,并显示前5行。 2、分析数据  3.增加一列“人均消费” 4查询抽烟男性中人均消费大于5的数据  5.分析小费金额和消费总额的关系,小费金额与消费总额是否存在正相关关系。画图观察。 6分析男女顾客哪个更慷慨,

    2024年02月02日
    浏览(43)
  • 【Python】数据分析案例:世界杯数据可视化 | 文末送书

    每一场体育赛事都会产生大量数据,这些数据可用于分析运动员、球队表现以及比赛中的亮点。作为分析案例,我们使用T20世界杯的数据进行分析。如果你有兴趣学习如何分析类似T20世界杯这样的体育赛事,本文将为您提供指导。在本文中,我们将使用 Python 来分析 2022年T2

    2024年02月05日
    浏览(53)
  • Python数据挖掘实用案例——自动售货机销售数据分析与应用

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月08日
    浏览(69)
  • 大数据教材推荐|Python数据挖掘入门、进阶与案例分析

      主   编: 卢滔,张良均,戴浩,李曼,陈四德 出版社: 机械工业出版社 内容提要 本书从实践出发,结合11个 “泰迪杯” 官方推出的赛题,按照赛题的难易程度进行排序,由浅入深地介绍数据挖掘技术在 商务、教育、交通、传媒、旅游、电力、制造业等行业的应用 。因

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包