安徽省大数据学院”推出校园公众号以来受到广泛师生的关注,成为师生校园生活中必不可少的一部分;学校影视社为丰富师生课余生活开阔眼界和见识,为广大师生推送相关主题的优质影片信息。在请教了相关的老师以后,现在需要从影片的数据源进行影片的分析。在老师的推荐下影视社的成员找到你了,想请你帮他们完成影片数据的分析。
/root/目录下有top250_f1.txt数据源,存放着部分影片信息。具体数据格式如下:
其中,数据源属性为:num(影片序号),title(电影名),direcor(导演),role(主演),init_year(上映年份),area(上映地区),genre(电影类别),rating_num(评分),comment_num(评论数量) ,comment(评论),url(链接)
要求如下:
- 统计评论量最多的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))
读取文件的操作: