Как следует из названия, я пытаюсь создать доверительные интервалы на основе таблицы с тонной значений нан.Вот пример того, с чем я работаю.
Attendence% 2016-10 2016-11 2017-01 2017-02 2017-03 2017-04 ...
Name
Karl nan 0.2 0.4 0.5 0.2 1.0
Alice 1.0 0.7 0.6 nan nan nan
Ryan nan nan 1.0 0.1 0.9 0.2
Don nan 0.5 nan 0.2 nan nan
Becca nan 0.2 0.6 0 nan nan
Для справки, в моем фактическом фрейме данных есть больше NaN, чем нет, и они представляют месяцы, когда их не нужно было показывать, поэтому заменазначения с 0 повлияют на результат.
Теперь каждый раз, когда я пытаюсь применить доверительный интервал к каждому имени, он возвращает среднее значение как NaN, а также оба интервала.
Karl (nan, nan, nan)
Alice (nan, nan, nan)
Ryan (nan, nan, nan)
Don (nan, nan, nan)
Becca (nan, nan, nan)
Isесть способ отфильтровать NaN, так что он просто применяет формулу, не принимая во внимание значения NaN.До сих пор я делал следующее:
unstacked - таблица, которую я визуально представлял.
def mean_confidence_interval(unstacked, confidence=0.9):
a = 1.0 * np.array(unstacked)
n = len(a)
m, se = np.mean(a), scipy.stats.sem(a)
h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)
return m, m-h, m+h
answer = unstacked.apply(mean_confidence_interval)
answer