Мне нужно создать матрицу элементов пользователя, значения которой представляют собой голос пользователя за бизнес (1-5) или 0, если пользователь не голосовал за бизнес.Первые 20 строк моего CSV-файла выглядят следующим образом:
user_id business_id stars
0 bv2nCi5Qv5vroFiqKGopiw AEx2SYEUJmTxVVB18LlCwA 5
1 bv2nCi5Qv5vroFiqKGopiw VR6GpWIda3SfvPC-lg9H3w 5
2 bv2nCi5Qv5vroFiqKGopiw CKC0-MOWMqoeWf6s-szl8g 5
3 bv2nCi5Qv5vroFiqKGopiw ACFtxLv8pGrrxMm6EgjreA 4
4 bv2nCi5Qv5vroFiqKGopiw s2I_Ni76bjJNK9yG60iD-Q 4
5 _4iMDXbXZ1p1ONG297YEAQ 8QWPlVQ6D-OExqXoaD2Z1g 5
6 u0LXt3Uea_GidxRW1xcsfg 9_CGhHMz8698M9-PkVf0CQ 4
7 u0LXt3Uea_GidxRW1xcsfg gkCorLgPyQLsptTHalL61g 4
8 u0LXt3Uea_GidxRW1xcsfg 5r6-G9C4YLbC7Ziz57l3rQ 3
9 u0LXt3Uea_GidxRW1xcsfg fDF_o2JPU8BR1Gya--jRIA 5
10 u0LXt3Uea_GidxRW1xcsfg z8oIoCT1cXz7gZP5GeU5OA 4
11 u0LXt3Uea_GidxRW1xcsfg XWTPNfskXoUL-Lf32wSk0Q 3
12 u0LXt3Uea_GidxRW1xcsfg 13nKUHH-uEUXVZylgxchPA 1
13 u0LXt3Uea_GidxRW1xcsfg RtUvSWO_UZ8V3Wpj0n077w 3
14 u0LXt3Uea_GidxRW1xcsfg Aov96CM4FZAXeZvKtsStdA 5
15 u0LXt3Uea_GidxRW1xcsfg 0W4lkclzZThpx3V65bVgig 4
16 u0LXt3Uea_GidxRW1xcsfg fdnNZMk1NP7ZhL-YMidMpw 1
17 u0LXt3Uea_GidxRW1xcsfg PFPUMF38-lraKzLcTiz5gQ 3
18 u0LXt3Uea_GidxRW1xcsfg oWTn2IzrprsRkPfULtjZtQ 3
19 u0LXt3Uea_GidxRW1xcsfg zgQHtqX0gqMw1nlBZl2VnQ 1
Для этих 20 строк следующий код работает хорошо:
import pandas as pd
import numpy as np
proba_filepath = 'H:\\YelpData\\prob.csv'
df = pd.read_csv(proba_filepath, usecols=['user_id','business_id','stars'])
user_votes = df.pivot_table(index='user_id', columns='business_id', values='stars').fillna(0)
Но весь мой CSV-файл имеет 5 миллионов строк, и когдаЯ пытаюсь запустить df.pivot_table, я получаю ошибку followig: «отрицательные измерения не допускаются»
Есть ли какое-либо решение для обработки этого большого количества данных?