Мой фрейм данных содержит около 650 тысяч уникальных строк. Для каждой строки мне нужно получить значение из базы данных. Я использую a для l oop, но время выполнения катастрофически велико, около 25 часов . Как ускорить выполнение кода? Я предполагаю, что вам нужно распараллелить выполнение с помощью joblib или numba. Но наличие запроса sql внутри тела l oop сбивает с толку.
for x in tqdm_notebook(range(len(table))):
good = table.iloc[x, 0]
store = table.iloc[x, 1]
start = table.iloc[x, 6]
query = f"""
SELECT
good_id,
store_id,
AVG(sale) AS avg_sale,
SUM(sale) AS sum_sale,
MAX(sale) AS max_sale,
MIN(sale) AS min_sale
FROM my_table
WHERE good_id = {good}
AND store_id = {store}
AND date_id BETWEEN DATEADD(MONTH, -2, '{start}') AND DATEADD(MONTH, -1, '{start}')
GROUP BY good_id, store_id
"""
temp = pd.read_sql(query, connection)
if not temp.empty:
table.iloc[x, 13] = temp['avg_sale'].values
table.iloc[x, 14] = temp['sum_sale'].values
table.iloc[x, 15] = temp['max_sale'].values
table.iloc[x, 16] = temp['min_sale'].values