iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python获取和存储时间序列数据
  • 722
分享到

怎么用Python获取和存储时间序列数据

2023-07-06 01:07:04 722人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下怎么用python获取和存储时间序列数据的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。要求本教程在通过

今天小编给大家分享一下怎么用python获取和存储时间序列数据的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

要求

教程在通过Homebrew已安装Python 3的MacOS系统上完成。建议安装额外的工具,比如virtualenv、pyenv或conda-env,以简化Python和Client的安装。完整的要求在这里:

txtinfluxdb-client=1.30.0pandas=1.4.3requests>=2.27.1

本教程还假设您已经创建Free Tier InfluxDB云帐户或正在使用InfluxDB OSS,您也已经:

  • 创建了存储桶。您可以将存储桶视为数据库或InfluxDB中最高层次的数据组织。

  • 创建了令牌。

最后,该教程要求您已经使用OpenWeatherMap创建了一个帐户,并已创建了令牌。

请求天气数据

首先,我们需要请求数据。我们将使用请求库,通过OpenWeatherMap api从指定的经度和纬度返回每小时的天气数据。

# Get time series data from OpenWeatherMap APIparams = {'lat':openWeatherMap_lat, 'lon':openWeatherMap_lon, 'exclude': "minutely,daily", 'appid':openWeatherMap_token}r = requests.get(openWeather_url, params = params).JSON()hourly = r['hourly']

将数据转换成Pandas DataFrame

接下来,将jsON数据转换成Pandas DataFrame。我们还将时间戳从秒精度的Unix时间戳转换成日期时间对象。之所以进行这种转换,是由于InfluxDB写入方法要求时间戳为日期时间对象格式。接下来,我们将使用这种方法,将数据写入到InfluxDB。我们还删除了不想写入到InfluxDB的列。

python# Convert data to Pandas DataFrame and convert timestamp to datetime objectdf = pd.json_nORMalize(hourly)df = df.drop(columns=['weather', 'pop'])df['dt'] = pd.to_datetime(df['dt'], unit='s')print(df.head)

将Pandas DataFrame写入到InfluxDB

现在为InfluxDB Python客户端库创建实例,并将DataFrame写入到InfluxDB。我们指定了测量名称。测量含有存储桶中的数据。您可以将其视为InfluxDB的数据组织中仅次于存储桶的第二高层次结构。

您还可以使用data_frame__tag_columns参数指定将哪些列转换成标签。

由于我们没有将任何列指定为标签,我们的所有列都将转换成InfluxDB中的字段。标签用于写入有关您的时间序列数据的元数据,可用于更有效地查询数据子集。字段是您在 InfluxDB中存储实际时间序列数据的位置。

on# Write data to InfluxDBwith InfluxDBClient(url=url, token=token, org=org) as client:df = dfclient.write_api(write_options=SYNCHRONOUS).write(bucket=bucket,record=df,data_frame_measurement_name="weather",data_frame_timestamp_column="dt")

完整脚本

回顾一下,不妨看看完整的脚本。 我们采取以下步骤:

导入库。

收集以下内容:

  • InfluxDB存储桶

  • InfluxDB组织

  • InfluxDB令牌

  • InfluxDB URL

  • OpenWeatherMap URL

  • OpenWeatherMap 令牌

创建请求。

将JSON响应转换成Pandas DataFrame。

删除您不想写入到InfluxDB的任何列。

将时间戳列从Unix时间转换成Pandas日期时间对象。

为InfluxDB Python Client库创建实例。

编写DataFrame,并指定测量名称和时间戳列。

pythonimport requestsimport influxdb_clientimport pandas as pdfrom influxdb_client import InfluxDBClientfrom influxdb_client.client.write_api import SYNCHRONOUSbucket = "OpenWeather"org = "" # or email you used to create your Free Tier InfluxDB Cloud accounttoken = " url = "" # for example, https://us-west-2-1.aws.cloud2.influxdata.com/openWeatherMap_token = ""openWeatherMap_lat = "33.44"openWeatherMap_lon = "-94.04"openWeather_url = "Https://api.openweathermap.org/data/2.5/onecall"# Get time series data from OpenWeatherMap APIparams = {'lat':openWeatherMap_lat, 'lon':openWeatherMap_lon, 'exclude': "minutely,daily", 'appid':openWeatherMap_token}r = requests.get(openWeather_url, params = params).json()hourly = r['hourly']# Convert data to Pandas DataFrame and convert timestamp to datetime objectdf = pd.json_normalize(hourly)df = df.drop(columns=['weather', 'pop'])df['dt'] = pd.to_datetime(df['dt'], unit='s')print(df.head)# Write data to InfluxDBwith InfluxDBClient(url=url, token=token, org=org) as client:df = dfclient.write_api(write_options=SYNCHRONOUS).write(bucket=bucket,record=df,data_frame_measurement_name="weather",data_frame_timestamp_column="dt")

查询数据

现在,我们已经将数据写入到InfluxDB,可以使用InfluxDB UI来查询数据了。导航到数据资源管理器(从左侧导航栏中)。使用Query Builder(查询构建器),选择想要可视化的数据和想要为之可视化的范围,然后点击“提交”。

怎么用Python获取和存储时间序列数据

图1. 天气数据的默认物化视图。InfluxDB自动聚合时间序列数据,这样新用户就不会意外查询太多数据而导致超时

