对数据集“Netflix电影电视剧及用户观影数据“的分析处理和可视化

一、寻找数据集

from kaggle:《Netflix Movies and TV Shows》 -------- Shivam Bansal

二、数据集分析

1、首先,通过pandas模块导入csv包

import pandas as pd
data = pd.read_csv('movie_data.csv')
In [3] data    #数据内容num_critic_for_reviews  duration    gross   genres  num_voted_users num_user_for_reviews    language    country budget  title_year  imdb_score
0   723.0   178.0   760505847.0 Action|Adventure|Fantasy|Sci-Fi 886204  3054.0  English USA 237000000.0 2009.0  7.9
1   302.0   169.0   309404152.0 Action|Adventure|Fantasy    471220  1238.0  English USA 300000000.0 2007.0  7.1
2   602.0   148.0   200074175.0 Action|Adventure|Thriller   275868  994.0   English UK  245000000.0 2015.0  6.8
3   813.0   164.0   448130642.0 Action|Thriller 1144337 2701.0  English USA 250000000.0 2012.0  8.5
4   NaN NaN NaN Documentary 8   NaN NaN NaN NaN NaN 7.1
... ... ... ... ... ... ... ... ... ... ... ...
5038    1.0 87.0    NaN Comedy|Drama    629 6.0 English Canada  NaN 2013.0  7.7
5039    43.0    43.0    NaN Crime|Drama|Mystery|Thriller    73839   359.0   English USA NaN NaN 7.5
5040    13.0    76.0    NaN Drama|Horror|Thriller   38  3.0 English USA 1400.0  2013.0  6.3
5041    14.0    100.0   10443.0 Comedy|Drama|Romance    1255    9.0 English USA NaN 2012.0  6.3
5042    43.0    90.0    85222.0 Documentary 4285    84.0    English USA 1100.0  2004.0  6.6
5043 rows × 11 columns

2、然后我们首先处理数据集中IMDB电影评分的数据:

In [4] score1,score2,score3,score4=0,0,0,0
for i in range(5043):if(data.imdb_score[i]<5):score1=score1+1;elif(data.imdb_score[i]>5 and data.imdb_score[i]<7):score2=score2+1;elif (data.imdb_score[i]>7 and data.imdb_score[i] < 9):score3 = score3 + 1;else :score4 = score4 + 1;

导入绘图包,这里我使用的是matplotlib

import matplotlib.pyplot as plt
labels = '0-5', '5-7', '7-9', '>9'    #定义各板块名称
sizes = score1,score2,score3,score4   #各板块数据
colors = 'yellowgreen', 'gold', 'lightskyblue', 'lightcoral' # 设定颜色
explode = 0, 0.1, 0, 0  #板块间的间隙
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=50)
plt.axis('equal')
plt.show()


3、再统计1987-2020的中国电影,并做成折线图

from pandas import Series,DataFrame
import numpy as np
x = np.arange(1987,2020)  #定义折线图X坐标
y=[0]*33   #定义折线图y坐标
k=0
for i in data.country:    #遍历数据集中的国家项if(i=='China'):m=int(data.title_year[k])-1987y[m]=y[m]+1k=k+1
plt.figure(figsize=(10, 4), dpi=100)     #定义画布
plt.plot(x, y)
plt.show()         #显示图像


4、接下里统计各国电影的数量

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False    #解决中文显示问题
plt.figure(figsize=(8,6))
labels=list(data.country.unique())       #使用pandas内置函数进行分类计数
fracs=[]
for i in labels:fracs.append(data.loc[data.country==i].shape[0])    #labels列表存的是国家,fracs列表存的是对应国家的个数

导入画世界地图所需的包

from pyecharts import options as opts
from pyecharts.charts import Map,Geo
import os

作图

