【问题标题】:Calculating intermittent average计算间歇平均值
【发布时间】:2021-09-04 10:33:08
【问题描述】:

我有一个巨大的数据框,其中包含很多零值。而且,我想计算零值之间的数字的平均值。为简单起见,数据显示例如 10 个连续值,然后呈现零,然后再次呈现值。我只是想告诉python计算每个数据块的平均值。

图片展示了一个例子

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python pandas dataframe average


【解决方案1】:

首先,我有点困惑您为什么要使用 DataFrame。这更有可能存储在 pd.Series 中,而我建议将数字数据存储在 numpy 数组中。假设您面前有一个 pd.Series 并且您正在尝试计算两个连续点之间的移动平均线,您可以采用两种方法。

  1. 最后一个整数补零:

  2. 假设循环并取第一个值和最后一个值之间的平均值

这是预期的代码:


import numpy as np
import pandas as pd

data_series = pd.Series([0,0,0.76231, 0.77669,0,0,0,0,0,0,0,0,0.66772, 1.37964, 2.11833, 2.29178, 0,0,0,0,0])
np_array = np.array(data_series)


#assuming zero_padding
np_array_zero_pad = np.hstack((np_array, 0))
mvavrg_zeropad = [np.mean([np_array_zero_pad[i], np_array_zero_pad[i+1]]) for i in range(len(np_array_zero_pad)-1)]


#asssuming circularity
np_array_circ_arr = np.hstack((np_array, np_array[-1]))
np_array_circ_arr = [np.mean([np_array_circ_arr[i], np_array_circ_arr[i+1]]) for i in range(len(np_array_circ_arr)-1)]

【讨论】:

  • 它是如此庞大的多列数据,稍后将对它们进行其他操作。我想在这里做的很简单:我想计算每个补丁的平均值。单独的 [0.762, 0.766] 和单独的 [0.66, 1.37, 2.11, 2.29] 的平均值,依此类推,直到 Dataframe 结束。
  • 好吧这其实没问题。提前一个问题:这是否根据相同的索引重复?如果是的话,那就很容易了。您只需选择特定索引并应用 np.mean()
  • 这里没有重复,我试图找到选择的任何锚点,但我找不到。我只想让 python 创建额外的列并相应地放置这些平均值,因为稍后我会将它与其他列一起绘制,并且会发生很多事情。
  • 那么您可以做的是始终添加值,只要它不为零并将其附加到列表中。这对你有帮助吗?如果最小的例子没有真正正确地解决你的问题,那么很难给你建议。
  • 请看这里,我重新发布了这个问题。我是新来的,我很挣扎:D stackoverflow.com/questions/69057749/…
猜你喜欢
  • 1970-01-01
  • 2013-01-14
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多