【发布时间】:2019-11-12 21:51:06
【问题描述】:
我正在尝试创建一个以时间序列和多个拆分作为参数的函数。如果拆分 = 3,我希望该函数将时间序列数据分成三份并计算每个拆分的平均值。 我在下面创建的代码累积计算平均值。 这是示例数据:
data = pd.Series([1,2,3,4,5,6,7,8,9,9])
这是我创建的函数:
def multi_mean(ts, n_splits = 3):
ts_ranges = []
mn_range = []
for i in range(1,n_splits+1):
result = int(round(len(ts)/(i),0))
for j in range(1,i+1):
result2 = ts[:result*j].mean()
mn_range.append(result2)
return mn_range
虚假数据上的函数提供以下结果列表:
rs1 = multi_mean(data,2)
[5.4,3.0,5.4]
第一个数字是 i =1 的拆分,即整个样本。 第二个数字是 i = 2 的第一个平均值,它是前 5 个数字的平均值。 i = 2 的第二个数字平均所有数字。 我无法弄清楚如何在循环中构造切片,以便获得所需的结果。 我想要以下期望的结果:
[5.4,3.0,7.8]
最后,我希望将每一轮 i 输出到一个单独的列表对象中。
【问题讨论】:
-
当 n_splits=2 时,为什么你的答案中有 3 个数字?
-
我想要一系列拆分。所以 split = 2 实际上是两轮拆分。第一轮是整个样本。第二轮将数据分成两半。
-
如果/当它不是完全可分的时候,你将如何处理剩余部分,比如 10/3
-
您能否进一步扩展您正在尝试做的事情?你有什么理由使用 Pandas 而不是 NumPy?
标签: python pandas loops list-comprehension nested-loops