TL;DR:Python、Pandas Dataframes 和 InfluxDB
作者:Susannah Brodnitz / 产品, 用例, 入门
2022 年 11 月 09 日
导航至
InfluxDB 拥有十几个以上的客户端库,因此开发者可以更轻松地开始使用,并使用他们最熟悉的语言进行编程。我们最受欢迎的选择之一是 Python 客户端库。InfluxDB 不仅支持 Python,还支持 pandas,pandas 是数据科学家用于分析和处理数据的流行工具。您可以使用客户端库将 InfluxDB 中的数据输出为 pandas 可以摄取的 DataFrame 格式,并且可以直接将 pandas DataFrames 写入 InfluxDB。这使得将 InfluxDB 融入您的数据科学应用程序并利用实时监控和警报变得简单。
从 InfluxDB 查询数据到 Pandas Dataframe
要在 InfluxDB 中查询并返回 pandas DataFrame,您首先需要安装 Python 客户端库。要进行设置,您需要将该库下载到您的 Python 项目中,并设置您的凭据,包括您的 URL、令牌以及您要向其发送数据和从中读取数据的 bucket 名称。设置好凭据后,您就可以查询数据了。
这是一个查询示例
query= ‘’’
from (bucket: “system”)
|> range(start: -5m, stop: now())
|> filter(fn: (r) => r._measurement = “cpu”)
|> pivot(rowKey: [“_time”], ColumnKey: [“tag”], ValueColumn: “value”)
|> keep(columns: [“_time”, “usage_user”, “cpu”])
‘’’
client = InfluxDBClient(url, token, org, debug = false)
system_stats = client.query.api().query_data_frame()
display(system_stats.head())
此查询以 Flux 编写,Flux 是 InfluxDB 的脚本和查询语言。它请求过去五分钟内来自 bucket “system” 的数据,并按 measurement “cpu” 进行过滤。当您使用 InfluxDB 和 pandas 时,要记住的两个最重要的函数是 pivot
和 keep
。Pivot
将数据格式更改为列。Pandas dataframes 是二维表,因此 pandas 函数和工具期望数据采用该格式,您需要透视从 InfluxDB 查询的数据。Keep
告诉查询在此列中保留哪些数据,并删除您不想包含在输出 pandas DataFrame 中的任何其他列。
编写查询后,您需要使用您的凭据调用 InfluxDB 客户端,并使用 query API 和 query_data_frame()
函数来获取 DataFrame 格式。然后,您可以使用 .head
在 pandas DataFrame 中显示数据。
将数据从 Pandas Dataframe 写入 InfluxDB
您还可以将数据从 pandas dataframe 写入 InfluxDB。以下是一些执行此操作的示例代码
system_stats.drop(columns = [‘result’, ‘table’, ‘start’, ‘stop’])
system_stats.set_index(“_time”)
_write_client.write(bucket.name, record = system_stats)
您未使用 drop
函数从 pandas DataFrame 中删除的任何数据在将数据写入 InfluxDB 时都会成为字段。在此示例查询中,我们删除了我们不想作为字段发送到 InfluxDB 的列,因为我们想将它们作为标签。您还需要设置您的索引,这将是 InfluxDB 中的时间戳。然后,您需要使用 Python 客户端库 write
函数将数据写入 InfluxDB。它接受 bucket 名称和您要写入该 bucket 的记录。您还需要像第一个示例中那样设置客户端的凭据。
需要考虑的一件事是时间戳。Pandas 附带日期时间格式。您可以使用该格式,也可以使用以下时间格式之一
“2018-10-26”、“2018-10-26 12:00” 或 “2018-10-26 12:00:00-05:00”
Flux 是一种强大的分析语言,但您可能想使用 pandas,因为它在 Python 社区中非常流行。它拥有大量支持,并且许多人已经熟悉并可以舒适地使用 DataFrames。将 pandas 与 InfluxDB Python 客户端库结合使用,您可以轻松地将 InfluxDB 融入到您的应用程序中,从而获得专用时间序列数据库的优势。
要了解有关将 pandas DataFrames 与 InfluxDB 结合使用的更多信息,您可以观看我们关于此主题的“与开发者见面”视频。