# coding: utf-8
# ## 探索电影数据集
#
# 在这个项目中,你将尝试使用所学的知识,使用 `NumPy`、`Pandas`、`matplotlib`、`seaborn` 库中的函数,来对电影数据集进行探索。
#
# 下载数据集:
# [TMDb电影数据](https://s3.cn-north-1.amazonaws.com.cn/static-documents/nd101/explore+dataset/tmdb-movies.csv)
#
#
# 数据集各列名称的含义:
# <table>
# <thead><tr><th>列名称</th><th>id</th><th>imdb_id</th><th>popularity</th><th>budget</th><th>revenue</th><th>original_title</th><th>cast</th><th>homepage</th><th>director</th><th>tagline</th><th>keywords</th><th>overview</th><th>runtime</th><th>genres</th><th>production_companies</th><th>release_date</th><th>vote_count</th><th>vote_average</th><th>release_year</th><th>budget_adj</th><th>revenue_adj</th></tr></thead><tbody>
# <tr><td>含义</td><td>编号</td><td>IMDB 编号</td><td>知名度</td><td>预算</td><td>票房</td><td>名称</td><td>主演</td><td>网站</td><td>导演</td><td>宣传词</td><td>关键词</td><td>简介</td><td>时常</td><td>类别</td><td>发行公司</td><td>发行日期</td><td>投票总数</td><td>投票均值</td><td>发行年份</td><td>预算(调整后)</td><td>票房(调整后)</td></tr>
# </tbody></table>
#
# **请注意,你需要提交该报告导出的 `.html`、`.ipynb` 以及 `.py` 文件。**
#
#
# ---
#
# ---
#
# ## 第一节 数据的导入与处理
#
# 在这一部分,你需要编写代码,使用 Pandas 读取数据,并进行预处理。
#
# **任务1.1:** 导入库以及数据
#
# 1. 载入需要的库 `NumPy`、`Pandas`、`matplotlib`、`seaborn`。
# 2. 利用 `Pandas` 库,读取 `tmdb-movies.csv` 中的数据,保存为 `movie_data`。
#
# 提示:记得使用 notebook 中的魔法指令 `%matplotlib inline`,否则会导致你接下来无法打印出图像。
# In[1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt # 不要忘记 pyplot
import seaborn as sb
get_ipython().run_line_magic('matplotlib', 'inline')
movie_data = pd.read_csv('tmdb-movies.csv')
# ---
#
# **任务1.2: ** 了解数据
#
# 你会接触到各种各样的数据表,因此在读取之后,我们有必要通过一些简单的方法,来了解我们数据表是什么样子的。
#
# 1. 获取数据表的行列,并打印。
# 2. 使用 `.head()`、`.tail()`、`.sample()` 方法,观察、了解数据表的情况。
# 3. 使用 `.dtypes` 属性,来查看各列数据的数据类型。
# 4. 使用 `isnull()` 配合 `.any()` 等方法,来查看各列是否存在空值。
# 5. 使用 `.describe()` 方法,看看数据表中数值型的数据是怎么分布的。
#
#
# In[2]:
movie_data.info()
# ---
#
# **任务1.3: ** 清理数据
#
# 在真实的工作场景中,数据处理往往是最为费时费力的环节。但是幸运的是,我们提供给大家的 tmdb 数据集非常的「干净」,不需要大家做特别多的数据清洗以及处理工作。在这一步中,你的核心的工作主要是对数据表中的空值进行处理。你可以使用 `.fillna()` 来填补空值,当然也可以使用 `.dropna()` 来丢弃数据表中包含空值的某些行或者列。
#
# 任务:使用适当的方法来清理空值,并将得到的数据保存。
# In[3]:
#结合 movie_data 缺失值分布的特点,为尽量保证数据的完整性,
#首先删除缺失较为严重且无关紧要的列:'homepage','tagline','keywords','production_companies'
#进而删除轻微缺失的行:‘imdb_id’,‘cast’,‘director’,‘overview’,‘genres’
new_data = movie_data.drop(columns = ['homepage','tagline','keywords','production_companies'])
new_data.dropna(axis = 0, inplace = True)
new_data.shape[0]
#movie_data 中一共10866项,经缺失值处理后剩余10725项,得到了较好的保留
# In[4]:
new_data.head()
# ---
#
# ---
#
# ## 第二节 根据指定要求读取数据
#
#
# 相比 Excel 等数据分析软件,Pandas 的一大特长在于,能够轻松地基于复杂的逻辑选择合适的数据。因此,如何根据指定的要求,从数据表当获取适当的数据,是使用 Pandas 中非常重要的技能,也是本节重点考察大家的内容。
#
#
# ---
#
# **任务2.1: ** 简单读取
#
# 1. 读取数据表中名为 `id`、`popularity`、`budget`、`runtime`、`vote_average` 列的数据。
# 2. 读取数据表中前1~20行以及48、49行的数据。
# 3. 读取数据表中第50~60行的 `popularity` 那一列的数据。
#
# 要求:每一个语句只能用一行代码实现。
# In[5]:
#读取数据表中名为 id、popularity、budget、runtime、vote_average 列的数据。
new_data[['id','popularity','budget','runtime','vote_average']].head(10)
# In[6]:
#读取数据表中前1~20行以及48、49行的数据。
new_data.loc[list(range(20))+[47,48]]
# In[7]:
#读取数据表中第50~60行的 popularity 那一列的数据。
new_data.loc[49:59, 'popularity']#切片,含尾
# # ---
#
# **任务2.2: **逻辑读取(Logical Indexing)
#
# 1. 读取数据表中 **`popularity` 大于5** 的所有数据。
# 2. 读取数据表中 **`popularity` 大于5** 的所有数据且**发行年份在1996年之后**的所有数据。
#
# 提示:Pandas 中的逻辑运算符如 `&`、`|`,分别代表`且`以及`或`。
#
# 要求:请使用 Logical Indexing实现。
# In[8]:
#读取数据表中 popularity 大于5 的所有数据。
new_data[new_data['popularity'] > 5].head()
# In[9]:
#读取数据表中 popularity 大于5 的所有数据且发行年份在1996年之后的所有数据。
new_data[(new_data['popularity'] >5) & (new_data['release_year'] >= 1996)].head()
# ---
#
# **任务2.3: **分组读取
#
# 1. 对 `release_year` 进行分组,使用 [`.agg`](http://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.core.groupby.DataFrameGroupBy.agg.html) 获得 `revenue` 的均值。
# 2. 对 `director` 进行分组,使用 [`.agg`](http://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.core.groupby.DataFrameGroupBy.agg.html) 获得 `popularity` 的均值,从高到低排列。
#
# 要求:使用 `Groupby` 命令实现。
# In[10]:
#对 release_year 进行分组,使用 .agg 获得 revenue 的均值。
new_data.groupby(new_data['release_year'])['revenue'].mean().head()
# In[11]:
#对 director 进行分组,使用 .agg 获得 popularity 的均值,从高到低排列。
new_data.groupby(new_data['director'])['popularity'].mean().sort_values(ascending=False).head()
# ---
#
# ---
#
# ## 第三节 绘图与可视化
#
# 接着你要尝试对你的数据进行图像的绘制以及可视化。这一节最重要的是,你能够选择合适的图像,对特定的可视化目标进行可视化。所谓可视化的目标,是你希望从可视化的过程中,观察到怎样的信息以及变化。例如,观察票房随着时间的变化、哪个导演最受欢迎等。
#
# <table>
# <thead><tr><th>可视化的目标</th><th>可以使用的图像</th></tr></thead><tbody>
# <tr><td>表示某一属性数据的分布</td><td>饼图、直方图、散点图</td></tr>
# <tr><td>表示某一属性数据随着某一个变量变化</td><td>条形图、折线图、热力图</td></tr>
# <tr><td>比较多个属性的数据之间的关系</td><td>散点图、小提琴图、堆积条形图、堆积折线图</td></tr>
# </tbody></table>
#
# 在这个部分,你需要根据题目中问题,选择适当的可视化图像进行绘制,并进行相应的分析。对于选做题,他们具有一定的难度,你可以尝试挑战一下~
# **任务3.1:**对 `popularity` 最高的20名电影绘制其 `popularity` 值。
# ---
# **任务3.2:**分析电影净利润(票房-成本)随着年份变化的情况,并简单进行分析。
# In[12]:
movie_data.set_index('original_title')['popularity'].sort_values()[-20:].plot(
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip基于python数据分析-探索电影数据集.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于python数据分析-探索电影数据集.zip (3个子文件)
code_20105
Explore Movie Dataset.ipynb 495KB
Explore Movie Dataset.py 13KB
Explore Movie Dataset.html 753KB
共 3 条
- 1
资源评论
- 浮名黑码2024-05-30终于找到了超赞的宝藏资源,果断冲冲冲,支持!
土豆片片
- 粉丝: 1859
- 资源: 5869
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 案例分析:研发人员绩效和薪酬管理的困境.doc
- 企业中薪酬管理存在的问题分析及对策.doc
- 员工年度薪酬收入结构分析报告.doc
- 薪酬分析报告.docx
- 西门子S7-1200控制四轴伺服程序案例: 1.内容涵盖伺服,步进点动,回原,相对定位,绝对定位,速度模式控制 特别适合学习伺服和步进的朋友们 PTO伺服轴脉冲定位控制+速度模式控制+扭矩模式; 2
- 企业公司薪酬保密协议.doc
- 薪酬保密制度 (1).docx
- 薪酬保密管理规定制度.doc
- 薪酬保密制度.docx
- 薪酬保密协议书.docx
- 薪酬保密承诺书.docx
- 薪酬管理制度.doc
- 员工工资薪酬保密协议.docx
- 员工工资保密暂行管理条例.docx
- 员工薪酬保密协议.doc
- 1Redis基础认识与安装.html
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功