【问题标题】:Calculate dataframe mean by skipping certain values in Python / Pandas通过跳过 Python / Pandas 中的某些值来计算数据帧平均值
【发布时间】:2015-03-26 16:22:47
【问题描述】:

我需要计算数据框第一列的平均值,我可以使用mean() 方法来完成。 问题:有时,数据中有 -9999 个值表示缺少观测值。 我知道在 Pandas 中计算平均值时会固有地跳过 NaN 值,但对于 -9999 值当然不是这种情况。

这是我尝试过的代码。它计算列的平均值,但通过将 -9999 值带入计算:

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

但它产生的平均值为 -4998.5,这显然是在计算时将 -9999 产生的。

【问题讨论】:

  • 对不起,你没有给列起任何名字,所以你想要列或行的平均值
  • 好的。通过明确提及“列”来编辑问题

标签: python pandas nan mean


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    skipna 意味着是真或假,而不是要跳过的值。

    在读取数据时,将 -9999 标准化并替换为 n/a。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 2021-12-12
      • 2012-10-13
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      相关资源
      最近更新 更多