Поэтому я использую Omnet ++, симулятор сети с дискретным временем, для моделирования различных сетевых сценариев. В какой-то момент можно продолжить обработку выходной статистики Omnet ++ и сохранить ее в файле .csv.
Интересно, что для каждого времени (vectime
) есть значение (vecvalue
). Эти vectime / vecvalues хранятся в одной ячейке такого CSV-файла. При импорте в Pandas Dataframe я получаю что-то вроде этого.
In [45]: df1[['module','vectime','vecvalue']]
Out[45]:
module vectime vecvalue
237 Tictoc13.tic[1] [2.542245319062, 3.066965320033, 4.78723506093... [0.334535581612, 0.390459633837, 0.50391696492...
249 Tictoc13.tic[4] [2.649303071938, 6.02527384362, 21.42434044990... [2.649303071938, 1.654927100273, 3.11051622577...
261 Tictoc13.tic[3] [4.28876656608, 16.104821448604, 19.5989313700... [2.245250432259, 3.201153958979, 2.39023520069...
277 Tictoc13.tic[2] [13.884917126016, 21.467263378748, 29.59962616... [0.411703261805, 0.764708518232, 0.83288346614...
289 Tictoc13.tic[5] [14.146524815409, 14.349744576545, 24.95022463... [1.732060647139, 8.66456377103, 2.275388282721...
Например, если мне нужно построить каждое значение vectime / vecvalue для каждого модуля, сегодня я делаю следующее ...
%pylab
def runningAvg(x):
sigma_x = np.cumsum(x)
sigma_n = np.arange(1,x.size + 1)
return sigma_x / sigma_n
for row in df1.itertuples():
t = row.vectime
x = row.vecvalue
x = runningAvg(x)
plot(t,x)
... чтобы получить это ...
Мой вопрос: что лучше с точки зрения производительности:
- использовать данные как есть, то есть использовать эти массивы внутри каждой ячейки, проходя по DF для построения каждого массива;
- преобразовать эти массивы в pd.Series. В этом случае, что было бы лучше, чтобы модуль по-прежнему оставался индексным?
- выиграл бы я, если бы эти массивы были перенесены в pd.Series?
спасибо!