在 Python 中绘制趋势线
Plotting tendency line in Python
我想在数据图上绘制一条趋势线。这一定很简单,但我一直无法弄清楚如何去做。
假设我有以下内容:
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()
结果图是:
我想补充的是一条趋势线。类似于下面的红线:
感谢您的任何反馈。
你可以使用滚动平均来做这样的事情:
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)
移动平均线是一种方法(我的第一个想法,并且已经建议)。
另一种方法是使用多项式拟合。由于原始数据中有 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')
这段代码提供了这样的情节:
我想在数据图上绘制一条趋势线。这一定很简单,但我一直无法弄清楚如何去做。
假设我有以下内容:
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()
结果图是:
我想补充的是一条趋势线。类似于下面的红线:
感谢您的任何反馈。
你可以使用滚动平均来做这样的事情:
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)
移动平均线是一种方法(我的第一个想法,并且已经建议)。
另一种方法是使用多项式拟合。由于原始数据中有 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')
这段代码提供了这样的情节: