Почему мой код выдает ошибку памяти, хотя раньше он работал?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой код выдает ошибку памяти, хотя раньше он работал?

Сообщение Anonymous »

У меня есть скрипт Python, в котором есть данные секвенирования РНК с 54 000 генов, и мне нужно выполнить попарную корреляцию с каждой парой генов:

Код: Выделить всё

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import networkx as nx
from networkx.algorithms.community import greedy_modularity_communities
%matplotlib tk
Data = RNA seq data
Data = pd.read_csv(Data)
Correlation = Data.corr(method = 'pearson', numeric_only = "False")
print(Correlation)
Filtered = Correlation[(Correlation.abs() >= 0.8)]
Filtered = Filtered.replace(1.0, np.nan)
Раньше этот код работал, но когда я запускаю его сейчас, я получаю следующую ошибку:

Код: Выделить всё

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
Cell In[52], line 1
----> 1 Filtered = Filtered.replace(1.0, np.nan)

File C:\ProgramData\anaconda3\Lib\site-packages\pandas\core\generic.py:7909, in NDFrame.replace(self, to_replace, value, inplace, limit, regex, method)
7903         new_data = self._mgr.replace_regex(
7904             to_replace=to_replace,
7905             value=value,
7906             inplace=inplace,
7907         )
7908     else:
-> 7909         new_data = self._mgr.replace(
7910             to_replace=to_replace, value=value, inplace=inplace
7911         )
7912 else:
7913     raise TypeError(
7914         f'Invalid "to_replace" type: {repr(type(to_replace).__name__)}'
7915     )

File C:\ProgramData\anaconda3\Lib\site-packages\pandas\core\internals\base.py:228, in DataManager.replace(self, to_replace, value, inplace)
226 assert not lib.is_list_like(to_replace)
227 assert not lib.is_list_like(value)
--> 228 return self.apply_with_block(
229     "replace",
230     to_replace=to_replace,
231     value=value,
232     inplace=inplace,
233     using_cow=using_copy_on_write(),
234 )

File C:\ProgramData\anaconda3\Lib\site-packages\pandas\core\internals\managers.py:354, in BaseBlockManager.apply(self, f, align_keys, **kwargs)
352         applied = b.apply(f, **kwargs)
353     else:
--> 354         applied = getattr(b, f)(**kwargs)
355     result_blocks = extend_blocks(applied, result_blocks)
357 out = type(self).from_blocks(result_blocks, self.axes)

File C:\ProgramData\anaconda3\Lib\site-packages\pandas\core\internals\blocks.py:728, in Block.replace(self, to_replace, value, inplace, mask, using_cow)
723         return [self] if inplace else [self.copy()]
725 elif self._can_hold_element(value):
726     # TODO(CoW): Maybe split here as well into columns where mask has True
727     # and rest?
--> 728     blk = self._maybe_copy(using_cow, inplace)
729     putmask_inplace(blk.values, mask, value)
730     if not (self.is_object and value is None):
731         # if the user *explicitly* gave None, we keep None, otherwise
732         #  may downcast to NaN

File C:\ProgramData\anaconda3\Lib\site-packages\pandas\core\internals\blocks.py:660, in Block._maybe_copy(self, using_cow, inplace)
658     blk = self.copy(deep=deep)
659 else:
--> 660     blk = self if inplace else self.copy()
661 return blk

File C:\ProgramData\anaconda3\Lib\site-packages\pandas\core\internals\blocks.py:645, in Block.copy(self, deep)
643 refs: BlockValuesRefs | None
644 if deep:
--> 645     values = values.copy()
646     refs = None
647 else:

MemoryError: Unable to allocate 22.3 GiB for an array with shape (54735, 54735) and data type float64
Почему? У меня 95 ГБ доступной оперативной памяти, поэтому я думаю, что распределение должно быть возможным.


Подробнее здесь: https://stackoverflow.com/questions/792 ... previously
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»