Вычислить среднее число кадров данных, пропустив определенные значения в Python/Pandas

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

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

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

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

2 ответа

skipna arg - логическое значение, указывающее, следует ли исключать значения NA/null, а не те значения, которые следует игнорировать:

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


skipna означает истину или ложь, а не значение, которое нужно пропустить.

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

licensed under cc by-sa 3.0 with attribution.