需求
现在我们有一组从2006年到2016年1000部最流行的电影数据,需要进行分析
数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data
分析方向为:
问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
问题2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?
问题3:对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
问题4:如果我们希望统计评分最高的前10名导演,应该如何处理数据?
问题5:计算出每个导演票房最高的5部电影的总票房

# 导包
import pandas as pd
import numpy as np
# 读取数据
movies=pd.read_csv("IMDB-Movie-Data.csv")
movies.head()

问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?

# 分析:评分的平均分:对评分列(Rating)进行分析,聚合函数mean()求平均数
movies.Rating.mean()
# 分析:导演的人数:对导演列(Director)进行分析,去重.unique()后,求数量
# 注意:movies.Director返回值为pandas.core.series.Series,无count方法,需要使用shape[0]求数量;导演的戏不止一部,一定要去重
movies.Director.unique().shape[0]  #正确方法
movies.Director.count() #错误方法

问题2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?
分析:想看分布情况,画图最好,可以使用直方图,pandas封装了matplotlib,可以直接画图,但是想画好看的,还是需要导入matplotlib

import matplotlib.pyplot as plt
plt.figure(figsize=(10,6),dpi=100)  #创建画布
plt.hist(movies.Rating,bins=20)        #确定使用直方图,划分为20个柱子
plt.grid()                          #设置网格线
xticks=np.linspace(movies.Rating.min(),movies.Rating.max(),21)
plt.xticks(xticks)                  #自定义设置x轴的刻度(因为网格线是默认按照刻度划分的)
plt.show()


问题3:对于这一组电影数据,如果我们希望统计电影分类(Genre)的情况,应该如何处理数据?
分析:对电影分类列(Genre)进行分析,每部电影不是只属于一类,所以需要先对每部电影的类别进行单一化,以类别为列索引,以电影索引为行索引,只要属于该类电影,位置则为1,否则为0
需要先创建一个DateFrame,所有位置都为0,shape(电影数据.shape[0],类别.shape[0])

# 1. 获取所有电影的不重复类别列表
# 方法一:
tmp = []
for genres in movies.Genre:#print(genres.split(','))       #genres 为每一部电影的所有类别,(.spilt()返回值为:‘,’分割的字符串组成的列表)tmp.extend(genres.split(','))  # 循环结束后的tmp为所有的类别,但是由重复的(.extend() 指在原列表添加新元素)
print(set(tmp))  #set() 是集合,目的是可以获得去重后的列表# 方法二:列表生成式
tmp=[j for genres in movies.Genre for j in genres.split(',')]
genres = np.unique(tmp)  #将所有类别去重,返回array
#2.生成值都是0的数组
zeros=np.zeros(shape=(movies.shape[0],genres.shape[0]))
zeros

# 3.将数组转为DateFrame(行索引为电影的索引, 列索引为的不重复类别列表)
df=pd.DataFrame(zeros,index=movies.index,columns=genres)
df

# 4.遍历所有电影, 如果这部电影, 属于那个类别, 就在对应位置标记为1
for i in movies.index:movie=movies.loc[i]genre=movie.Genre.split(',')  #返回的是每一部电影的类别列表df.loc[i, genre] = 1     #只要是坐标为(i,genre)的位置都为1
df

#5.计算每一列的和,即为该类型电影的数量
df.sum()

问题4:如果我们希望统计评分最高的前10名导演,应该如何处理数据?
分析:按照导演进行分组movies.groupby(by=‘Director’),对每一组中的评分(Rating)求平均值(.mean()),对结果按照评分(Rating)进行排序(.sort_values(by=‘Rating’,ascending=False)),取前10(.head(10))

movies.groupby(by='Director')[['Rating']].mean().sort_values(by='Rating',ascending=False).head(10)


问题5:计算出每个导演票房最高的5部电影的总票房
分析:每个导演(按照导演Director进行分组),对每个组进行排序,选出每组前5不电影,对5部电影进行求和
注意:因为是想对每个组进行一次操作,需要提前定义函数,避免重复代码
坑:票房列(Revenue (Millions))有空值

movies.info()

# 1.去掉空值
data=movies.dropna()# 2.定义函数,传入2个参数(每个分组数据的df;选取的电影部数(本需求为n=5,方便后续进行更改部数))
def topn(df,n=5):if df.shape[0]<n:   #如该分组少于5,返回None return Noneelse:#对每个组按票房降序排序,取出前n行的票房,找出'Revenue (Millions)'列,进行求和return df.sort_values(by='Revenue (Millions)',ascending=False)[:n]['Revenue (Millions)'].sum()
#调用函数:按照导演分组,然后对每组数据应用函数topn函数,最终结果去除nan(即除去电影部数少于5的数据)
data.groupby('Director').apply(topn).dropna()

