这篇是对电影数据的简单分析,任务是分析各类电影的烂片占比。
1、数据查看
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv('moviedata.csv')
data.head(2)
data.apply(lambda x:sum(x.isnull())) # 豆瓣评分缺失151条数据 上映日期缺失350条数据 类型缺失226条数据
data.apply(lambda x: len(x.unique())) # 共2457部电影
data.info()
2、数据清洗
# 上映日期数据清洗
data['上映年份'] = data['上映日期'].str.strip()
data['上映年份'] = data['上映年份'].str[:4]
data = data[data['上映年份'].str.len()==4]
del data['上映日期']
# 去除评分缺失值数据
data = data[data['豆瓣评分'].notnull()]
data.shape # (2007,17)
# 去除类型缺失数据
data = data[data['类型'].notnull()]
3、分析不同类型烂片占比
# 获取所有电影类型
data1 = data.copy()
data1['类型'] = data['类型'].str.replace(' ','').str.split('/')
data1['类型'].head(5)
typelist = []
for i in data1[data1['类型'].notnull()]['类型']:
typelist.extend(i)
typelist = np.unique(typelist)
typelist.shape # 共32中不同电影类型
# 获取平均评分
data['豆瓣评分'].mean() #平均评分为5.5
#获取所需数据
data2 = data[['电影名称','豆瓣评分','类型']]
data2.reset_index(drop = True,inplace=True)
# 定义烂片比例函数
def lp(data,typei):
dic = {}
datai = data[data['类型'].str.contains(typei)]
lp_rate_i = len(datai[ datai['豆瓣评分']<5.5])/len(datai)
dic['类型'] = typei
dic['总数量'] = len(datai)
dic['烂片比例'] = lp_rate_i
return dic
# 调用函数计算所有类型电影烂片比例
lst = []
for i in typelist:
lst.append(lp(data2,i))
# 获取烂片比例前十的电影类型
lp_rate = pd.DataFrame(lst)
top10 = lp_rate.sort_values(by = '烂片比例',ascending = False).iloc[:10]
top10
4、总结
数据分析的步骤:提出问题-理解数据-数据清洗-构建模型-数据可视化。
(info和describe函数可以帮助我们了解数据大致情况,直方图,箱型图和散点图可以直观的帮助我们发现异常值)。