2024-04-18 08:53:39 发布
网友
我有一个数据框,看起来像下面的图片。我想为每个列(Android、angularjs等)绘制一个数字与日期的关系图。我尝试使用series.unstack().plot,但它给出了一个如图2所示的线条图。而不是直线图,我只想为每一列绘制最佳拟合曲线,因为我只是想比较增长(在同一个图上)。
series.unstack().plot
只是为了提供一个使用滚动平均值的答案,这可能有助于观察趋势的变化(在您的原始数据中似乎有一些变化),这些变化被拟合成一条直线而变得模糊。这个例子提供了一个120观察滚动窗口,它在保持局部趋势变化的同时很好地平滑了数据。在
import pandas as pd import numpy as np data = pd.DataFrame( { 'val_1': pd.Series((np.random.randn(1000) * (1 - np.random.rand(1000)))).cumsum(), 'val_2': pd.Series((np.random.randn(1000) * (1 - np.random.rand(1000)))).cumsum() } ) window = 120 rolling = data.rolling(window).mean() rolling.columns = [i + '_rolling_' + str(window) for i in data.columns] ax = data.plot(alpha = .5) rolling.plot(ax = ax)
给予:
我不知道你想要什么,但我会试一试。在
由于您没有提供数据,所以让我们创建四个具有不同漂移的随机行走:
s1 = pd.Series(0.3 + np.random.normal(size=[100])).cumsum() s2 = pd.Series(-0.3 + np.random.normal(size=[100])).cumsum() s3 = pd.Series(0.1 + np.random.normal(size=[100])).cumsum() s4 = pd.Series(0.1 + np.random.normal(size=[100])).cumsum()
以及df:
df
这样的情节
现在,为了匹配最佳行,可以使用^{}将degree指定为1
b1, a1 = np.polyfit(range(100), s1, 1) b2, a2 = np.polyfit(range(100), s2, 1) b3, a3 = np.polyfit(range(100), s3, 1) b4, a4 = np.polyfit(range(100), s4, 1) fig, ax = plt.subplots() ax.plot(np.arange(100), a1 + b1*np.arange(100), color='red') ax.plot(np.arange(100), a2 + b2*np.arange(100), color='blue') ax.plot(np.arange(100), a3 + b3*np.arange(100), color='green') ax.plot(np.arange(100), a4 + b4*np.arange(100), color='black')
以至于你
要将最佳拟合线与实际初始图形进行比较,请在打印时设置相同的颜色:
ax.plot(np.arange(100), a1 + b1*np.arange(100), color='red') ax.plot(np.arange(100), a2 + b2*np.arange(100), color='blue') ax.plot(np.arange(100), a3 + b3*np.arange(100), color='green') ax.plot(np.arange(100), a4 + b4*np.arange(100), color='black') ax.plot(df.s1, color='red') ax.plot(df.s2, color='blue') ax.plot(df.s3, color='green') ax.plot(df.s4, color='black')
只是为了提供一个使用滚动平均值的答案,这可能有助于观察趋势的变化(在您的原始数据中似乎有一些变化),这些变化被拟合成一条直线而变得模糊。这个例子提供了一个120观察滚动窗口,它在保持局部趋势变化的同时很好地平滑了数据。在
给予:
我不知道你想要什么,但我会试一试。在
由于您没有提供数据,所以让我们创建四个具有不同漂移的随机行走:
以及
^{pr2}$df
:这样的情节
现在,为了匹配最佳行,可以使用^{} 将degree指定为1
以至于你
要将最佳拟合线与实际初始图形进行比较,请在打印时设置相同的颜色:
相关问题 更多 >
编程相关推荐