我想在数据图上画一条趋势线。这一定很简单,但我还没有想出如何做到这一点。
让我们说我有以下几点:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(np.random.randint(0,100,size=(100, 1)), columns=list('A'))
sns.lineplot(data=df)
ax.set(xlabel="Index",
ylabel="Variable",
title="Sample")
plt.show()
由此产生的阴谋是:
我想补充的是一条趋势线。类似于以下红线的内容:
我感谢你的反馈。
发布于 2020-10-29 09:04:10
您可以使用滚动平均值来做这样的事情:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
data = np.random.randint(0,100,size=(100, 1))
df["rolling_avg"] = df.A.rolling(7).mean().shift(-3)
sns.lineplot(data=df)
plt.show()
您还可以做一个回归图来分析如何使用以下方法插入数据:
ax = sns.regplot(x=df.index, y="A",
data=df,
scatter_kws={"s": 10},
order=10,
ci=None)
发布于 2020-10-29 09:27:37
移动平均法是一种方法(我第一次想到,并且已经建议了)。
另一种方法是使用多项式拟合。由于您的原始数据中有100分,所以在下面的示例中,我选择了第10次拟合(数据长度的平方根)。对原始代码进行一些修改:
idx = [i for i in range(100)]
rnd = np.random.randint(0,100,size=100)
ser = pd.Series(rnd, idx)
fit = np.polyfit(idx, rnd, 10)
pf = np.poly1d(fit)
plt.plot(idx, rnd, 'b', idx, pf(idx), 'r')
此代码提供了如下情节:
https://stackoverflow.com/questions/64595327
复制相似问题