Какие есть варианты для ускорения комбинаторики в Python
Всем привет! Подскажите какие есть варианты для ускорения комбинаторики в Python, например можно как то использовать Cython или подобное? Приведу синтетический пример, в реале же данных больше.
ссылка на данные data.xlsx (https://yadi.sk/i/0B4NRBLvdhj2-A)
import pandas as pd
import itertools
from itertools import combinations
import datetime
from datetime import datetime
start_time = datetime.now()
# загрузка данных excel
df=pd.read_excel('data.xlsx')
# суммирует все столбцы
my_list=[(pd.Series(df.loc[:,list(i)].sum(axis=1), name='_'.join(df.loc[:,list(i)].columns))) for i in list(itertools.combinations(df.columns,4))]
final_df=pd.concat(my_list,axis=1)
print(final_df)
# замеряем скорость скрипта
end_time = datetime.now()
print('Скорость выполнения скрипта: {}'.format(end_time - start_time))
A_B_C_D A_B_C_E A_B_C_F A_B_C_G ... V_W_X_Z V_W_Y_Z V_X_Y_Z W_X_Y_Z
0 5540 5550 5560 5570 ... 530 540 550 560
1 5544 5554 5564 5574 ... 534 544 554 564
2 5548 5558 5568 5578 ... 538 548 558 568
3 5552 5562 5572 5582 ... 542 552 562 572
4 5556 5566 5576 5586 ... 546 556 566 576
... ... ... ... ... ... ... ... ...
2996 17524 17534 17544 17554 ... 12514 12524 12534 12544
2997 17528 17538 17548 17558 ... 12518 12528 12538 12548
2998 17532 17542 17552 17562 ... 12522 12532 12542 12552
2999 17536 17546 17556 17566 ... 12526 12536 12546 12556
3000 17540 17550 17560 17570 ... 12530 12540 12550 12560
[3001 rows x 14950 columns]
Скорость выполнения скрипта: 0:00:14.608986