golang timeseries resample
时间: 2023-07-25 22:08:42 浏览: 199
在Golang中,你可以使用第三方包来对时间序列进行重新采样。其中最受欢迎的是gonum/plot/plotter和go-graphite/carbonapi。
使用gonum/plot/plotter包,你可以通过将数据点添加到plotter.XYs中,然后使用plotter.Downsample操作来对其进行重新采样。这个操作会根据给定的时间间隔,从原始数据中选择平均值、最大值或最小值。
示例代码如下:
```
import (
"fmt"
"math/rand"
"gonum.org/v1/plot"
"gonum.org/v1/plot/plotter"
)
func main() {
// 生成随机数据点
n := 1000
pts := make(plotter.XYs, n)
for i := range pts {
pts[i].X = float64(i)
pts[i].Y = rand.NormFloat64()
}
// 创建一个新的绘图和数据集
p, err := plot.New()
if err != nil {
panic(err)
}
line, err := plotter.NewLine(pts)
if err != nil {
panic(err)
}
p.Add(line)
// 对数据进行重新采样
downsampled, err := plotter.Downsample(pts, 10, plotter.Avgs)
if err != nil {
panic(err)
}
downsampledLine, err := plotter.NewLine(downsampled)
if err != nil {
panic(err)
}
downsampledLine.Color = color.RGBA{G: 255, A: 255}
p.Add(downsampledLine)
// 保存图像
if err := p.Save(4*vg.Inch, 4*vg.Inch, "resampled.png"); err != nil {
panic(err)
}
}
```
另一个流行的选项是go-graphite/carbonapi包,它提供了一个RESTful API,可以让你通过HTTP请求对时间序列进行查询和重新采样。它是为Graphite设计的,但也支持InfluxDB和OpenTSDB。
示例代码如下:
```
import (
"fmt"
"net/http"
)
func main() {
// 发送HTTP请求以获取重新采样的时间序列
resp, err := http.Get("http://localhost:8080/render?format=json&target=resample(sum(carbon.agents.*.metricsReceived),%20%271min%27)%20")
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 处理响应
// ...
}
```
这个请求将返回一个JSON响应,其中包含重新采样的时间序列数据。你可以将其解析为结构体,然后在你的应用程序中使用。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)