- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经标记了事件(时间序列)数据,其中事件以给定标签的随机间隔发生。我想计算组内ewma并将其作为新列“X1_EWMA”添加到数据帧中。这是到目前为止的代码:
import pandas as pd
import numpy as np
import altair as alt
n = 1000
df = pd.DataFrame({
'T': pd.date_range('20190101', periods=n, freq='H'),
'C1': np.random.choice(list('PYTHON'), n),
'C2': np.random.choice(list('FUN'), n),
'X1': np.random.randn(n),
'X2': 100 + 10 * np.random.randn(n)
})
ts = df.set_index('T')
display(df.head())
display(ts.head())
ewm = ts.groupby(['C1']).apply(lambda x: x['X1'].ewm(halflife=10).mean())
ewm.head()
ts.groupby('C1').rolling(10).mean()
import pandas as pd
import numpy as np
import math
import altair as alt
alt.renderers.enable('notebook') # for rendering in the notebook
alt.data_transformers.enable('json') # for plotting data larger than 5000 points
# make a dataframe to test
n = 1000
df = pd.DataFrame({
'T': pd.date_range('20190101', periods=n, freq='H'),
'C1': np.random.choice(list('PYTHON'), n),
'C2': np.random.choice(list('FUN'), n),
'X1': np.linspace(0, 2*math.pi, n),
'X2': np.random.randn(n),
})
# add a new variable that is a function of X1, X2 + a random outlier probability
df['X3'] = 0.2 * df['X2'] + np.sin(df['X1']) + np.random.choice(a=[0, 2], size=n, p=[0.98, 0.02])
# make it a time series for later resampling use cases.
ts = df.set_index('T')
# SOLUTION: Add the ewma line with groupby().transform().
ts['ewm'] = ts.groupby(['C1'])['X3'].transform(lambda x: x.ewm(halflife=1).mean())
# plot the points and ewma using altair faceting and layering
points = alt.Chart().mark_circle(size=20, opacity=0.9).encode(
x = 'T',
y = 'X3',
color = 'C2',
).properties(width=270, height=170)
lines = alt.Chart().mark_line(size=1, color='red', opacity=1).encode(
x = 'T',
y = 'ewm'
)
alt.layer(points, lines).facet(facet='C1', data=ts.reset_index()).properties(columns=3)
最佳答案
让我们使用 transform
解决问题:
t['ewm'] = ts.groupby(['C1'])['X1'].transform(lambda x: x.ewm(halflife=10).mean()).values()
关于python - Pandas Groupby EWM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58002668/
我正在寻找一种方法来获得每一行的加权平均值,其中计算出的权重根据所有先前的值减半(并且随着先前值的增加对每一行继续)。 所以像 Out[1) 这样的输出应该看起来像 Out[2]: 权重应该从 1/1
我已经标记了事件(时间序列)数据,其中事件以给定标签的随机间隔发生。我想计算组内ewma并将其作为新列“X1_EWMA”添加到数据帧中。这是到目前为止的代码: import pandas as pd
当尝试从数据框中的金融数据计算指数移动平均线 (EMA) 时,Pandas 的 ewm 方法似乎不正确。 以下链接很好地解释了基础知识: http://stockcharts.com/school/d
我正在尝试使用Pandas ewm function计算指数加权移动平均线。然而我注意到信息似乎贯穿了你的整个时间序列。这意味着每个数据点的 MA 取决于不同数量的先前数据点。因此,每个数据点的 ew
是否有 ewm 和滚动方法的参数不填写 NA? >>> A = pd.Series([1,2,3,4,np.nan,5,6]) >>> A 0 1.0 1 2.0 2 3.0 3
我正在尝试验证 pandas 的 ewm.std 计算,以便我可以对我的代码实现一步更新。这是代码问题的完整描述。 mrt = pd.Series(np.random.randn(1000)) N =
我正在尝试构建一个指数移动平均算法,它产生与 Pandas 相同的输出 ewm()功能。特别是,我正在尝试实现这种方法: 下面的代码可以正常工作,直到移动平均窗口开始超出初始数据集,此时我开始得到与
假设我有一个如下所示的数据框 import pandas as pd data = {'team': ['team1','team1','team1','team1','team1','team1',
我有这个数据帧 ddd = pd.DataFrame({'day':['m','t','m','t','m','t','m','t'] ,'val':[15,2
我正在尝试运行以下代码,但出现错误。 line 43, in ups_avg = pd.ewm(ups, span=RSI_N)[-1] AttributeError: module 'pandas
关于新的 .rolling 和 .ewm 方法。我正在使用 Pandas 0.19.0。 >>> df = pd.DataFrame({'A' : [1,2,np.nan, 3, 4, 5], 'B'
如何在 NumPy 中获得指数加权移动平均线,就像 pandas 中的以下内容一样? import pandas as pd import pandas_datareader as pdr from
我是一名优秀的程序员,十分优秀!