1 Star 0 Fork 2

summer5/programRecommendation

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
gruopBy.py 9.06 KB
一键复制 编辑 原始数据 按行查看 历史
caijiahao 提交于 2018-04-12 23:09 . 完成相似度计算
#-*- coding: UTF-8 -*-
#分组聚类划分并保存
#按照连续剧聚类保存
def groupBySerialClassification(dataset):
import pandas as pd;
import os
data = pd.read_excel(dataset)
groups = data.groupby(data[u'连续剧分类']);
output = './dataset/SerialClassification/';
#判断是否存在根目录并创建该目录
isExists = os.path.exists(output)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(output)
print output + ' 创建成功'
else:
# 如果目录存在则不创建,并提示目录已存在
print output + ' 目录已存在'
#遍历并保存
for name,group in groups:
name = name.replace(' ','')
name = name.replace('/', '')
group.to_excel(output+name+'.xlsx',index=False);
#按照电视类别分类
def groupByLabel(dataset):
import pandas as pd;
import os
data = pd.read_excel(dataset)
groups = data.groupby(data[u'分类名称']);
output = './dataset/label/';
# 判断是否存在根目录并创建该目录
isExists = os.path.exists(output)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(output)
print output + ' 创建成功'
else:
# 如果目录存在则不创建,并提示目录已存在
print output + ' 目录已存在'
# 遍历并保存
for name, group in groups:
name = name.replace('\\', '')
name = name.replace('/', '')
group.to_excel(output + name + '.xlsx');
#dataset = './dataset/labelMapToValue.xlsx';
def dealTheLabel(dataset):
import pandas as pd;
data = pd.read_excel(dataset)
for i in range(len(data)):
str = data.iloc[i:i + 1, 7:8].values[0][0]
str = str.replace('\\', '')
if(str == '家庭影院动作片'):
str = '家庭影院动作'
if(str == '电视剧场 电视剧场大陆剧场'):
str = '电视剧场大陆剧场'
data.iloc[i:i + 1, 7:8] = str
data.to_excel('./dataset/dealTheOfLabel.xlsx', index=False)
def groupByUser(dataset):
import pandas as pd;
import os
data = pd.read_excel(dataset)
groups = data.groupby(data[u'用户号']);
output = './dataset/user/';
# 判断是否存在根目录并创建该目录
isExists = os.path.exists(output)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(output)
print output + ' 创建成功'
else:
# 如果目录存在则不创建,并提示目录已存在
print output + ' 目录已存在'
# 遍历并保存
#index= 0
#result = pd.read_excel('./dataset/statisticWatch.xlsx')
for name, group in groups:
print name
#result = statisticInfoFormWatch(data=group,index=index,uid=str(name),result=result)
group.to_excel(output + str(name) + '.xlsx',index=False);
#result.to_csv('./dataset/statisticWatch.csv', index=False)
def groupByDianBoUser(dataset):
import pandas as pd;
import os
data = pd.read_excel(dataset)
groups = data.groupby(data[u'用户号']);
output = './dataset/dianBoUser/';
# 判断是否存在根目录并创建该目录
isExists = os.path.exists(output)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(output)
print output + ' 创建成功'
else:
# 如果目录存在则不创建,并提示目录已存在
print output + ' 目录已存在'
# 遍历并保存
index = 0
result = pd.read_excel('./dataset/statisticMoney.xlsx')
for name, group in groups:
print name
result = statisticInfoFormMoney(data=group,index=index,uid=str(name),result=result)
#group.to_excel(output + str(name) + '.xlsx', index=False);
result.to_csv('./dataset/statisticMoney.csv', index=False)
#从每个用户的观看记录表得到某个分类下兴趣度和,名称列表,描述列表
def statisticInfoFormWatch(data,index,uid,result):
import pandas as pd;
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#data = pd.read_excel(dataset)
list =[u'体育竞技',u'家庭影院',u'家庭影院其他',u'家庭影院动作',u'家庭影院动画片',u'家庭影院历史',u'家庭影院喜剧',u'家庭影院恐怖',u'家庭影院悬念',u'家庭影院战争',
u'家庭影院文艺',u'家庭影院灾难',u'家庭影院爱情',u'家庭影院犯罪',u'家庭影院科幻',u'家庭影院警匪',u'广告',u'教学教育纪录片',u'新闻时事',u'生活服务',
u'电视剧场',u'电视剧场其他',u'电视剧场大陆剧场',u'电视剧场日韩剧场',u'电视剧场欧美剧场',u'电视剧场港台剧场',u'科学教育',u'科学教育纪录片',u'综艺娱乐']
for label in list:
shaixuan = data[data[u'影片类型'] == label]
miaosu = ""
name = ""
sum = 0.1
if len(shaixuan) == 0:
result.ix[index:index + 1, 2:3] = 0.1
S = set([])
length = len(S)
#提取该用户所有记录描述
for i in range(0,len(data)):
value = str(data.iloc[i:i + 1, 3:4].values[0][0])
value = value.replace(' ', '')
value = value.replace('\n', '')
value = value.replace('\t', '')
name = name+value+";"
value = str(data.iloc[i:i + 1, 10:11].values[0][0])
value = value.replace(' ', '')
value = value.replace('\n', '')
value = value.replace('\t', '')
#描述去重
S.add(value)
if length<len(S):
miaosu = miaosu + value + ";"
length = length+1
else:
S = set([])
length = len(S)
for i in range(0, len(shaixuan)):
name = name + str(shaixuan.iloc[i:i + 1, 3:4].values[0][0]) + ";"
value = str(shaixuan.iloc[i:i + 1, 10:11].values[0][0])
value = value.replace(' ','')
value = value.replace('\n', '')
value = value.replace('\t', '')
#描述去重
S.add(value)
if length < len(S):
miaosu = miaosu + value + ";"
length = length + 1
sum = sum + shaixuan.iloc[i:i + 1, 13:14].values[0][0]
new = pd.DataFrame({u"用户号": str(uid), u"影片类型": label, u"兴趣度": sum, u"名称": name, u"描述": miaosu},index=[str(index)])
result = result.append(new,ignore_index=True)
index = index+1
return result
#result.to_csv('./dataset/watchUser/'+str(uid)+'.csv',index=False)
#从每个用户的收费记录表得到某个分类下兴趣度和,名称列表,描述列表
def statisticInfoFormMoney(data,index,uid,result):
import pandas as pd;
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
list =[u'体育竞技',u'家庭影院',u'家庭影院其他',u'家庭影院动作',u'家庭影院动画片',u'家庭影院历史',u'家庭影院喜剧',u'家庭影院恐怖',u'家庭影院悬念',u'家庭影院战争',
u'家庭影院文艺',u'家庭影院灾难',u'家庭影院爱情',u'家庭影院犯罪',u'家庭影院科幻',u'家庭影院警匪',u'广告',u'教学教育纪录片',u'新闻时事',u'生活服务',
u'电视剧场',u'电视剧场其他',u'电视剧场大陆剧场',u'电视剧场日韩剧场',u'电视剧场欧美剧场',u'电视剧场港台剧场',u'科学教育',u'科学教育纪录片',u'综艺娱乐']
#result = pd.DataFrame({u"用户号": "", u"影片类型": "", u"兴趣度": "", u"名称": "", u"描述": ""},index=["0"])
for label in list:
shaixuan = data[data[u'节目类型'] == label]
sum = 0.0
if len(shaixuan) == 0:
sum = 0.0
else:
for i in range(0, len(shaixuan)):
sum = sum + float(shaixuan.iloc[i:i + 1, 5:6].values[0][0])
new = pd.DataFrame({u"用户号": str(uid), u"影片类型": label, u"金额": sum},index=[str(index)])
result = result.append(new,ignore_index=True)
index = index+1
return result
#dataset = './dataset/dealTvTableAll.xlsx';
#dealTheLabel(dataset=dataset)
#dataset = './dataset/dealTheOfLabel.xlsx'
#groupByLabel(dataset=dataset);
#groupBySerialClassification(dataset=dataset);
#dataset = './dataset/train.xlsx'
#groupByUser(dataset=dataset)
dataset = './dataset/mergeStatisticMoneyAndStatistic.xlsx'
groupByUser(dataset=dataset)
#dataset = './dataset/mergedianboAndDealDianBo.xlsx'
#groupByDianBoUser(dataset=dataset)
#import pandas as pd
#data = pd.read_excel('./dataset/user/11260.xlsx')
#result = pd.read_excel('./dataset/statisticWatch.xlsx')
#statisticInfoFormWatch(data=data,uid=11260,index=0,result=result)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/summer5/programRecommendation.git
[email protected]:summer5/programRecommendation.git
summer5
programRecommendation
programRecommendation
master

搜索帮助