专业提示:当您使用查询构建器查询数据时,InfluxDB自动对数据进行下采样。要查询原始数据,导航到Script Editor(脚本编辑器)以查看底层Flux查询。Flux是面向InfluxDB的原生查询和脚本语言,可用于使用您的时间序列数据来分析和创建预测。使用aggregateWindow()函数取消行注释或删除行,以查看原始数据。

怎么用Python获取和存储时间序列数据

图2. 导航到脚本编辑器,并取消注释或删除aggregateWindow()函数,以查看原始天气数据

以上就是“怎么用Python获取和存储时间序列数据”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: 怎么用Python获取和存储时间序列数据

本文链接: https://www.lsjlt.com/news/356975.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Python获取和存储时间序列数据
    今天小编给大家分享一下怎么用Python获取和存储时间序列数据的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。要求本教程在通过...
    99+
    2023-07-06
  • 用Python获取和存储时间序列数据
    译者 | 布加迪审校 | 孙淑娟本教程将介绍如何使用Python从OpenWeatherMap API获取时间序列数据,并将其转换成Pandas DataFrame。接下来,我们将使用InfluxDB Python Client,将该数据写...
    99+
    2023-05-14
    Python 时间序列数据
  • Prometheus怎么存储时间序列数据
    Prometheus 是一款开源的监控系统,通常用于存储和查询时间序列数据。它使用一种称为“metric”的数据模型来表示时间序列数...
    99+
    2024-04-09
    Prometheus
  • Cassandra中的时间序列数据怎么存储和查询
    在Cassandra中,时间序列数据可以使用具有时间戳的列来存储。一种常见的方法是使用时间戳作为行键的一部分,然后将时间序列数据存储...
    99+
    2024-03-11
    Cassandra
  • 如何使用Redis序列化存储时间序列数据
    在Redis中存储时间序列数据可以采用以下两种方式进行序列化: 使用Redis的数据结构:可以将时间序列数据存储在Redis的有...
    99+
    2024-04-29
    Redis
  • Prometheus系统如何存储时间序列数据
    Prometheus系统存储时间序列数据使用一种称为"TSDB"(Time Series Database)的存...
    99+
    2024-03-04
    Prometheus
  • PostgreSQL中的时间序列数据如何存储和分析
    在PostgreSQL中,时间序列数据可以使用timestamp或timestamptz数据类型来存储。timestamp类型存储日...
    99+
    2024-04-02
  • CNTK怎么处理序列数据和时间序列数据
    CNTK(Microsoft Cognitive Toolkit)是一个深度学习工具包,可以用来处理序列数据和时间序列数据。以下是一...
    99+
    2024-04-02
  • python怎么存储和读取数据
    在Python中,可以使用各种方法来存储和读取数据,具体方式取决于数据的类型和使用环境。以下是一些常见的方法: 使用变量:可以将数...
    99+
    2023-10-26
    python
  • 怎么用Python与AI分析时间序列数据
    这篇文章主要讲解了“怎么用Python与AI分析时间序列数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python与AI分析时间序列数据”吧!简介时间序列数据表示一系列特定时间内的...
    99+
    2023-06-30
  • python怎么获取数据行列数
    在Python中,可以使用numpy库来获取数据的行数和列数。下面是一个示例代码:```pythonimport numpy as ...
    99+
    2023-09-27
    python
  • 怎么使用时间序列数据库
    这篇文章主要讲解了“怎么使用时间序列数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用时间序列数据库”吧!时间序列数据库的简要介绍-InfluxD...
    99+
    2024-04-02
  • MySQL中怎么设计时间序列存储引擎
    MySQL中怎么设计时间序列存储引擎,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先,让我们看看OpenTSDB是什么样的情况。下图便是...
    99+
    2024-04-02
  • Python怎么获取时间戳
    Python获取时间戳的方法:1、使用`time`模块的`time()`函数;2、使用`datetime`模块的`timestamp()`函数;3、使用`calendar`模块的`timegm()`函数;4、使用第三方库`arrow`。Py...
    99+
    2023-08-08
  • sqlserver怎么获取数据更新时间
    在 SQL Server 中,可以通过以下两种方法获取数据的更新时间: 使用系统函数 sys.dm_db_index_usage_...
    99+
    2024-04-09
    sqlserver
  • redis集群数据存储和获取原理
    redis集群数据获取原理:     当client向redis cluster中的任意一个节点发送与数据库key有关的命令时,   &...
    99+
    2024-04-02
  • PHP怎么存储和获取对象
    在PHP中,对象可以使用序列化和反序列化来存储和获取。序列化是指将对象转换为字符串的过程,反序列化是指将字符串转换回对象的过程。 存...
    99+
    2024-04-29
    PHP
  • python怎么获取列表中的数据
    要获取列表中的数据,可以使用索引。索引是一个整数值,表示列表中的元素位置,从0开始计数。例如,给定以下列表:```pythonmy_...
    99+
    2023-09-04
    python
  • 免费的云存储空间怎么获取
    要获取免费的云存储空间,可以尝试以下几种方法:1. 注册免费云存储账户:许多云存储服务商都提供免费的账户,注册后即可获得一定的免费存...
    99+
    2023-06-08
    云存储
  • Grafana怎么处理时间序列数据
    Grafana 是一个开源的数据可视化和监控工具,可以用于处理时间序列数据。在 Grafana 中,您可以通过以下方式处理时间序列数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作