Python 正确分组和聚合,以避免随机效应问题

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

我正在使用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  

  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()
或者有没有更好的方法在统计上做到这一点

提前非常感谢