MovieLens是一组从20世纪90年代末到21世纪初的由MovieLens用户提供的电影评分数据。这些数据其中包括了电影评分、电影元数据(类型风格和年代)以及关于用户的人口统计学数据(年龄、邮编、性别和职业)。基于机器学习算法的推荐系统一般都会对此类数据感兴趣,这里将会告诉读者如何对数据进行切片切块以满足实际需求。
内容提要
- 载入pandas格式数据,并将不同文件的数据基于相同列进行合并
- 运用pandas对用户评分求平均值(基于不同的电影),比较性别差异(对电影的偏好),同一电影评分的分歧性
- 附录:pandas中整合数据常用pivot方法例程
1.载入数据
import pandas as pd
path = 'C:\\...\\pydata-book-1st-edition\\ch02\\movielens'
spl = '/'
path = spl.join(path.split('\\'))
unames = ['user_id', 'gender', 'age', 'occupation', 'zip']
users = pd.read_table(path+'/users.dat', sep='::', header = None, names=unames)
rnames = ['user_id', 'movie_id', 'rating', 'timestamp']
ratings = pd.read_table(path+'/ratings.dat', sep='::', header=None, names = rnames)
mnames = ['movie_id', 'title', 'genres']
movies = pd.read_table(path+'/movies.dat', sep = '::', header=None, names = mnames)
首先分别从3个文件中读取数据,并存放于users, ratings, movies三个pandas的table格式中
同样的,数据可以从该书的github网页上获取:https://github.com/wesm/pydata-book/tree/1st-edition/ch02/movielens
数据呈现如下:
movies[:5]
Out[60]:
movie_id title genres
0 1 Toy Story (1995) Animation|Children's|Comedy
1 2 Jumanji (1995) Adventure|Children's|Fantasy
2 3 Grumpier Old Men (1995) Comedy|Romance
3 4 Waiting to Exhale (1995) Comedy|Drama
4 5 Father of the Bride Part II (1995) Comedy
ratings[:5]
Out[61]:
user_id movie_id rating timestamp
0 1 1193 5 978300760
1 1 661