其他分享
首页 > 其他分享> > 重新排列熊猫数据框以创建二维评分矩阵

重新排列熊猫数据框以创建二维评分矩阵

作者:互联网

我正在尝试根据yelp数据集构建基于项目的推荐系统.我设法将数据处理到一定程度,使我获得了在给定状态下审查过餐厅的所有用户给出的评分.最终,我想得到一个评分矩阵,其中一个餐厅位于一个轴上,用户位于另一个轴上,中间的评分(1-5)(缺失评论为零).

现在,DF看起来像这样:

               user_id               review_id             business_id  stars
0  Xqd0DzHaiyRqVH3WRG7  15SdjuK7DmYqUAj6rjGowg  vcNAWiLM4dR7D2nwwJ7nCA      5
1  Xqd0DzHaiyRqVH3WRG7  15SdjuK7DmYqUAj6rjGowg  vcNAWiLM4dR7D2nwwJ7nCA      5
2  H1kH6QZV7Le4zqTRNxo  RF6UnRTtG7tWMcrO2GEoAg  vcNAWiLM4dR7D2nwwJ7nCA      2
3  zvJCcrpm2yOZrxKffwG  -TsVN230RCkLYKBeLsuz7A  vcNAWiLM4dR7D2nwwJ7nCA      4
4  KBLW4wJA_fwoWmMhiHR  dNocEAyUucjT371NNND41Q  vcNAWiLM4dR7D2nwwJ7nCA      4
5  zvJCcrpm2yOZrxKffwG  ebcN2aqmNUuYNoyvQErgnA  vcNAWiLM4dR7D2nwwJ7nCA      4
6  Qrs3EICADUKNFoUq2iH  _ePLBPrkrf4bhyiKWEn4Qg  vcNAWiLM4dR7D2nwwJ7nCA      1

但我希望它看起来像这样:

(4间餐厅x 5位使用者)

0 4 3 4 5
3 3 3 2 1 
1 2 3 4 5
0 5 3 3 4 

解决方法:

我认为您需要pivotfillna

print (df.pivot(index='business_id', columns='user_id', values='stars').fillna(0))

如果:

ValueError: Index contains duplicate entries, cannot reshape

然后使用pivot_table

print (df.pivot_table(index='business_id', columns='user_id', values='stars').fillna(0))
user_id                 H1kH6QZV7Le4zqTRNxo  KBLW4wJA_fwoWmMhiHR  \
business_id                                                        
vcNAWiLM4dR7D2nwwJ7nCA                    2                    4   

user_id                 Qrs3EICADUKNFoUq2iH  Xqd0DzHaiyRqVH3WRG7  \
business_id                                                        
vcNAWiLM4dR7D2nwwJ7nCA                    1                    5   

user_id                 zvJCcrpm2yOZrxKffwG  
business_id                                  
vcNAWiLM4dR7D2nwwJ7nCA                    4  

但是pivot_table使用aggfunc,默认值是aggfunc = np.mean(如果重复).样本的更好解释是heredocs.

标签:yelp,recommendation-engine,pandas,dataframe,python
来源: https://codeday.me/bug/20191118/2029252.html