MemoryError при объединении большого фрейма данных - PullRequest
0 голосов
/ 24 октября 2019

Я создаю инструмент, который читает поля CSV и позволяет пользователю указать столбцы, которые он хочет классифицировать, а затем классифицировать эти столбцы.

Моя проблема в том, что эти CSV-файлы достаточно велики, и при попытке объединить фреймы данных мой компьютер зависает, и я получаю MemoryError.

Я разбил фрейм данных на куски, выполнил функцию get_dummies для каждого чанка и сохранил его в списке. Это работает без проблем.

Затем я пытаюсь объединить весь список, как вы можете видеть в коде ниже.

Я также удаляю фреймы данных и список фрагментов, чтобы сэкономить память.

dummies = []
columns = self.df[self.selectedHeaders]
del self.df
chunks = (len(columns) / 10000) + 1
df_list = np.array_split(columns, chunks)
del columns

for i, df_chunk in enumerate(df_list):
    print("Getting dummy data for chunk: " + str(i))
    dummies.append(pd.get_dummies(df_chunk))

del df_list
dummies = pd.concat(dummies, axis=1)

Как видно из этого кода, я сохраняю нужные столбцы и разделяю ихна куски. Затем я запускаю функцию get_dummies для каждого чанка и сохраняю их в списке.

При запуске функции concat происходит сбой или ошибка MemoryError. Если я смогу заставить код работать и выдать эту ошибку без сбоев, я обновлю его здесь.

...