大数据集的趋势线绘制不工作

我有一个包含52166个数据点的庞大数据集,数据集看起来像这样:

                     bc_conc    2010-04-09 10:00:00  609.542000          2010-04-09 11:00:00  663.500000          2010-04-09 12:00:00  524.661667         2010-04-09 13:00:00  228.706667           2010-04-09 14:00:00  279.721667         

这是一个pandas数据框,索引是日期时间。现在我想绘制bc_conc的数据与时间的关系,并添加一条趋势线。

我使用了以下代码:

data = data.resample('M', closed='left', label='left').mean()x1 = data.indexx2 = matplotlib.dates.date2num(data.index.to_pydatetime())y = data.bc_concz = np.polyfit(x2, y, 1)p = np.poly1d(z)fig = plt.figure()ax1 = fig.add_subplot(1, 1, 1)plt.plot_date(x=x1, y=y, fmt='b-')plt.plot(x1, p(x2), 'ro')plt.show()

然而,如您所见,我对数据进行了重新采样。我这样做是因为如果不这样做,代码只会给我一个没有趋势线的数据图。如果我将数据重新采样为天,图上仍然没有趋势线。如果我将数据重新采样为月份,趋势线就会显示出来。

看起来这个代码似乎只对较小的数据集有效。为什么会这样?我想知道是否有人能向我解释这个问题,因为我想将我的数据重新采样为天,但不想进一步处理…

提前感谢


回答:

这个代码似乎无论使用小时还是每日重新采样的数据都能正常工作。

从100,000个数据点开始:

y = np.arange(0, 1000, .01) + np.random.normal(0, 100, 100000)data = pd.DataFrame(data={'bc_conc': y}, index=pd.date_range(freq='H', start=datetime(2000, 1, 1), periods=len(y)))<class 'pandas.core.frame.DataFrame'>DatetimeIndex: 100000 entries, 2000-01-01 00:00:00 to 2011-05-29 15:00:00Freq: HData columns (total 1 columns):bc_conc    100000 non-null float64dtypes: float64(1)                        bc_conc2000-01-01 00:00:00  -30.6398112000-01-01 01:00:00  -26.7913962000-01-01 02:00:00 -121.5427182000-01-01 03:00:00  -69.2679442000-01-01 04:00:00  117.731532

计算趋势线并可选地重新采样:

data = data.resample('D', closed='left', label='left').mean() # 可选,用于每日数据x2 = matplotlib.dates.date2num(data.index.to_pydatetime()) # 将日期转换为表示自0001-01-01 00:00:00 UTC以来的天数(或天数的一部分)的浮点数[ 730120.  730121.  730122. ...,  734284.  734285.  734286.]z = np.polyfit(x2, data.bc_conc, 1)[  2.39988999e-01  -1.75220741e+05]  # 系数p = np.poly1d(z)0.24 x - 1.752e+05 # 拟合多项式data['trend'] = p(x2)  # 从多项式拟合中得到的趋势              bc_conc     trend2000-01-01 -29.794608  0.0269832000-01-02   6.727729  0.2669722000-01-03   9.815476  0.5069612000-01-04 -27.954068  0.7469502000-01-05 -13.726714  0.986939data.plot()plt.show()

结果如下:

<code>每日</code>“></a></p>
<p><a href=输入图片说明

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注