Наиболее эффективное управление большим фреймом данныхPython

Программы на Python
Ответить
Anonymous
 Наиболее эффективное управление большим фреймом данных

Сообщение Anonymous »

Представьте, что у меня есть фрейм данных под названием temp:
temp = pd.DataFrame(index = [x for x in range(0, 10)], columns = list('abcd'))
for row in temp.index:
temp.loc[row] = default_rng().choice(10, size=4, replace=False)

temp.loc[1, 'b'] = np.nan
temp.loc[3, 'd'] = np.nan

df:
Изображение

Значения имеют ту же природу, что и индексы. Моя цель — создать матрицу смежности, в которой индексы и столбцы будут temp.index, где матрица показывает, какие значения появились в строке каждого индекса.
Что я сделал:
temp2 = pd.DataFrame(index = temp.index, columns = temp.index)
for index in temp.index:
temp2.loc[index, temp.loc[index].dropna().values] = 1

temp2 = temp2.replace(np.nan, 0)

temp2:
Изображение

Это выполняет свою работу: например, temp2 показывает, что индекс строки 0 соседствует с индексами 4,5,7 и 8. Другими словами, индексы, существовавшие в строке 0 в temp, имеют значение 1 и другие имеют значение 0 в temp2.
Проблема: В реальном temp 132 тыс. индексов, и при создании temp2 возникает ошибка памяти. Каков наиболее эффективный способ добраться до temp2. Кстати, индексы имеют диапазон (132000). Кроме того, позже я собираюсь преобразовать эту матрицу в тензор Факела с размерами (2, количество ребер), который показывает ту же информацию о смежности:
adj = torch.tensor(temp2.values)
edge_index = adj.nonzero().t().contiguous()


Подробнее здесь: https://stackoverflow.com/questions/797 ... fficiently
Ответить

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

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

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

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

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