Seaborn Lineplot High CPU;очень медленный по сравнению с матплотлибом - PullRequest
3 голосов
/ 16 мая 2019

У меня есть следующий фрейм данных.

In [12]: dfFinal
Out[12]: 
           module                                            vectime                                           vecvalue
1906  client1.tcp  [1.1007512, 1.1015024, 1.1022536, 1.1030048, 1...  [0.0007512, 0.0007512, 0.0007512, 0.0007512, 0...
1912  client2.tcp  [1.10079784, 1.10159568, 1.10239352, 1.1031913...  [0.00079784, 0.00079784, 0.00079784, 0.0007978...
1918  client3.tcp  [1.10084448, 1.10168896, 1.10258008, 1.1036111...  [0.00084448, 0.00084448, 0.00089112, 0.0010310...

Я хочу построить график timeSeries vecvalue против vectime для каждого модуля.

Результат следующий: enter image description here

Для этого я могу сделать следующее:

1) Matplotlib

start = datetime.datetime.now()

for row in dfFinal.itertuples():
    t = row.vectime
    x = row.vecvalue
    x = runningAvg(x)
    plot(t,x)

total = (datetime.datetime.now() - start).total_seconds()
print("Total time: ",total)

Для этого требуется 0.07005 секунд.

2) Сиборн

start = datetime.datetime.now()

for row in dfFinal.itertuples():
    t = row.vectime
    x = row.vecvalue
    x = runningAvg(x)
    DF = pd.DataFrame({'x':x, 't':t})
    sns.lineplot(x='t', y='x', data=DF)

total = (datetime.datetime.now() - start).total_seconds()
print("Total time: ",total)

Для этого требуется 19.157463 секунд.

Почему такая огромная разница? Что я делаю так неправильно, что так долго обрабатывается довольно маленький DF?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...