Я хочу сделать пандас данных, который описывает состояние системы в разное время < /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
Производительность Pandas при переходе на государственный вектор ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение