Рекомендации для миграции веб-приложения прежней версии к современной платформе

Первый фильтр по подсчетам по GroupBy.transform и GroupBy.size с Series.ge для >=10 и boolean indexing [1112 ]:

df = df[df.groupby(['Experiment','Position'])['Value'].transform('size').ge(10)]

Использовать DataFrame.sort_values по нескольким столбцам с GroupBy.tail :

df1 = (df.sort_values(['Experiment','Position','Lap', 'Value'])
        .groupby(['Experiment','Position'])
        .tail(10))
print (df1)
   Experiment  Position  Lap         ID  Partition  Value
5       Expt1      2000  109  127327203          2  51.78
6       Expt1      2000  110  127327203          2  51.78
7       Expt1      2000  111  127327203          2  51.53
8       Expt1      2000  112  127327203          2  51.69
9       Expt1      2000  113  127327203          2  51.53
10      Expt1      2000  114  127327203          2  51.40
11      Expt1      2000  115  127327203          2  51.45
12      Expt1      2000  116  127327203          2  51.47
13      Expt1      2000  117  127327203          2  51.61
14      Expt1      2000  118  127327203          2  50.89

df2 = df1.groupby(['Experiment','Position'])['Value'].agg([('avg','mean'),
                                                           ('q5', lambda x: x.quantile(.5))])
print (df2)
                        avg     q5
Experiment Position               
Expt1      2000      51.513  51.53

5
задан kgrad 20 February 2009 в 15:56
поделиться

5 ответов

Осуществите рефакторинг ад из него, работающий к последовательному стилю дизайна, как предварительное мероприятие перед портированием его к платформе, самой близкой в духе к тому, чем тот стиль заканчивает тем, что был.

"Осуществляют рефакторинг", я имею в виду - представляют тесты в стратегически важных точках, единице, а также функциональный, и работа как безумный для сокращения дублирования, облокачиваясь на эти тесты.

3
ответ дан 14 December 2019 в 13:48
поделиться

Нет четкого ответа для этого вида вопроса, но моя основная подсказка должна была бы сначала читать на предмете. Прочитайте книги людей, которые знают материал, о котором они говорят.

Например, Код, Завершенный (Steve McConnell), ch. 24 Рефакторинга.

  • Сохраните код, с которого Вы запускаете

  • Сохраните рефакторинги маленькими

  • Сделайте тот, осуществляющий рефакторинг за один раз

  • Осуществите рефакторинг, когда Вы добавите стандартную программу, класс, почините дефект

  • Определите интерфейс между чистым и ужасным кодом

  • ...

Существует много других ресурсов, распечатанных и онлайн, который можно использовать. Впоследствии, если у Вас есть более конкретный вопрос, можно использовать сайты как ТАК для получения более полезного ответа, чем этот.

1
ответ дан 14 December 2019 в 13:48
поделиться

Я задал очень похожий вопрос несколько месяцев назад, некоторые ответы могли бы быть полезны для Вас:

Что лучший способ состоит в том, чтобы переместить существующее грязное веб-приложение в изящный MVC?

2
ответ дан 14 December 2019 в 13:48
поделиться

Лучший способ: Используйте существующее приложение в качестве функциональной спецификации и создайте новое приложение с нуля (с некоторым возможным cut-n-paste повторным использованием или фактическим повторным использованием класса, где это имеет смысл).

На основе моего опыта пробуя к рожку для обуви плохо записанное приложение прежней версии в новую платформу или попытка "перенести" код спама с хорошим кодом просто приводят к чему-то, что является еще более трудным и дорогим для поддержания в конечном счете.

0
ответ дан 14 December 2019 в 13:48
поделиться

это - просто мое мнение, потому что я думаю, что этот вопрос - то, что люди платят дорогим консультантам для разработки (и обычно заканчивать тем просто, что тратили впустую деньги! см. thedailywtf.com для примеров).

Я думаю не стоящий полного, переписывают, потому что во время процесса перезаписи, Вам, возможно, придется также поддержать исходное приложение*, и таким образом переписывание будет иметь движущуюся цель. лучший путь состоит в том, чтобы заплатить долг кода, поскольку Вы осуществляете рефакторинг - т.е. он возьмет 2x, 3x или даже 10x усилие реализовать одну простую опцию, просто потому что выполнение его хорошим способом включает "кучу" рефакторинга. но это усилие необходимо, поскольку долг, бывший должный в этом приложении, высок, и в конечном счете должен быть оплачен так или иначе.

это может причинить боль, но хороший вред медицины.

  • если Вам дают хороший блок времени, чтобы сделать переписывание, т.е. исходное приложение замораживается и не сохраняется (даже исправления ошибок), то это могло бы работать, поскольку полное переписывает в любую платформу, Вы считаете соответствие. но я высоко сомневаюсь, что это будет случаем в любом учреждении.
0
ответ дан 14 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: