Я сейчас пытаюсь создать функцию для фрейма данных, и она слишком сложна для меня. У меня есть датафрейм, который выглядит так:
df1
hour production ....
0 1 10
0 2 20
0 1 30
0 3 40
0 1 40
0 4 30
0 1 20
0 4 10
Я пытаюсь создать функцию, которая будет делать следующее:
- Группировать данные по разным
hour
- Рассчитать 90% доверительный интервал
production
для каждого hour
- Если значение
production
определенной строки выходит за пределы 90-процентного доверительного интервала для ее соответствующего hour
, пометьте его как unusual
, создав новый столбец
Ниже приведен текущий шаг, который я предпринимаю для выполнения вышеуказанного для каждого индивидуального часа:
Рассчитать доверительный интервал
confidence = 0.90
data = df1['production ']
n = len(data)
m = mean(data)
std_err = sem(data)
h = std_err * t.ppf((1 + confidence) / 2, n - 1)
lower_interval = m - h
upper_interval = m + h
Тогда:
def confidence_interval(x):
if x['production'] > upper_interval :
return 1
if x['production'] < lower_interval :
return 1
return 0
df1['unusual'] = df1.apply (lambda x: confidence_interval(x), axis=1)
Я делаю это для каждого значения в часе, а не для того, чтобы объединить все результаты в один исходный кадр данных.
Может ли кто-нибудь помочь мне создать функцию, которая может выполнять все вышеперечисленное одновременно? Я попробовал, но просто не могу обдумать это.