import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
df = pd.read_table("H:\PythonData\\top250_f1.txt",encoding='utf8',delimiter='\t')
#第一问:统计评论量最多的5部电影
print(df[["rating_num","title","comment_num"]].sort_values(by='comment_num',ascending=False))
#第二问:统计2013年以后电影最多的5个地区
df_diqu = df.loc[df['init_year']>2013]
df_new = df_diqu.groupby('init_year')
df_diqu = DataFrame(df_diqu)
movie_count = df_diqu[['area']].sort_values(by='area',ascending=False)
#这里tolist将其DataFrame形式转换为Series
lists = movie_count["area"].tolist()
def all_list(a):
result = {}
for i in set(a):
result[i] = a.count(i)
return result
# 对出现较多的地区按从大到小的顺序排列
# sorted对字典的排序,zip高阶函数把数据变成(值,键)元组形式
#这里的字典排序本身是从小到大排列的,使用reverse为True使其变为从大到小排列
print(sorted(zip(all_list(lists).values(),all_list(lists).keys()),reverse=True))
#第三问:所以现在就创建一个总体热度系数(影片评论数量乘以评分),再用这个系数对影片作一个排序,
#然后找出电影类型中同时包含“剧情”和“爱情”的,系数最大的前十部,这一问写了一半没写完
list1 = df['comment_num']
list2 = df['rating_num']
dianying_redu = list1*list2
# 将电影热度计算的结果作为新的一列添加到表中
df['redu'] = dianying_redu
s1 = df[['title','genre','redu']].sort_values(by='redu',ascending=False)
2018年大数据比赛本科组 第3题 电影数据分析
最新推荐文章于 2024-03-06 13:24:24 发布