Эффективное заполнение предварительно выделенной памяти pandas.DataFramePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Эффективное заполнение предварительно выделенной памяти pandas.DataFrame

Сообщение Anonymous »

Мне нужно добавить много строк (1 440 000 000) в pandas.DataFrame.
Я заранее знаю количество строк, поэтому могу предварительно выделите его, а затем заполните его данными в стиле C.
Пока лучшая идея, которая у меня есть, довольно уродлива:

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

N = 1000000
sham = [-1] * (N * len(THRESHOLDS) * len(OBJECTS))  # 1440000000
DATA = pd.DataFrame(
{
'threshold': pd.Categorical(sham, categories=THRESHOLDS, ordered=True),
'expected': pd.Series(sham, dtype=np.float16),
'iteration': pd.Series(sham, dtype=np.int32),
'analyser': pd.Categorical(sham, categories=ANALYSERS),
'object': pd.Categorical(sham, categories=OBJECTS),
},
columns=['threshold', 'expected', 'iteration', 'analyser', 'object'])
ptr = 0
for t in THRESHOLDS:
for o in OBJECTS:
for a in ANALYSERS:
for i in range(N):
DATA.iloc[ptr] = t, expectedMonteCarlo(o, a, t), i, a, o
ptr += 1
Вопрос в том, как я могу сделать свой код чище? Я имею в виду особенно:
  • < li>предварительно выделить ДАННЫЕ, не раздувая их с помощью фиктивного списка,
  • добавить строки к предварительно выделенным ДАННЫМ без использования индекса?
Основная проблема — эффективность использования памяти. В противном случае я бы добавил записи в объект list, а затем преобразовал его в pandas.DataFrame.

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

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

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

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

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

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

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