使用python进行数据分析之电影评分

安徽省大数据学院”推出校园公众号以来受到广泛师生的关注,成为师生校园生活中必不可少的一部分;学校影视社为丰富师生课余生活开阔眼界和见识,为广大师生推送相关主题的优质影片信息。在请教了相关的老师以后,现在需要从影片的数据源进行影片的分析。在老师的推荐下影视社的成员找到你了,想请你帮他们完成影片数据的分析。

/root/目录下有top250_f1.txt数据源,存放着部分影片信息。具体数据格式如下:

 

其中,数据源属性为:num(影片序号),title(电影名),direcor(导演),role(主演),init_year(上映年份),area(上映地区),genre(电影类别),rating_num(评分),comment_num(评论数量) ,comment(评论),url(链接)

要求如下:

  1. 统计评论量最多的5部电影,并将结果截图保存到答题纸任务3-1-1中。(5分)

统计评论量最多的5部电影,并将结果截图:

 我先说一下遇到的问题:当我把数据赋予索引发现前面总是多出一个逗号,我看了底层源码,研究了一下午,也没弄好,本来几行代码就结束的问题,被我弄了几个小时:

思路和问题:

首先第一步我需要做的就是把txt文件转换为csv文件,具体这部分代码是思路在上一篇博客中:

并且数据也在这篇博客中:

https://blog.csdn.net/qq_41479464/article/details/97019057

其次第二部我需要对csv文件加索引,在加索引过程,发现总是多一个逗号,让我也很无奈,关键我多加一个索引也不行,少加一个索引还是对应不上,只能往后移一位了。然后把我需要的三个列生成一个文件,三个列中需要排名的按照排名的前几个输出:

import pandas as pd
df_index = pd.read_csv("shuju.csv",header=None,names=['num','','direcor','role','init_year','area','genre','rating_num','comment_num','comment','url'])#加索引

df = df_index.to_csv("Data.csv",sep=',')#把有索引的重新写入一个文件中
df = pd.read_csv("Data.csv")#读取我刚刚转换有索引的数据

print(df[["num","area","rating_num","genre"]].to_csv("newData.csv"))#再拿到我的三个索引的数据,事实上比赛结果只要2个索引数据我弄多了,不过都一样的
df = pd.read_csv("newData.csv")#读取我指定索引的数据
print(df.sort_values(by='rating_num', ascending=False, na_position='first').head(10)) #按照题目要求对评论次数进行排序

解法二:我发现我的方法麻烦了,下面是对txt,并且分隔符进行操作的代码:

 

import numpy as np
import  pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
df = pd.read_csv("D:\data\\top250_f1.txt",encoding='utf8',delimiter='\t',sep=',')
# print(df)
# print(df["title"])
print(df[["rating_num","title","genre"]].sort_values(by='genre',ascending=False))

解法三:我发现我的方法麻烦了,下面是对txt,并且分隔符进行操作的代码:

import pandas as pd
import numpy as np
from  pandas import DataFrame,Series
df = pd.read_csv("Data.csv")
print(type(df))#查一下类型
#指定获取某一列的两种方式
print(df['comment_num'])
print(df.role)
#生成新的一列
df_new = DataFrame(df,columns=['title','rating_num', 'comment_num','index'])
#为某一列不存在的值赋值
df_new['index'] = range(0,250)
print(df_new['index'])

#指定其中的列的值的改变,比如某个值为空值,下面这句话的意思就是,把index这列的索引为1和2的赋值为100,200,其他的行默认为pandas填充
df_new['index'] = pd.Series([100,200],index=[1,2])
print(df_new['index'])
#按照新生成的列其中的某个列的值进行排序,这里是电影的评分
print(df_new.sort_values(by='rating_num',ascending=False).head(20))

读取文件的操作:

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值