IMDB电影数据分析实践
根据IMDB5000部电影数据集进行下列数据分析:
- 数据准备:读取数据并查看数据的基本信息
- 数据清洗:缺失值处理,重复值处理,处理后“干净”数据的基本信息。
- 数据分析及可视化展示:
电影出品国及地区和演员票房的情况分析:
绘制电影出品数量排名前10位的国家及地区的条形图;绘制票房前十的电影中喜爱男 1 号,男 2 号,男 3 号的人数的分组条形图。电影数量的分析:
按年份统计每年电影总数量、彩色影片数量和黑白影片数量并绘制折线图(在同一个坐标系中绘制)。电影类型的分析:
绘制不同类型的电影数量条形图和饼图。电影评分统计及电影评分相关因素分析:
找出评分排名前 20 位电影的片名和评分;绘制所有影片评分与受欢迎程度的关系散点图。
文章目录
一、数据准备:
读取数据并查看数据的基本信息
1. 导入numpy 包和 pandas 包,使用 read_csv 方法读取本地 csv 数据;
import pandas as pd
import numpy as np
movies = pd.read_csv('D:\\gaojie\\movie_metadata.csv',encoding='utf—8')
2. 查看数据的基本内容、结构
-
打印前五行观察
movies.head (5)
通过前五行,可以看出数据集有28列,以及具体的列名。同时也可以发现,前五行里就有空值较多的行,说明我们需要对数据作处理。
-
输入 .shape 看看有多少行多少列
movies.shape
可以看到,数据集的维度是5043行,28列。
-
查看列的数据类型
movies.dtypes
可以看出,数据集中涉及数据的列默认为 float64 和 int64,无需对数据做类型转换。而其他列均为 object 类型,后面需要考虑是否做类型转换。
二、数据清洗
数据清洗也叫数据预处理,因为大多时候获取的数据并不符合我们的数据分析的标准这时候我们就需要对数据进行预处理,使之数据更加规整有序方便我们下一步的分析。数据清洗通常需要数据分析大部分时间,但是我觉得也是有一定的步骤的,我将它大致分为六部曲: 选择子集→列名重命名→缺失数据处理→数据类型转换→数据排序→异常值处理
1. 缺失数据处理
-
先通过isnull函数看一下是否有空值,结果是有空值的地方显示为True,没有的显示为False
print(movies.isnull())
可以看到有空值的行非常之多,在分析之前我们需要处理对行进行取舍。
-
再通 过 isnull().sum() 直接看每一列有多少空值
print(movies.isnull().sum())
可以看到,只有极少列没有空值,有的列空值异常之多。因此我们处理的时候只能选择让重点的列没有空值,删除行而不要删除列。
-
为了方便我们这里选择直接删除有缺失值的行
print ('删除缺失值前数据集大小 ',movies.shape ) # how=‘any’ 在给定的任何一列中有缺失值就删除 movies = movies.dropna(how ='any' ) print ('删除缺失值后大小 ',movies.shape )
可以看到一千多行有缺失值的数据被删除掉了,对数据的损耗还是非常大的。最好是只删除重要列有缺失值的行,或者按缺失值的比例删除。规定n行有多少个缺失值时再删除。
-
这里我们选择删除电影名重复的行:
movies.drop_duplicates(subset=["movie_title"],keep='first',inplace=True) print(movies