InfluxDB 和 Pandas 入门

导航至

InfluxData 以优先考虑开发者幸福感而自豪。维护开发者幸福感的一个重要部分是提供客户端库,允许用户通过他们选择的语言和库与数据库进行交互。数据分析是与 Python 用例最广泛相关的任务,占 Python 任务的 58%,因此 Pandas 成为 Python 用户第二流行的库 是有道理的。2.0 InfluxDB Python 客户端数据支持 Pandas DataFrames,以邀请数据科学家轻松使用 InfluxDB

在本教程中,我们将学习如何查询 InfluxDB 实例并将数据作为 DataFrame 返回。我们还将探索作为客户端 repo 一部分存在的一些数据科学资源。要了解如何开始使用 InfluxDB Python 客户端库,请查看这篇 博客

Pandas InfluxDB

我渴望学习 Pandas 和 InfluxDB 文档。照片由 Sid Balachandran 在 Unsplash 上拍摄。

数据科学资源

InfluxDB Python 客户端 repo 中包含各种数据科学资源,以帮助您利用客户端的 Pandas 功能。我鼓励您查看示例 notebooks。它们是 Jupyter Notebooks 的集合,提供了各种时序数据科学和分析解决方案的示例,例如,如何集成 Tensorflow 和 Keras 进行预测。

从 InfluxDB 到 DataFrame

导入客户端和 Pandas

from influxdb_client import InfluxDBClient
import pandas as pd

提供身份验证参数

my_token = my-token
my_org = "my-org"
bucket = "system"

编写您的 Flux 查询

query= '''
from(bucket: "system")
|> range(start:-5m, stop: now())
|> filter(fn: (r) => r._measurement == "cpu")
|> filter(fn: (r) => r._field == "usage_user")
|> filter(fn: (r) => r.cpu == "cpu-total")'''

查询 InfluxDB 并返回 Dataframe

client = InfluxDBClient(url="http://localhost:9999", token=my_token, org=my_org, debug=False)
system_stats = client.query_api().query_data_frame(org=my_org, query=query)
display(system_stats.head())

从 DataFrame 到 InfluxDB

将 DataFrame 写入 InfluxDB:

From DataFrame to InfluxDB

from influxdb_client import InfluxDBClient, Point, WriteOptions
from influxdb_client.client.write_api import SYNCHRONOUS
# Preparing Dataframe: 
system_stats.drop(columns=['result', 'table','start','stop'])
# DataFrame must have the timestamp column as an index for the client. 
system_stats.set_index("_time")
_write_client.write(bucket.name, record=system_stats, data_frame_measurement_name='cpu',
                    data_frame_tag_columns=['cpu'])

关闭客户端

_write_client.__del__()
client.__del__()

Pandas 与 Flux 互补,用于 InfluxDB

尽管 Flux 具有 Pandas 的许多数据转换功能,但 InfluxDB 重视开发者的时间。如果您处理的是较小的数据集,您可能没有太多动力在服务器端进行这些转换或学习 Flux。希望这种 Pandas 功能可以帮助您更快地执行 时序分析。与往常一样,如果您遇到障碍,请在我们的 社区网站Slack 频道上分享。我们很乐意获得您的反馈并帮助您解决遇到的任何问题。