Производительность Pandas при переходе на государственный векторPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Производительность Pandas при переходе на государственный вектор

Сообщение Anonymous »

Я хочу сделать пандас данных, который описывает состояние системы в разное время < /p>

[*] У меня есть начальное состояние, которое описывает первую строку < / li>
Каждая строка соответствует времени < /li>
Я преодолел первые два столбца для "домохозяйства" /статистики < /li>
Следующие столбцы являются параметрами состояния
На каждой итерации/строке. > Я создал несколько упрощенную версию, которая моделирует мои данные изменения: df_change
Вопрос 1
can Вы думаете о более эффективном способе генерирования матрицы, чем то, что я делаю в этом коде?
У меня есть состояние, которое я обновляю в цикле и вставлен 2
Это то, что я обнаружил, пытаясь написать пример кода для этого обсуждения. Я вижу, как в 20 раз вдвое усиливает результаты итерации цикла, если я выполняю задание в столбцы «домохозяйства» после цикла. Почему это? Я использую Python = 3.12.4 и Pandas 2.2.2. < /P>
df["product"] ="some_product"
< /code>
#%%

import numpy as np
import pandas as pd
from tqdm import tqdm
num_cols =600
n_changes = 40000

# simulate changes

extra_colums = ["n_changes","product"]
columns = [chr(i+65) for i in range(num_cols)]

state = { icol : np.random.random() for icol in columns}

change_index = np.random.randint(0,4,n_changes).cumsum()
change_col = [columns[np.random.randint(0,num_cols)] for i in range(n_changes)]
change_val= np.random.normal(size=n_changes)

# create change matrix
df_change=pd.DataFrame(index= change_index )
df_change['col'] = change_col
df_change['val'] = change_val
index = np.unique(change_index)

# %%
# Slow approach gives 5 iterations/s
df = pd.DataFrame(index= index, columns=extra_colums + columns)
df["product"] ="some_product"
for i in tqdm(index):
state.update(zip(df_change.loc[,"col"] , df_change.loc[,"val"]))
df.loc[i,columns] = pd.Series(state)

# %%
# Fast approach gives 1000 iterations/sec
df2 = pd.DataFrame(index= index, columns=extra_colums + columns)
for i in tqdm(index):
state.update(zip(df_change.loc[,"col"] , df_change.loc[,"val"]))
df2.loc[i,columns] = pd.Series(state)
df2["product"] ="some_product"``


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Государственный поток не испускает новое значение
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Государственный праздничный шахер (Великобритания) [Дублируется]
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • При переходе к домашнему представлению загрузка занимает много времени, а при переходе обратно из FullPostCell на перехо
    Anonymous » » в форуме IOS
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • C++ вектор = {vec1.begin, vec1.begin} возвращает пустой вектор
    Гость » » в форуме C++
    0 Ответы
    136 Просмотры
    Последнее сообщение Гость
  • Как объединить элемент в вектор, не вставляя его в вектор?
    Anonymous » » в форуме C++
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous

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