Mam dane załadowane do ramek danych, które mają indeks wielu nagłówków kolumn. Obecnie byłem grupowanie danych przez indeksy kolumn wziąć średnią z grup i obliczania przedziałów ufności 95% tak:Standardowy błąd ignorowania NaN w grupie pandy według grup
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)
ale problem polega na tym, że funkcja oznacza, że służy on grupy ignorują wartości NaN, podczas gdy funkcja scipy st.sem zwraca NaN, jeśli w grupie istnieje NaN. Muszę obliczyć błąd standardowy podczas ignorowania NaN, jak robi to funkcja średnia.
Próbowałem będzie o obliczenia 95% przedział ufności takiego:
#Calculate 95% confidence interval for each group
ci = grouped.aggregate(lambda x: np.std(x)/??? * 1.96)
std w numpy da mi odchylenie standardowe ignorując wartości NaN ale muszę podzielić to przez pierwiastek kwadratowy z wielkość grupy ignoruje NaN, aby uzyskać standardowy błąd.
Jaki jest najłatwiejszy sposób obliczenia błędu standardowego podczas ignorowania NaN?
spróbować uwzględnić w 'GroupBy () 'function this:' normalized.groupby (by = [col_name_with_NaN], level = ['SLOPE', 'DEPTH'], axis = 1) ', dzięki czemu' Wartości NaN "nie powinny pojawiać się w" zgrupowanych " –
Istnieje 36 kolumn i mogą być NaNs w danym wierszu, tj. brakujące dane. Sugerujesz przekazanie listy wszystkich nazw kolumn? Co robi argument by = []? Rozglądam się, ale nie mogę tego zrozumieć. – pbreach
Tak, spróbuj przekazać wszystkie nazwy kolumn '36' do argumentu' by'. Nie dokładnie to, co ten argument ma, ale filtruje NaNs ... –