如何从列名为字符串的数据框中创建 python 中的稀疏矩阵
How to make a sparse matrix in python from a data frame having column names as string
我需要将数据框转换为稀疏矩阵。数据框看起来类似于:(实际数据太大(大约 500 000 行和 1000 列))。
我需要将其转换为矩阵,使矩阵的行为 'id',列为 'names',并且应仅显示有限值。不应显示任何 nans(以减少内存使用)。当我尝试使用 pd.pivot_table 时,为我的大数据制作矩阵需要很长时间。
在 R 中,有一个名为 'dMcast' 的方法用于此目的。我探索了但无法在 python 中找到替代方案。我是 python 的新手。
首先,我会将分类名称列转换为索引。也许 pandas 已经有了这个功能?
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
这样的分类数据索引维度
我需要将数据框转换为稀疏矩阵。数据框看起来类似于:(实际数据太大(大约 500 000 行和 1000 列))。
我需要将其转换为矩阵,使矩阵的行为 'id',列为 'names',并且应仅显示有限值。不应显示任何 nans(以减少内存使用)。当我尝试使用 pd.pivot_table 时,为我的大数据制作矩阵需要很长时间。
在 R 中,有一个名为 'dMcast' 的方法用于此目的。我探索了但无法在 python 中找到替代方案。我是 python 的新手。
首先,我会将分类名称列转换为索引。也许 pandas 已经有了这个功能?
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