Зачастую в реальных условиях приходится конструировать таблицы оценок, выставляемых пользователями за товары, из первичных данных следующего вида (идентификаторы пользователей - uid??, идентификаторы товаров pid??):
uidX1 pidX1 оценкаX1
uidX2 pidX2 оценкаX2
uidX3 pidX3 оценкаX3
Чтобы получить необходимую для бизнес-модели таблицу рейтингов, где по строкам расположены пользователи, а по столбцам оценки соответствующих продуктов можно воспользоваться функционалом библиотек NumPy и SciPy следующим образом. Загрузить данные, используя функцию NumPy load_text, а затем столбцы из индексов (первые два) и значений (третий) подать на вход функции csc_matrix из модуля scipy.sparse, которая в сжатом виде хранит разреженную матрицу с заданными ненулевыми элементами в определенных позициях.
data = np.loadtxt(r'имя_файла')
ij = data[:, :2].astype(int)
values = data[:, 2]
rates = sparse.csc_matrix((values, ij.T)).astype(float)
Для преобразования матрицы в полную форму можно воспользоваться методом toarray:
rates = rates.toarray()