Как рассчитать наклон ч / б 2 балла? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть df следующим образом:

ContextID   EscRF_P2P_Volt_V    StepID  Time_Elapsed
7289972 12.45421    1   0
7289972 12.45421    1   0.055
7289972 12.45421    2   0.156
7289972 12.45421    2   0.487
7289972 12.45421    2   1.477
7289972 12.45421    2   2.477
7289972 13.18681    2   3.477
7289972 12.45421    2   4.487
7289972 12.45421    2   5.993
7289972 12.45421    2   6.545
7289972 12.45421    5   7.983
7289972 12.45421    5   8.993
7289972 13.18681    5   9.993
7289972 13.18681    5   10.393
7289972 12.45421    5   11.993
7289972 12.45421    5   13.093
7289972 12.45421    5   13.384
7289972 12.45421    5   14.388
7289972 12.45421    5   15.386
7289972 12.45421    5   16.386
7289972 12.45421    5   17.396
7289972 12.45421    5   18.406
7289972 12.45421    5   19.396
7289972 11.72161    5   20.396
7289972 12.45421    5   21.396
7289972 12.45421    7   22.386
7289972 12.45421    7   23.456
7289972 13.18681    7   24.404
7289972 12.45421    12  25.443
7289972 13.18681    12  26.443
7289972 11.72161    12  27.443
7289972 12.45421    12  28.453
7289972 13.18681    12  29.443
7289972 12.45421    12  30.443
7289972 12.45421    12  31.443
7289972 12.45421    15  32.472
7289972 27.10623    15  33.444
7289972 27.10623    16  34.443
7289972 22.71062    16  35.443
7289972 22.71062    17  36.443
7289972 622.7106    19  37.503
7289972 622.7106    19  38.513
7289972 622.7106    19  39.503
7289972 622.7106    19  40.503
7289972 622.7106    19  41.503
7289972 622.7106    19  42.503
7289972 622.7106    19  43.503
7289972 622.7106    19  44.503
7289972 622.7106    19  45.532
7289972 622.7106    19  46.502
7289972 622.7106    19  47.501
7289972 622.7106    19  48.501
7289972 622.7106    19  49.501
7289972 622.7106    19  50.501

Я хотел бы рассчитать диапазон Time_Elapsed, разделить его на 10 частей и вычислить наклон каждой части, сx, являющийся Time_Elapsed & y, являющийся EscRF_P2P_Volt_V столбцом.

Я знаю, что могу определить наклон как:

def slope(x1, y1, x2, y2):
    m = (y2-y1)/(x2-x1)
    return m

Но я не могу его реализоватьправильно.

Есть предложения относительно того, как это можно сделать?

Выход:

Выход для первого интервала между 0-5 должен быть примерно таким:

slope = (12.45421-12.45421)/(5-0)

Для второго интервала между5-10

slope = (13.18681-12.45421)/(10-5)

и т. Д. ...

Если в Time_Elapsed нет точного значения, как, например, 10, то в этом случае мы беремEscRF_P2P_Volt_V значение на 9.993

1 Ответ

1 голос
/ 20 сентября 2019

Вы можете добавить еще один столбец с 10 идентификаторами групп, затем использовать groupby и рассчитать последний минус первый столбец EscRF_P2P_Volt_V в каждой группе, разделенный на последний минус первый столбца Time_Elapsed:

df['grpNo'] = df.Time_Elapsed // 5.0502

более общий подход для расчета grpNo, если у вас есть нормальный индекс подсчета от 0 ... n-1 (но вы не опубликовали это):

df['grpNo'] = df.index.values // (len(df)/10)

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

grpd = df.groupby('grpNo')

(grpd.EscRF_P2P_Volt_V.last() - grpd.EscRF_P2P_Volt_V.first()) / (grpd.Time_Elapsed.last() - grpd.Time_Elapsed.first())

# grpNo
# 0.0      0.000000
# 1.0      0.183150
# 2.0     -0.183379
# 3.0      0.000000
# 4.0      0.365569
# 5.0      0.183150
# 6.0      3.663005
# 7.0    147.783246
# 8.0      0.000000
# 9.0      0.000000
# dtype: float64

результат с группировкой на основе индекса

# grpNo
# 0.0      0.000000
# 1.0     -0.162583
# 2.0      0.000000
# 3.0      0.000000
# 4.0      0.146286
# 5.0      0.183150
# 6.0      3.663005
# 7.0    118.577071
# 8.0      0.000000
# 9.0      0.000000
# dtype: float64

сравнение размеров группразличные группировки здесь:

   Index based  Time based
0  6            8
1  5            5
2  6            5
3  5            5
4  6            5
5  5            5
6  5            5
7  6            5
8  5            5
9  5            6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...