如何在python中从以列名作为字符串的数据帧生成稀疏矩阵

2024-04-27 02:51:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要把一个数据帧转换成稀疏矩阵。数据框看起来与此类似:(实际数据太大(大约500000行和1000列))。你知道吗

Dataframe

我需要把它转换成一个矩阵,这样矩阵的行是'id',列是'names',应该只显示有限的值。不应显示nan(以减少内存使用)。当我尝试使用pd.pivot表,为我的大数据制作矩阵花了很长时间。你知道吗

在R中,有一个名为“dMcast”的方法用于此目的。我探索了一下,但在python中找不到替代方法。我对Python还不熟悉。你知道吗


Tags: 数据方法内存目的idnames矩阵nan
1条回答
网友
1楼 · 发布于 2024-04-27 02:51:25

首先,我将分类名称列转换为索引。也许熊猫已经有这个功能了?你知道吗

names = list('PQRSPSS')
name_ids_map = {n:i for i, n in enumerate(set(names))}
name_ids = [name_ids_map[n] for n in names]

然后我会使用scipy.sparse.coo,然后可能会将其转换为另一种稀疏格式。你知道吗

ids = [1, 1, 1, 1, 2, 2, 3]
rating = [2, 4, 1, 4, 2, 2, 1]
sp = scipy.sparse.coo_matrix((rating, (ids, name_ids))
print(sp)
sp.tocsc()

我不知道有一个稀疏矩阵库可以用'R', 'S" etc这样的分类数据索引维度

相关问题 更多 >