movielens数据集读取、转换

【1】从https://grouplens.org/datasets/movielens/上下载数据集,包含6000用户,4000多电影的100万条数据

【读数据】

import pandas as pd
import numpy as np
users_Name=['user_id','gender','age','work','zip']
ratings_Name=['user_id','movies_id','ratings','timeStamp']
movie_Name=['movie_id','title','calss']
users=pd.read_table('ml-1m/users.dat',sep='::',header=None,names=users_Name)
ratings=pd.read_table('ml-1m/ratings.dat',sep='::',header=None,names=ratings_Name)
movies=pd.read_table('ml-1m/movies.dat',sep='::',header=None,names=movie_Name)
print('用户表记录数:',len(users),'评分表记录数:',len(ratings),'电影表记录数:',len(movies))
print('**********用户表前五条记录**********')
print(users.head(5))
print('**********评分表前五条记录**********')
print(ratings.head(5))
print('********电影表前五条记录************')
print(movies.head(5))
 
 

【只需要ratings数据,dataFrame转换成字典,字典的值为产品列表】

   #先转成array

d1=np.array(ratings[['user_id','movies_id']])
#再转成列表
listdata=d1.tolist()
data={}
for i in range(len(listdata)):
    #获取列表中的第一个元素 用户Id
    userid=listdata[i][0]
    movieid=listdata[i][1]
    #判断用户id是否存在
    if userid not in data.keys():
        #设置字典值为列表,允许有重复
        # 如果没重复,可以写为data.setdefault(userid,{})[movieid]=1
        # data.setdefault(userid,[]).append(movieid)
        data.setdefault(userid, []).append(movieid)
    else:
        data[userid].append(movieid)
# for user,movie in data.items():
#     print('用户ID:',user,'       产品列表:',movie,'\n')
# with open('data.txt', 'wb') as f:
#    pickle.dump(data,f)
print('done')
【划分训练集和测试集】
两种方法见:http://mp.csdn.net/postedit/79582513


猜你喜欢

转载自blog.csdn.net/brave_jcc/article/details/79575105