2015-01-27 3 views
2

Мне нужно вычислить среднее значение первого столбца кадра данных, и я могу это сделать, используя метод mean(). Проблема: Иногда в данных есть значения -9999, обозначающие отсутствующие наблюдения. Я знаю, что значения NaN неотъемлемо пропущены при вычислении среднего значения в Pandas, но это, конечно же, не имеет значения -9999.Вычислить среднее число кадров данных, пропустив определенные значения в Python/Pandas

Вот код, который я пробовал. Он вычисляет среднее значение столбца, но принимая значение -9999 в расчеты:

df=pandas.DataFrame([{2,4,6},{1,-9999,3}]) 
df[0].mean(skipna=-9999) 

но это дает среднее значение -4998.5 которое, очевидно, получают принимая -9999 в расчеты.

+0

Извините, вы не указали столбцам какие-либо имена, так что вы хотите получить среднее значение столбца или строки – EdChum

+0

Хорошо. Отредактировав вопрос, явно указав «столбцы», – multigoodverse

ответ

3

skipna аргумент является логическим указывается, требуется ли, чтобы исключить/нулевые значения NA, значения которых не игнорировать:

skipna : boolean, default True 
    Exclude NA/null values. If an entire row/column is NA, the result 
    will be NA 

Предполагая, что я понимаю, что вы пытаетесь сделать, вы можете заменить -9999 на NaN:

In [41]: df[0].replace(-9999, np.nan) 
Out[41]: 
0  2 
1 NaN 
Name: 0, dtype: float64 

In [42]: df[0].replace(-9999, np.nan).mean() 
Out[42]: 2.0 
1

skipna это значит быть истинным или ложным, а не значение, которое будет пропущено.

при чтении данных, нормализации и замене -9999 на n/a.