首页 > 编程问答 >对齐两个或多个独立时间序列的时间范围

对齐两个或多个独立时间序列的时间范围

时间:2024-08-04 15:48:13浏览次数:9  
标签:python algorithm time-series

我有几个属于同一时间范围但采样率不同的时间序列。所有系列的开始和结束时间都相同。

series_a_times = ['2023-01-01', '2023-01-03', '2023-01-04', '2023-01-08']
series_b_times = ['2023-01-01', '2023-01-04', '2023-01-04', '2023-01-08']
series_c_times = ['2023-01-01', '2023-01-02', '2023-01-04', '2023-01-08']

是否有一个包可以标准化这些时间序列的采样率并在需要时应用插值?所需的采样时间是:

series_times = ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07', '2023-01-08']

谢谢。


你可以使用 Pandas 和它的 resample 方法来标准化时间序列的采样率并进行插值。以下是如何操作:

import pandas as pd

series_a_times = ['2023-01-01', '2023-01-03', '2023-01-04', '2023-01-08']
series_b_times = ['2023-01-01', '2023-01-04', '2023-01-04', '2023-01-08']
series_c_times = ['2023-01-01', '2023-01-02', '2023-01-04', '2023-01-08']

# 示例数据
series_a_data = [10, 12, 15, 18]
series_b_data = [20, 25, 26, 30]
series_c_data = [35, 32, 38, 42]

# 创建带有日期时间索引的 Pandas Series
series_a = pd.Series(series_a_data, index=pd.to_datetime(series_a_times))
series_b = pd.Series(series_b_data, index=pd.to_datetime(series_b_times))
series_c = pd.Series(series_c_data, index=pd.to_datetime(series_c_times))

# 将所有序列重新采样到每日频率并使用线性插值
series_times = ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07', '2023-01-08']
common_index = pd.to_datetime(series_times)

series_a_resampled = series_a.resample('D').interpolate(method='linear').reindex(common_index)
series_b_resampled = series_b.resample('D').interpolate(method='linear').reindex(common_index)
series_c_resampled = series_c.resample('D').interpolate(method='linear').reindex(common_index)

# 打印重新采样的序列
print(series_a_resampled)
print(series_b_resampled)
print(series_c_resampled)

这将输出以下内容:

2023-01-01    10.0
2023-01-02    11.0
2023-01-03    12.0
2023-01-04    15.0
2023-01-05    16.0
2023-01-06    17.0
2023-01-07    18.0
2023-01-08    18.0
Freq: D, dtype: float64
2023-01-01    20.000000
2023-01-02    21.666667
2023-01-03    23.333333
2023-01-04    25.000000
2023-01-05    26.666667
2023-01-06    28.333333
2023-01-07    30.000000
2023-01-08    30.000000
Freq: D, dtype: float64
2023-01-01    35.0
2023-01-02    32.0
2023-01-03    35.0
2023-01-04    38.0
2023-01-05    39.0
2023-01-06    40.0
2023-01-07    41.0
2023-01-08    42.0
Freq: D, dtype: float64

在这个代码中:

  1. 我们首先创建带有日期时间索引的 Pandas Series,以使用 pd.to_datetime 将时间字符串列表转换为日期时间对象。
  2. 然后,我们使用 resample('D') 方法将每个序列重新采样到每日频率。
  3. 我们使用 interpolate(method='linear') 应用线性插值以填充缺失值。
  4. 最后,我们使用 reindex 确保所有重新采样的序列都具有共同的索引,该索引由 series_times 指定。

你可以选择适合你需求的任何其他插值方法来代替 linear ,例如 nearest spline polynomial 。有关可用选项的更多信息,请参阅 Pandas 文档。

标签:python,algorithm,time-series
From: 78830523

相关文章

  • Python中使用正则表达式
    摘要:正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。一.正则表达式的语法①行定位符行定位符就是用来描述字符串的边界。"^"表示行的开始,"$"表示行的结束。^tm  #tmequalTomorrowMoon可以......
  • 如何在python中使用xarray打开grib2文件?
    将xarray导入为xr导入cfgrib导入生态码将pandas导入为pddata=xr.open_dataset(r"C:\Users\new\forecast_data.grib2",engine="cfgrib")这是我的代码。我只想使用xarray读取这个文件。错误是:无法识别的引擎cfgrib必须是以下之一:['netcdf4'、'scipy'、'......
  • 如何在 java 或 python 中使用 HTTP(S) 解决无法解析的主机名或无法识别的名称错误?
    我尝试以编程方式访问网站的信息,但在Java和Python上都无法解析主机名。如果我指定IP地址,则会将错误更改为TLSV1_UNRECOGNIZED_NAME。不过,这个网站无需任何额外的工作就可以通过任何浏览器解决。我在这里浏览了很多潜在的解决方案,但对于Python,它说这个问题应该在2.7......
  • Python 请求 POST 请求与 websockets 库一起使用时挂起
    我使用Python中的requests库发送POST请求,同时维护与websockets库的WebSocket连接:importasyncioimportrequestsimportwebsocketsasyncdefwebsocket_handler(uri):asyncwithwebsockets.connect(uri)aswebsocket:whileTrue:me......
  • 在Python中,list1[::] = list2的空间复杂度是多少?
    此代码首先迭代列表nums,更新整数0、1、2(也分别称为红色、白色和蓝色)的计数。nums保证只有整数0、1和/或2。找到计数后,代码使用[::],这是一种就地修改列表的技巧,以排序numsdefsortColors(self,nums:List[int])->None:re......
  • [附开题]flask框架高校资产管理系统d8y3s(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育事业的快速发展,高校资产规模日益庞大,种类繁多,管理难度显著增加。传统的资产管理方式往往依赖于手工记录和纸质档案,不仅效率低......
  • [附开题]flask框架贺州图特产管理系统uuy79(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景贺州,这座历史悠久、文化底蕴深厚的城市,以其丰富的自然资源和独特的地理位置孕育了众多令人瞩目的特产。然而,在信息化快速发展的今天,贺州特......
  • [附开题]flask框架红枫超市会员管理系统ew5iq(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着零售行业的快速发展与消费者需求的日益多样化,超市作为人们日常生活中不可或缺的一部分,其管理效率和服务质量直接影响着顾客的购物体验......
  • PYTHON专题-(4)python叫你搞对象
    什么是面向过程编程?面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。什么是面向对象编程?面向对象编程——ObjectOrientedProgramming,简......
  • Python 基础教学:中文编码处理
    《Python基础教学:中文编码处理》在编程中,处理中文字符时经常会遇到编码问题。Python3默认使用UTF-8编码,但在处理文件、网络数据或与旧系统交互时,可能需要处理GBK、GB2312等其他编码。1.字符串的编码和解码在Python中,字符串(str)默认是Unicode编码。当你需要将......