通过跳过 Python / Pandas 中的某些值来计算数据帧平均值
Calculate dataframe mean by skipping certain values in Python / Pandas
我需要计算数据框第一列的平均值,我可以使用 mean()
方法来实现。
问题:有时,数据中有 -9999 个值表示缺少观测值。
我知道在 Pandas 中计算平均值时自然会跳过 NaN 值,但当然 -9999 值并非如此。
这是我试过的代码。它计算列的平均值,但通过将 -9999 值带入计算:
df=pandas.DataFrame([{2,4,6},{1,-9999,3}])
df[0].mean(skipna=-9999)
但它产生的平均值为 -4998.5,这显然是将 -9999 纳入计算中产生的。
skipna
arg 是一个布尔值,指定是否排除 NA/null 值,而不是忽略哪些值:
skipna : boolean, default True
Exclude NA/null values. If an entire row/column is NA, the result
will be NA
假设我明白你想做什么,你可以用 NaN
替换 -9999
:
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。
我需要计算数据框第一列的平均值,我可以使用 mean()
方法来实现。
问题:有时,数据中有 -9999 个值表示缺少观测值。
我知道在 Pandas 中计算平均值时自然会跳过 NaN 值,但当然 -9999 值并非如此。
这是我试过的代码。它计算列的平均值,但通过将 -9999 值带入计算:
df=pandas.DataFrame([{2,4,6},{1,-9999,3}])
df[0].mean(skipna=-9999)
但它产生的平均值为 -4998.5,这显然是将 -9999 纳入计算中产生的。
skipna
arg 是一个布尔值,指定是否排除 NA/null 值,而不是忽略哪些值:
skipna : boolean, default True
Exclude NA/null values. If an entire row/column is NA, the result
will be NA
假设我明白你想做什么,你可以用 NaN
替换 -9999
:
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。