Как я могу использовать pivot_table для больших данных Python? - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно создать матрицу элементов пользователя, значения которой представляют собой голос пользователя за бизнес (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: «отрицательные измерения не допускаются»

Есть ли какое-либо решение для обработки этого большого количества данных?

...