在稀疏矩阵中跟踪熊猫的行/列

时间:2020-02-05 12:15:40

标签: python pandas sparse-matrix

我有一个用户,商店和购买数据框:

    user     shop  median spend
0  00012   McDonald       3.950
1  00012   Subway         6.000
2  00012  Netflix        10.990
3  00012    Tesco         3.635
4  0007b     Lidl        51.870

我想将其转换为稀疏矩阵(用于推荐系统)。为此,用户和商店需要转换为数字:

# getting categorical codes

data['user_id'] = data['user'].astype("category").cat.codes
data['shop_id'] = data['shop'].astype("category").cat.codes

print(data.head)

    user     shop  user_id  shop_id
0  00012   McDonald      0       99
1  00012   Subway        0      101
2  00012  Netflix        0      224
3  00012    Tesco        0      307
4  0007b     Lidl        1      182

然后我将其转换为稀疏矩阵

sparse_item_user = sparse.csr_matrix((data['median spend'].astype(float), (data['shop_id'], data['user_id'])))

<351x35993 sparse matrix of type '<class 'numpy.float64'>'
    with 630819 stored elements in Compressed Sparse Row format>

现在,当我将其转换回数据框时,商店是行,客户是列。

问题是,我不知道哪个商店对应哪一行。您可以在我以前的数据帧打印中看到,麦当劳是shop_id 99。这是否与下面的矩阵中的99行相对应?还是应该用data['shop'].unique()填充行,即按照原始数据帧中出现的顺序填充?与客户相同-矩阵列是我的客户按原始df中出现的顺序排列吗?

pd.DataFrame(sparse_item_user.todense())

Data

0 个答案:

没有答案