豆瓣电影数据分析案例相关推荐

  1. 基于Hadoop豆瓣电影数据分析(综合实验)

    Hadoop作为处理大数据重要的分布式架构,熟练掌握每一个组件和知识点是非常重要的.随着现代社会产生的大量信息,大数据已不仅仅是调查领域:它是改变业务实践和营销策略的强大力量.据BCG称, 大数据可以 ...

  2. 豆瓣电影数据分析--Tableau

    数据说明:原始数据为1888年-2016年上映电影数据,由于年份跨度较大且部分年份数据缺失,故抽取1990年-2015年电影数据分析. 第一部分:整体上映电影数分析 仪表盘: 感觉这个排版有点挤,显示 ...

  3. 豆瓣电影数据分析和可视化

    1 项目描述 以豆瓣电影上提供的电影数据为例,完整地展示网络数据从获取.处理到分析.可视化这一过程,纯当练手,也为感兴趣的小伙伴提供相关的技术介绍.项目代码托管在Github上,可视化网站请访问这里. ...

  4. 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

    目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...

  5. Pandas-Numpy-Matplotlib-PyEcharts——综合案例(豆瓣电影Top_250数据分析)

    豆瓣电影Top_250_Data_analysis(运行在jupyter notebook环境) 一. 数据收集.加载数据 并查看 1.1 收集数据 爬虫详细过程请点击 1.2 抓取数据问题: 1.3 ...

  6. python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...

    个人希望,通过这个完整的爬虫案例(预计总共4篇短文),能够让爬虫小白学会怎么做爬虫的开发,所以在高手们看来,会有很多浅显的废话,如果觉得啰嗦,可以跳过一些内容~ 上一篇文章给大家简单介绍了Python ...

  7. python爬取豆瓣电影并分析_爬取豆瓣电影top250提取电影分类进行数据分析

    标签(空格分隔):python爬虫 一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250 页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入 ...

  8. 大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...

    壹 猫眼Top100电影数据分析概述 从这一节开始,我们就综合利用已学到的一些分析技术来尝试做一些比较复杂的实际数据分析项目.在这些实际的项目案例中,我们将会看到一个完整的数据分析流程:数据清理--数 ...

  9. 案例:爬取豆瓣电影Top250中的电影信息

    案例:爬取豆瓣电影Top250中的电影信息 豆瓣电影Top250首页 分析请求地址 在豆瓣电影Top250首页的底部可以确定电影信息一共有10页内容,每页25个电影信息,如下图: 切换页面,可以看到浏 ...

  10. 爬虫(豆瓣电影Top250数据分析)学习笔记

    学习了有关python爬虫的内容,也算有所收获,写下第一篇博客来对所学进行一个总结,也算督促自己进行主动研究学习的第一步. 主要内容: 首先总结一下学习的主要内容: 从豆瓣获取数据 建立SQLite数 ...

最新文章

  1. SVG配电站接线系统绘制
  2. idea中build项目之后生成的target看不见
  3. c++在txt中每行写入数据和每行输出
  4. Algorithms_二叉树的层次遍历(广度优先)
  5. 解读百度Q4财报:智能云以三大关键词进位“第二引擎”,强势驱动百度未来
  6. 【机器视觉】 dev_inspect_ctrl算子
  7. 【Android】Theme.AppCompat.Light 问题
  8. SAP Fiori Tools 和对应的 CLI (Command Line Interface)
  9. 使用计算机眼睛保护方法,电脑工作者保护眼睛的22个方法
  10. C#在OpenGL编程中的应用--关于摩尔纹的研究
  11. go - 构造复杂json串
  12. java 6 基础_java基础(6)
  13. java将小写金额转换为大写的工具类
  14. 计算机课做名片怎么做,第7课制作个人小名片(教学设计)
  15. 7-10 抢楼层 (20分) ---注意歧义啊!
  16. vscode如何更换主题
  17. “1+7+N”改革工作体系介绍
  18. 武汉Java程序员工资是否还会增长?工资为什么那么高?
  19. 009.查找手机电话簿【散列表】
  20. 监控摄像头如何进行互联网网页实时直播

热门文章

  1. antd修改Tooltip背景色
  2. android3d地图,百度地图Android版 新增卫星图及3D模式
  3. 9大开源云管理平台(CMP)
  4. UE4母材质之法线贴图
  5. 什么是外汇EA呢?工作的原理又是什么呢?送给不懂外汇EA
  6. android外汇软件开发,外汇ea回测预装基于Android9.0深度定制的操作系统
  7. 2017EC-Scapegoat-(思维+优先队列贪心)
  8. Git-Clone succeeded, but checkout failed
  9. 湖北汽车工业学院校园导游咨询与最短路径
  10. Routeros花生壳域名解析脚本