当前位置: 首页 > article >正文

【Pandas】pandas Series shift

Pandas2.2 Series

Time Series-related

方法描述
Series.asfreq(freq[, method, how, …])用于将时间序列数据转换为指定的频率
Series.asof(where[, subset])用于返回时间序列中指定索引位置的最近一个非缺失值
Series.shift([periods, freq, axis, …])用于将时间序列数据沿指定轴移动指定的周期数

pandas.Series.shift

pandas.Series.shift 方法用于将时间序列数据沿指定轴移动指定的周期数。它可以用于向前或向后移动数据,并可以选择不同的填充方式来处理移出范围的数据。

详细描述
  • 参数:
    • periods: 整数,默认为 1。表示要移动的周期数。正值表示向后移动(即下移),负值表示向前移动(即上移)。
    • freq: 可选,频率偏移量。如果提供,则根据该频率进行时间戳的移动。
    • axis: 可选,默认为 0。表示沿哪个轴进行移动,对于 Series 来说通常是 0
    • fill_value: 可选,默认为 None。用于填充移出范围的数据。如果未提供,则默认使用 NaN
    • suffix: 该参数在 pandas.Series.shift 中无效,可能是其他方法中的参数,请忽略。
返回值
  • 返回一个新的 Series,其中数据已根据指定的周期数和频率进行了移动。
示例代码及结果
import pandas as pd
import numpy as np

# 创建一个带有日期索引的时间序列
dates = pd.date_range(start='2023-10-01', periods=5, freq='D')
s = pd.Series([1, 2, 3, 4, 5], index=dates)

print("原始 Series:")
print(s)

# 向后移动 2 个周期
s_shifted_2_periods = s.shift(periods=2)

print("\n向后移动 2 个周期后的 Series:")
print(s_shifted_2_periods)

# 向前移动 1 个周期,并用 0 填充移出范围的数据
s_shifted_neg1_fill0 = s.shift(periods=-1, fill_value=0)

print("\n向前移动 1 个周期并用 0 填充后的 Series:")
print(s_shifted_neg1_fill0)

# 根据频率移动时间戳
s_shifted_freq = s.shift(freq='2D')

print("\n根据频率 '2D' 移动时间戳后的 Series:")
print(s_shifted_freq)
输出结果
原始 Series:
2023-10-01    1
2023-10-02    2
2023-10-03    3
2023-10-04    4
2023-10-05    5
Freq: D, dtype: int64

向后移动 2 个周期后的 Series:
2023-10-01    NaN
2023-10-02    NaN
2023-10-03    1.0
2023-10-04    2.0
2023-10-05    3.0
Freq: D, dtype: float64

向前移动 1 个周期并用 0 填充后的 Series:
2023-10-01    2
2023-10-02    3
2023-10-03    4
2023-10-04    5
2023-10-05    0
Freq: D, dtype: int64

根据频率 '2D' 移动时间戳后的 Series:
2023-10-03    1
2023-10-04    2
2023-10-05    3
2023-10-06    4
2023-10-07    5
Freq: D, dtype: int64
结果解释
  • 向后移动 2 个周期
    • 数据向下移动了 2 个位置,因此前两个位置是 NaN,后续位置的数据依次下移。
  • 向前移动 1 个周期并用 0 填充
    • 数据向上移动了 1 个位置,因此最后一个位置用 0 填充,其他位置的数据依次上移。
  • 根据频率 ‘2D’ 移动时间戳
    • 时间戳增加了 2 天,但数据保持不变,只是索引发生了变化。

这种方法非常适用于时间序列分析中需要对齐不同时间段的数据或进行滞后/超前分析的场景。


http://www.kler.cn/a/582528.html

相关文章:

  • 浅谈React的Diff算法,简单易懂!
  • 创建模式-工厂方法模式(Factory Method Pattern)
  • EasyRTC实现海思设备与Web浏览器小程序双向通话时,收到浏览器H5端发来的音频应该如何解码播放
  • 渗透测试工具之OpenVAS
  • 【SQL】查看触发器名称、所属的表(包括架构)、事件类型、触发器类型(AFTER/INSTEAD OF)、是否启用、创建日期
  • coze ai assistant Task 2
  • Tomato靶机攻略
  • 【深度学习】图像卷积
  • Jupyter Notebook 全平台安装与配置教程(附Python/Anaconda双方案)
  • pytest数据库测试文章推荐
  • ‌Visual Studio Code(VS Code)支持的编程语言
  • 011-base64
  • AI概率学预测足球大小球让球数据分析
  • InternVL:论文阅读 -- 多模态大模型(视觉语言模型)
  • python之数据处理的安全(链家)
  • Ubuntu conda虚拟环境不同设备之间迁移
  • PHP前后开发纪录
  • 【C++初阶】string①:管理char的字符数组是一个模版(快速上手使用)
  • Spring Boot集成HikariCP:原理剖析与实战指南
  • 【蓝桥杯单片机】第十一届省赛