Кажется, я собираюсь кругами, пытаясь решить эту проблему. Я был бы очень благодарен за любую помощь от доверия с помощью stackoverflow.Могу ли я получить обрезанное среднее всех столбцов в фрейме данных с значениями nan?
Проблема в том, что я хочу получить среднее значение для всех столбцов в кадре данных pandas (т. Е. Среднее значение значений в данном столбце, исключая максимальное и минимальное значения). Вполне вероятно, что некоторые столбцы будут иметь значения nan. В принципе, я хочу получить ту же функциональность, что и функция pandas.DataFrame.mean, за исключением того, что это обрезанное среднее.
Очевидным решением является использование функции scipy tmean и итерация по столбцам df. Так что я сделал:
import scipy as sp
trim_mean = []
for i in data_clean3.columns:
trim_mean.append(sp.tmean(data_clean3[i]))
Это отлично работало, пока я не столкнулся с значениями nan, из-за которых tmean задохнулся. Хуже того, когда я сбросил значения nan в кадре данных, были некоторые данные, которые были полностью уничтожены, так как они имели значение nan в каждом столбце. Это означает, что когда я объединю все свои наборы данных в мастер-набор, в главном наборе будут отверстия.
Кто-нибудь знает об этом? Как и в, есть ли способ заставить tmean вести себя как стандартные функции scipy stats и игнорировать значения nan?
(Обратите внимание, что мой код вычисляет большое количество описательных статистических данных о больших массивов данных с ограниченным аппаратным обеспечением; высоко привлеченными или неэффективные методы обхода может быть неоптимальным Надеюсь, хотя, я просто не хватает что-то простое.).
(EDIT: Кто-то предложил в комментарии (который с тех пор исчез?), Что я должен использовать функцию trim_mean scipy, которая позволяет вам загладить и увязать определенную долю данных. Это просто сказать, что это решение выиграло я работаю для меня, так как мои наборы данных имеют неравные размеры, поэтому я не могу указать фиксированную долю данных, которые будут в порядке, чтобы удалить их в каждом случае, всегда должны быть только максимальные и минимальные значения.)
это будет работать для вас '(pd.DataFrame (data_clean3.sum() - data_clean3.max() -. Data_clean3.min()) T) .mean () '. – shivsn
Спасибо, это хороший удар по тому, что мне нужно, но я могу быть проблемой, так как значения max и min могут встречаться более одного раза в каждом столбце. Таким образом, вычитание каждого значения из суммы столбца может неточно отражать обрезанное среднее? – Lodore66