基于用户观看时长和影视时长…
1、基于用户观看时长和影视时长,计算每个用户在不同时段对每个节目的观看权重。
例如:
(1)用户A在上午看了20分钟的节目A,节目A的影视时长为40分钟,则可以定义用户A对节目A的偏好权重为20/40=0.5。
(2)用户B在上午分别看了20分钟、30分钟的节目A,节目A的影视时长为40分钟,则可以定义用户B对节目A的偏好权重为(20+30)/(40+40)=0.625。
2、统计用户在不同时段观看节目的总时长,并绘制出图形(形式不限)。
3、统计用户观看节目的标签词频,并绘制词云。
1.首先对文本筛选出我们要的部分
fi = open("data.csv","r")
fo = open("result4.txt","w")
txt = fi.readlines()#读取全文本
ls = [] #存储第一次筛选后的数据
x = [] #存储第二次筛选后的数据
for row in txt: #对csv文件逐行读取
ls.append(row.strip("\n").split(",")) #去除末尾的换行符并将每个列表用逗号分隔
for line in ls[1:]: #从第一个开始读取到结束
x.append(line[6]) #读取第标签所在数值
fo.write("{}".format(x))
fi.close()
fo.close()
此步骤得到此文件:
2.将标签成功提取后,简单几步将文件生成词云,中文需要用到jieba库进行分词:(先上代码)
import jieba #中文文本分词才要用的第三方库
import wordcloud
# from scipy.misc import imread
# mask = imread("aixin2.jpg")
f = open("F:\\迅雷下载\\py学期大作业\\result3.txt","r")
txt = f.read()#一次性读入变量txt里
# mask=mask,
pic = wordcloud.WordCloud(width = 1000,font_path="msyh.ttc",height=700)
pic.generate("".join(jieba.lcut(txt)))
pic.to_file("pywcloud.png")#生成词云文件
f.close()
生成词云图片如下:
在其他网站
搜索到另外的做法(numpy系统是python的一种开源的数值计算扩展,这种工具可以用来存储和处理大型矩阵。这里在处理的时候将给出形状的图片表示为一个大型矩阵,再有颜色的地方来进行填词==(导包 :import numpy as np)==。导包之后需添加一个遮罩层,遮罩层就是用来限制生成图片的形状 。)
先生成result3文件,上一步有操作:
from wordcloud import WordCloud
import PIL .Image as image
import numpy as np
import jieba
def trans_CN(text):
word_list = jieba.cut(text)
# 分词后在单独个体之间加上空格
result = " ".join(word_list)
return result;
with open("F:\\迅雷下载\\py学期大作业\\result3.txt") as fp:
text = fp.read()
text = trans_CN(text)
# print(text)
mask = np.array(image.open("F:\\迅雷下载\\py学期大作业\\aixin2.jpg"))#这里是用一张爱心图作为背景
wordcloud = WordCloud(
mask=mask,
font_path = "C:\\Windows\\Fonts\\msyh.ttc"
).generate(text)
image_produce = wordcloud.to_image()
image_produce.show()
效果如图:
链接:https://pan.baidu.com/s/1p1aDhTy9eiJ0bjY_7hCe9A
提取码:quv7 (源文件,有需要练习的拿走)