如何向数据曲线添加平滑度

问题描述 投票:0回答:1

我有一些在python中工作的数据。当我绘制数据时,我想进行平滑过渡。有谁知道我该怎么做?有关更多信息,请参见我的数据图。注意在-250,0.33处的急剧变化,这就是我想要平滑的变化;理想情况下会产生一个红色显示的过渡。enter image description here

python pandas smoothing
1个回答
0
投票

您可以通过平均某个窗口上的值来平滑结果。

一些伪代码:

data = ...  # initial data
win = 10  # number of points to take average from
res = []  # result
for i in range(len(data) - win):
  s = sum(data[i:i+win])
  mean = s / win
  res.append(s)

对于熊猫,有rolling function

import pandas as pd
df = pd.DataFrame({'row': [1, 1, 1, 1, 1, 10, 10, 10, 10, 5, 5, 5, 5, 5]})
df.rolling(window=3).row.mean()

将返回:

0           NaN
1           NaN
2      1.000000
3      1.000000
4      1.000000
5      4.000000
6      7.000000
7     10.000000
8     10.000000
9      8.333333
10     6.666667
11     5.000000
12     5.000000
13     5.000000
Name: row, dtype: float64

如果需要更改特定片段,请使用此:

a = 3  # start of fragment
b = 7  # end of fragment
m = 1
df.row.loc[a:b-m] = df[a:b].rolling(window=3, min_periods=m).row.mean()
© www.soinside.com 2019 - 2024. All rights reserved.