Python 正确分组和聚合,以避免随机效应问题
我正在使用Movielens 100k数据集(它有关于电影类型和用户的信息——性别、年龄等),看起来像这样:Python 正确分组和聚合,以避免随机效应问题,python,pandas,statistics,pandas-groupby,Python,Pandas,Statistics,Pandas Groupby,我正在使用Movielens 100k数据集(它有关于电影类型和用户的信息——性别、年龄等),看起来像这样: item_id title release_date video_release_date \ 0 1 Toy Story (1995) 01-Jan-1995 NaN 1 4 Get Shorty (1995) 01-Jan-1995 NaN
item_id title release_date video_release_date \
0 1 Toy Story (1995) 01-Jan-1995 NaN
1 4 Get Shorty (1995) 01-Jan-1995 NaN
Adventure Animation Childrens ... Thriller War Western user_id \
0 0 1 1 ... 0 0 0 308
1 0 0 0 ... 0 0 0 308
rating timestamp age gender occupation zip_code
0 4 887736532 60 M retired 95076
1 5 887737890 60 M retired 95076
我想比较一下两种性别(男性和女性)对每种电影类型的平均评分。然而,仅仅计算所有女性用户与所有男性用户的平均评分是不够的,因为男性用户比女性用户多得多。对于这个问题,我必须设法解决我读到的所谓随机效应模型的问题
我想通过某种方式正确地分组或应用聚合来计算每个用户对该类型电影的平均评分
代码,但它无法正确捕获并解决问题:
males = data.query("gender == ['M']")
male_movie_genre = males.iloc[:, 6:24]
movie_genre_labels = ['Action', 'Adventure' , 'Animation' , 'Childrens' , 'Comedy' , 'Crime' , 'Documentary' , 'Drama' , 'Fantasy' , 'Film-Noir' , 'Horror' , 'Musical' , 'Mystery' , 'Romance' , 'Sci-Fi' , 'Thriller' , 'War' , 'Western']
males['genre'] = pd.Series(male_movie_genre[labels].columns[np.where(male_movie_genre[labels]!=0)[1]])
avg_rating_per_genre_male_users = males.groupby(['user_id', 'genre'])['rating'].mean().reset_index()
mean_rating_values_male_users = avg_rating_per_genre_male_users.groupby(['genre'])['rating'].mean()
或者有没有更好的方法在统计上做到这一点
提前非常感谢