data = []
for index in range(len(labels)):city_ionfo=[labels[index],fracs[index]]data.append(city_ionfo)c = (Map().add("Netflix全球电影分布",data, "world").set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(),visualmap_opts=opts.VisualMapOpts(max_=200)    #因为美国和其他国家的数量差距过大,所以这里将最大值设为200(美国为3807),方便观察。))
c.render_notebook()      #将图片在jupyter中显示出来# os.system("render.html") # 用html打开

5、我们再来统计各类电影的占比

PS:这里我采用依次计数的方式,有更好的方法请告诉我。。。。

action,adventure,fantasy,sciencefiction,mystery,family,thriller,documentary,romance,comedy,animation,musical,western,history,drama,crime=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
for i in data.genres:if("Action" in i):action=action+1;if("Adventure" in i):adventure=adventure+1;if("Fantasy" in i):fantasy=fantasy+1;if("Sci-Fi" in i):sciencefiction=sciencefiction+1;if("Mystery" in i):mystery=mystery+1;if("Family" in i):family=family+1;if("Thriller" in i):thriller=thriller+1;if("Documentary" in i):documentary=documentary+1;if("Romance" in i):romance=romance+1;if("Comedy" in i):comedy=comedy+1;if("Animation" in i):animation=animation+1;if("Musical" in i):musical=musical+1;if("Western" in i):western=western+1;if("History" in i):history=history+1;if("Drama" in i):drama=drama+1;if("Crime" in i):crime=crime+1;
print(action,adventure,fantasy,sciencefiction,mystery,family,thriller,documentary,romance,comedy,animation,musical,western,history,drama,crime)out:1153 923 610 616 500 546 1411 121 1107 1872 242 132 97 207 2594 889
print("                      电影类型饼状图")         #输出饼状图,同上
labels ='action','adventure','fantasy','sciencefiction','mystery','family','thriller','documentary','romance','comedy','animation','musical','western','history','drama','crime'
sizes = action,adventure,fantasy,sciencefiction,mystery,family,thriller,documentary,romance,comedy,animation,musical,western,history,drama,crime
colors = 'yellowgreen', 'gold', 'lightskyblue', 'lightcoral','yellowgreen', 'gold', 'lightskyblue', 'lightcoral','yellowgreen', 'gold', 'lightskyblue', 'lightcoral','yellowgreen', 'gold', 'lightskyblue', 'lightcoral'
explode = 0, 0, 0, 0,0, 0, 0, 0,0, 0, 0, 0,0, 0, 0, 0
plt.pie(sizes, radius=2.5,explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=50)
plt.show()


5、再我们统计netflix上电影的预算以及对应的总票房和观众的认可度
data=data.loc[data.budget.notnull()] #剔除掉数据集中budget属性为空的元组

y1,y2=[],[]
for i in range(100,125):y1.append(data.budget[i])y2.append(data.gross[i])
x = np.arange(25)  #定义折线图X坐标
plt.figure(figsize=(8,4))   #定义画布
plt.plot(x, y1, '.-',label='预算/投入')   #添加第一条折线到图中
plt.plot(x, y2, '.-',label='票房/收入')
plt.legend()
plt.xlabel('个数')
plt.ylabel('/十亿美元')
plt.ylim((0,1000000000))
plt.title('Netflix电影的预算以及对应的总票房')
plt.show()


6、最后我们分析数据集中,观众点赞数的数据
①总数据集观众点赞数饼状图分布

data = pd.read_csv('movie_metadata.csv')
score1,score2,score3,score4,score5=0,0,0,0,0
for i in range(5043):if(data.num_voted_users[i]<2000):score1=score1+1;elif(data.num_voted_users[i]>2000 and data.num_voted_users[i]<10000):score2=score2+1;elif (data.num_voted_users[i]>10000 and data.num_voted_users[i] <20000):score3 = score3 + 1;elif (data.num_voted_users[i]>20000 and data.num_voted_users[i] <50000):score4 = score4 + 1;    elif(data.num_voted_users[i]>50000):score5 = score5 + 1;
labels1 ='2千以下', '2千-1万','1万-2万', '2万-5万', '5万以上'
sizes = score1,score2,score3,score4,score5
colors = 'yellowgreen', 'gold', 'lightskyblue', 'lightcoral','gold'
explode = 0, 0, 0, 0,0
plt.pie(sizes, explode=explode, labels=labels1, colors=colors, autopct='%1.1f%%', shadow=True, startangle=50)
plt.axis('equal')
plt.title('观众点赞饼状图')
plt.show()

②从数据集中随机抽取100个数据作成散点图

import random
list,d2=[],[]
for i in range(100):list.append(random.randint(1, 4551))
for i in list:d2.append(data.num_user_for_reviews[i])
d1 = np.random.randn(100)
plt.scatter(d1,d2)
plt.title("观众点赞/投票数散点图")

数据集分析完毕

对数据集“Netflix电影电视剧及用户观影数据“的分析处理和可视化相关推荐

  1. Python爬取44130条用户观影数据,分析挖掘用户与电影之间的隐藏信息!

    1.前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习 ...

  2. 庭审出示用户观影信息是否违法?律师表示如是举证行为 不涉及侵犯隐私

    [TechWeb]6月2日,备受关注的"<庆余年>超前点播"案一审宣判,法院认定"超前点播" 模式本身并无不妥,但不应损害会员已有权益.因此判定爱奇 ...

  3. 【大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析

    [大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析-哔哩哔哩https://b23.tv/saIKtBH flask web框架,数据使用requests模块爬取数据, ...

  4. Netflix将利用人工智能技术改善手机用户观影体验

    BI中文站 3月3日报道 你用智能手机观看Netflix视频时的体验将得到明显改善. 美国视频流媒体服务和视频出租公司Netflix将利用人工智能技术改善视频编码方式,根据不同移动设备的屏幕尺寸来优化 ...

  5. 高群耀:移动电影院2.0四大功能实现了用户“观影社交化”

    移动电影院推出一年之后,我们走向了移动电影院2.0版本,不仅是随时随地观影移动化,电影本身还有很强烈的社交属性,观影社交化,谈恋爱看电影,和家人看电影,和大家看电影,移动电影院的2.0版使得电影院被移 ...

  6. 漫威电影宇宙的正确观影顺序

    按照电影上映顺序 第一阶段 <钢铁侠> 2008.04 <无敌浩克> 2008.08 <钢铁侠2> 2010.05 <雷神> 2011.05 <美 ...

  7. 22部漫威电影大合集和观影顺序

    [原文链接]:https://blog.tecchen.xyz ,博文同步发布到博客园. 由于精力有限,对文章的更新可能不能及时同步,请点击上面的原文链接访问最新内容. 欢迎访问我的个人网站:http ...

  8. python实战教程:7万网站用户行为大数据的分析

    今天的教程有点长,耐心点看完,你会有收获的.基础薄弱的伙伴,不清楚的可以留言,要视频学习教程的,可以留言! 7万网站用户行为大数据分析 数据分析师,是通过数据对业务团队决策.公司管理层的决策进行&qu ...

  9. 基于内容的电影推荐:用户画像

    基于内容的电影推荐:用户画像 用户画像构建步骤: 根据用户的评分历史,结合物品画像,将有观影记录的电影的画像标签作为初始标签反打到用户身上 通过对用户观影标签的次数进行统计,计算用户的每个初始标签的权 ...

最新文章

  1. Mozilla开源了VR框架A-Frame
  2. ssh白名单_阿里云服务器ssh白名单
  3. python中str和input_python中input()与raw_input()的区别分析
  4. python 加锁_Python 共享变量加锁、释放详解
  5. myeclipse创建项目 我们的第一个代码
  6. 去年下半年blog文章导入完毕
  7. 在Cygwin上安装编辑器vim 【ZT】
  8. Muse-UI +Vue2.0框架开发环境搭建
  9. idea中push到github或gitee过程中的常见错误记录
  10. PYTHON Image Module中Pix[x,y]详解
  11. shopex PHP Notice,Shopex系统配置文件config.php说明
  12. java 实现双人五子棋
  13. 【云驻共创】华为云AI之用Python定制我的《本草纲目女孩》
  14. Blender(二)bpy模块
  15. wps文字 用WPS如何演示制作英语有声读物
  16. 天津高清卫星影像数据包下载
  17. 华为鸿蒙2.0系统电脑安装步骤,华为鸿蒙系统2.0怎么安装,鸿蒙系统2.0安装教程...
  18. java web上传视频文件_怎样使用javaweb实现上传视频和下载功能?
  19. STM32F030F4P6低功耗模式
  20. Discuz!NT 代码阅读笔记(8)--DNT的几个分页存储过程解析

热门文章

  1. 分布式体系结构:非集中式结构
  2. centos8 安装docker
  3. Rasa 聊天机器人框架使用流程
  4. 18周岁以下签订租赁合同有效吗?租赁合同签订日期规定是怎样的?
  5. 美国AMC数学竞赛的含金量如何?
  6. 我的电脑中的搜索功能用不了怎么办?
  7. JS 连接MQTT的方法(mqtt.js的使用方法)
  8. 10年跳槽2次,薪资翻10倍,我就是互联网公司中年老白兔
  9. Java从接触到放弃(二十一)--网络编程
  10. python爬取唐诗