У меня есть данные, загружаемые в фреймворк данных, который имеет мультииндекс для заголовков столбцов. В настоящее время я группируя данные по индексам столбцов взять среднее из групп и расчет доверительных интервалов 95%, как это:Стандартная ошибка игнорирования NaN в группах групп pandas
from pandas import *
import pandas as pd
from scipy import stats as st
#Normalize to starting point then convert
normalized = (data - data.ix[0]) * 11.11111
#Group normalized data based on slope and orientation
grouped = normalized.groupby(level=['SLOPE','DEPTH'], axis=1)
#Obtain mean of each group
means = grouped.mean()
#Calculate 95% confidence interval for each group
ci = grouped.aggregate(lambda x: st.sem(x) * 1.96)
но проблема состоит в том, что средняя функции, которая используется на группы игнорируют значения NaN, в то время как функция scipy st.sem возвращает NaN, если в группе есть NaN. Мне нужно вычислить стандартную ошибку, игнорируя NaN как среднюю функцию.
Я пытался идти о расчете 95% доверительный интервал, как это:
#Calculate 95% confidence interval for each group
ci = grouped.aggregate(lambda x: np.std(x)/??? * 1.96)
станд в NumPy даст мне стандартное отклонение, игнорируя значения NaN, но мне нужно, чтобы разделить это на квадратный корень из размер группы, игнорирующий NaN, чтобы получить стандартную ошибку.
Что является самым простым способом вычисления стандартной ошибки при игнорировании NaN?
попытаться включить в 'GroupBy () 'function this:' normalized.groupby (by = [col_name_with_NaN], level = ['SLOPE', 'DEPTH'], axis = 1) ', так что' Значения NaN' не должны отображаться в 'grouped' –
Есть 36 столбцов, и в любой заданной строке могут быть NaN. недостающие данные. Вы предлагаете передать список всех имен столбцов? Что делает аргумент by = []? Я смотрю вокруг, но не могу понять этого. – pbreach
Да, попробуйте передать все имена столбцов '36' аргументу' by'. Я не совсем понимаю, что этот аргумент, но он фильтрует NaNs ... –