Мне нужно добавить много строк (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.
Мне нужно добавить много строк (1 440 000 000) в pandas.DataFrame. Я заранее знаю количество строк, поэтому могу предварительно выделите его, а затем заполните его данными в стиле C. Пока лучшая идея, которая у меня есть, довольно уродлива: [code]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 [/code] Вопрос в том, [b]как я могу сделать свой код чище?[/b] Я имею в виду особенно: [list] < li>предварительно выделить ДАННЫЕ, не раздувая их с помощью фиктивного списка, [*]добавить строки к предварительно выделенным ДАННЫМ без использования индекса? [/list] Основная проблема — эффективность использования памяти. В противном случае я бы добавил записи в объект list, а затем преобразовал его в pandas.DataFrame.
Я не очень эксперт в том, как работают процессоры, но можно представить, что было легче установить куски памяти на ноль, чем не нулевые значения, и поэтому это может быть незначительно быстрее.
Мой набор данных предназначен для прогнозирования количества кухонь определенного района Сеула на основе количества домохозяйств, состоящих из одного человека.
Проблема: количество строк в необработанных данных составляет более 100 000. Но мне нужно...
У меня есть микросервис с очень высокой пропускной способностью, работающий в AWS в ECS с использованием OpenJDK Java17. Я тестирую переход ZGC с G1GC и замечаю, что ZGC не будет использовать всю выделенную кучу (10 г), а только 20% ее (2 г). Из-за...
Я столкнулся с проблемой утечки памяти при использовании библиотеки Eigen. У меня есть следующая функция:
Eigen::Matrix func(){
Eigen::Matrix A;
// code to define A
Eigen::Matrix B;
// code to define B
return KroneckerProd(A, B);
}
Это код, который я пишу для домашнего задания с системой онлайн-проверки.
Работает на приведенном примере и моих собственных коротких примерах, но система проверки говорит, что она работала неправильно и завершилась из-за сигнала 11. р>
#include...