2018年大数据比赛本科组 第3题 电影数据分析

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)







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值