从InfluxDB和Pandas入门
作者:Anais Dotis-Georgiou / 产品,用例,开发者,入门
2020年1月16日
导航至
InfluxData引以为豪的是始终将开发者满意度放在首位。维护开发者满意度的一个很大部分是提供客户端库,使用户能够通过他们选择的语言和库与数据库进行交互。数据分析是与Python用例最广泛相关的任务,占Python任务的58%,因此Pandas是Python用户第二受欢迎的库也就不足为奇了。Pandas是Python用户第二受欢迎的库。InfluxDB 2.0 Python客户端数据支持Pandas DataFrame,以便数据科学家能够轻松地使用InfluxDB。
在本教程中,我们将学习如何查询我们的InfluxDB实例,并以DataFrame的形式返回数据。我们还将探索客户端仓库中存在的某些数据科学资源。有关如何开始使用InfluxDB Python客户端库的信息,请参阅这篇博客。
数据科学资源
InfluxDB Python客户端仓库中包含各种数据科学资源,以帮助您充分利用客户端的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="https://127.0.0.1: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 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与InfluxDB的Flux互补
尽管Flux拥有与Pandas类似的数据转换能力,但InfluxDB重视开发者的时间。如果您处理的是较小的数据集,可能没有太大动力在服务器端执行这些转换或学习Flux。希望这种Pandas能力能帮助您更快地执行您的时序分析。一如既往,如果您遇到困难,请在我们的社区网站或Slack频道上分享。我们非常希望得到您的反馈,并帮助您解决遇到的问题。