Увеличить скорость обработки Excel или цикл в Python - PullRequest
0 голосов
/ 21 ноября 2018

Это мой код -

import pandas as pd
import time
from progressbar import ProgressBar
pbar = ProgressBar()
df = pd.read_excel('tt.xlsx', header=None)
text=df.values.T.tolist()
text = [[k.lower()] for l in text for k in l]
dj_count = {}
start = time.perf_counter() 
dj_count.update({''.join(i) : text.count(i) for i in pbar(text)})
time.sleep(0.01)
print ("time taken for script--", round(time.clock()-start , 2), "seconds")   
df = pd.DataFrame(list(zip(dj_count, dj_count.values())),columns=['Phrase', 'Count']).sort_values(['Count'],ascending=False)
df.head(12)

Я читаю файл xl, преобразую его в список, опускаю символы, найденные в столбце, запускаю таймер, подсчитываю самые повторяющиеся фразы в коде (реализован индикатор выполненияи время), а затем выведите 12 лучших фраз со счетом.

Когда я делаю это для строк по 20 Кб, это происходит за считанные секунды, когда доходит до 50 Кб, это занимает 2 минуты?а затем 100 тыс. занимает 10 минут, и оно увеличивается с каждым 10–20 тыс. строк в Excel.

Что я могу сделать, чтобы ускорить этот процесс?PS - у меня 8 Гб оперативной памяти и i5-4590

Вывод для строк 50k выглядит следующим образом -

100% (51819 of 51819) |##################| Elapsed Time: 0:01:56 Time:  0:01:56
time taken for script-- 116.87 seconds
__main__:12: DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
Out[2]: 
     Phrase            Count
31   bla bla bla ...   2340
214  lo yolo yolo...   1645
0    gg gg gg lol...   1615
21   bla lol gggg...   1004
6    busy busy  ...    800
68   your your y...    620
552  hi hihi hi ...    360
236  okokokokokok...   355
382  thank you ty...   325
58   djdjdjdjdj ...    305
961  gdgdgdgdgdg...    300
400  tyggtyggtyggtyg   285
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...