python DataFrame的shift()方法的使用

 更新时间:2022年03月10日 08:55:30   作者:侯小啾  
在python数据分析中,可以使用shift()方法对DataFrame对象的数据进行位置的前滞、后滞移动,本文主要介绍了python DataFrame的shift()方法的使用,感兴趣的可以了解一下

在python数据分析中,可以使用shift()方法对DataFrame对象的数据进行位置的前滞、后滞移动。

语法

DataFrame.shift(periods=1, freq=None, axis=0)

  • periods可以理解为移动幅度的次数,shift默认一次移动1个单位,也默认移动1次(periods默认为1),则移动的长度为1 * periods。
  • periods可以是正数,也可以是负数。负数表示前滞,正数表示后滞。
  • freq是一个可选参数,默认为None,可以设为一个timedelta对象。适用于索引为时间序列数据时。
  • freq为None时,移动的是其他数据的值,即移动periods*1个单位长度。
  • freq部位None时,移动的是时间序列索引的值,移动的长度为periods * freq个单位长度。
  • axis默认为0,表示对列操作。如果为行则表示对行操作。

移动滞后没有对应值的默认为NaN。

示例

period为正,无freq

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
df = pd.DataFrame(data=data, index=index, columns=['close'])
df.index.name = 'date'
print(df)
print("=========================================")
df['昨收'] = df['close'].shift()
df['change'] = df['close'] - df['close'].shift()
print(df)

在这里插入图片描述

period为负,无freq

import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'

df = pd.DataFrame(data=data, index=index, columns=['昨收'])
print(df)
print("=========================================")
df['close'] = df['昨收'].shift(-1)
df['change'] = df['昨收'].shift(-1) - df['close']
print(df)

在这里插入图片描述

period为正,freq为正

import pandas as pd
import datetime
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'
df = pd.DataFrame(data=data, index=index, columns=['close'])
print(df)
print("=========================================")
print(df.shift(periods=2, freq=datetime.timedelta(3)))

如图,索引列的时间序列数据滞后了6天。(二乘以三)

在这里插入图片描述

period为正,freq为负

import pandas as pd
import datetime
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'
df = pd.DataFrame(data=data, index=index, columns=['close'])
print(df)
print("=========================================")
print(df.shift(periods=3, freq=datetime.timedelta(-3)))

如图,索引列的时间序列数据前滞了9天(三乘以负三)

在这里插入图片描述

period为负,freq为负

import pandas as pd
import datetime
pd.set_option('display.unicode.east_asian_width', True)
data = [51.0, 52.33, 51.21, 54.23, 56.78]
index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4']
index = pd.to_datetime(index)
index.name = 'date'
df = pd.DataFrame(data=data, index=index, columns=['close'])
print(df)
print("=========================================")
print(df.shift(periods=-3, freq=datetime.timedelta(-3)))

如图,索引列的时间序列数据滞后了9天(负三乘以负三)

在这里插入图片描述

 到此这篇关于python DataFrame的shift()方法的使用的文章就介绍到这了,更多相关python DataFrame shift() 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • tensorflow官方github预训练模型下载方式

    tensorflow官方github预训练模型下载方式

    这篇文章主要介绍了tensorflow官方github预训练模型下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • pandas实现to_sql将DataFrame保存到数据库中

    pandas实现to_sql将DataFrame保存到数据库中

    这篇文章主要介绍了pandas实现to_sql将DataFrame保存到数据库中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python利用wxPython实现ocr识别图片汉字程序

    Python利用wxPython实现ocr识别图片汉字程序

    在这篇博客中,我们将介绍一个如何使用wxPython构建的简单OCR识别图片汉字应用程序,文章的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2023-08-08
  • Python新手入门之常用关键字的简单示例详解

    Python新手入门之常用关键字的简单示例详解

    关键字是预先保留的标识符,每个关键字都有特殊的含义,下面这篇文章主要给大家介绍了关于Python新手入门之常用关键字的简单示例,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Python完全识别验证码自动登录实例详解

    Python完全识别验证码自动登录实例详解

    今天小编就为大家分享一篇Python完全识别验证码自动登录实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python打造爬虫代理池过程解析

    python打造爬虫代理池过程解析

    这篇文章主要介绍了python打造爬虫代理池过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python中的super用法详解

    Python中的super用法详解

    这篇文章主要介绍了Python中的super用法详解,本文讲解了关于super问题的发现与提出、走进Python的源码世界分析super的实现、延续的讨论super等内容,需要的朋友可以参考下
    2015-05-05
  • Python使用PyNmap进行网络扫描的详细步骤

    Python使用PyNmap进行网络扫描的详细步骤

    使用 PyNmap 进行网络扫描是一个非常有效的方式,PyNmap 是 Nmap 工具的一个 Python 封装,它允许你在 Python 脚本中使用 Nmap 的强大功能,本文介绍了如何使用 PyNmap 进行网络扫描的详细步骤,需要的朋友可以参考下
    2024-08-08
  • python使用Pycharm创建一个Django项目

    python使用Pycharm创建一个Django项目

    这篇文章主要介绍了python使用Pycharm创建一个Django项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Python+Mysql实现登录注册完整代码示例

    Python+Mysql实现登录注册完整代码示例

    在开发中用户注册和登录是常见的功能需求,这篇文章主要给大家介绍了关于Python+Mysql实现登录注册的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03

最新评论