【Python数据处理专题】-时间序列

Python数据处理——pandas 文章目录0. 基本概念Series(一)创建Series(二)Series的简单操作DataFrame(一)创建DataFrame1. 数据选取2. 加载数据3. 排序与合并4. 数据汇总5. 时间序列 0. 基本概念 Pandas的数据类型是一张表,可以把Pandas理解为内存型的数据库。 import pandas as pd Series:列 DataFrame:表 Series (一)创建Series 1. 使用列表list创建Series (1)默认列表索引从0 - n-1 # 使用列表List 阅读详情

时间序列

pandas时间序列

  • time series
    • 结构化数据形式
  1. 时间戳,timestamp,特定的时刻
  2. 固定时期,period
  3. 时间间隔,interval

时间序列基础

DatetimeIndex

  • pandas中的datetime对象

  • ts = pd.Series(np.random.randn(6),
                   index=pd.date_range('2018/11/11',period=6))
    
    ts.index # DatetimeIndex,时间戳
    ts.index.dtype # 用Numpy的datetime64数据类型以 纳秒 形式存储时间戳
    ts.index[0] # Timestamp
    

对Series的操作

  • 索引

    ts['2018/11/11']
    ts['20181111']
    ts['2018']
    ts['2018/11']
    
  • 切片

    ts[datetime(2018,11,11):]
    ts['2018/11/11':'2019/11/11'] # 用不存在与该时间序列中的时间戳切片
    
  • 过滤

    ts.truncate(after='2018/11/12')
    

对DataFrame的操作

  • 对DataFrame的操作

    df.loc['2018/11']
    
  • 对非唯一时间戳聚合

    df.index.is_unique # 属性判断索引是否唯一
    df.groupby(level=0).mean()
    

重采样

  • resampling

    • 将时间序列从一个频率转换到另一个频率的处理过程
      • 高频率 聚合 低频率——降采样(downsampling)
      • 升采样(upsampling):低频率数据 转换到 高频率
      • 并不是所有的重采样,都被划分为这两大类
        • W-WED(每周三)转换为W-FRI,既不是降采样也不是升采样
    ts.resample('D') #字符串‘D’是每天的意思
    ts.resample('M',kind='period').mean()
    

resample方法的参数

  • ts.resample(freq=, # 重采样频率的字符串
                axis=, # 重采样的轴,默认axis=0
                fill_method=, # 升采样如何插值:‘ffill’,‘bfill’
                closed=, # 降采样中,各时间段的哪一端是闭合的,right(默认)或left
                label=, # 降采样中,如何设置聚合值的标签,right或left
                loffset=, # 面元标签的时间校正值
                limit=, # 在前向或后向填充时,允许填充的最大时期数
                kind= # 聚合到时期或时间戳,默认居合值时间序列的索引类型
               )
    

截取

Series.dt.year.values_counts()

pd.to_datetime(df['col']).dt.month

生成日期范围

  • pd.date_range

    pd.date_range('2019/02/02',period=10)
    pd.date_range(end = '2019/02/02',period=10)
    pd.date_range('2018/11/11','2019/11/11',freq='BM')
    
  • 时间序列频率

    别名偏移量类型说明
    DDay每日历日
    BBusinessDay每工作日
    HHour每小时
    T或minMinute每分
    SSecond每秒
    L或msMilli每毫秒
    UMicro每微妙
    MMonthEnd每月最后一个日历日
    BMBusinessMonthEnd每月最后一个工作日
    MSMonthBegin每月第一个日历日
    BMSBusinessMonthBegin每月第一个工作日
    W-MON
    W-TUE
    Week从指定的星期几(MON、TUE、WED、THU、FRI、SAT、SUN)开始算起
    WOM-1MON
    WOM-2MON
    WeekOfMonth产生每月第一、第二、第三或第四周的星期几
    WOM-3FRI:每月第3个星期五
    Q-JAN
    Q-FEB
    QuarterEnd对于以指定月份(JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC)结束的年度,每季度最后一月的最后一个日历日
    BQ-JAN
    BQ-FEB
    BusinessQuarterEnd对于以指定月份结束的年度,每季度最后一月的最后一个工作日
    QS_JAN
    QS_FEB
    QuarterBegin对于以指定月份结束的年度,每季度最后一月的第一个日历日
    BQS_JAN
    BQS-FEB
    BusinessQuarterBegin对于以指定月份结束的年度,每季度最后一月的第一个工作日
    A_JAN
    A-FEB
    YuerEnd每年指定月份(JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC)的最后一个日历日
    BA_JAN
    BA-FEB
    BusinessYearEnd每年指定月份的最后一个工作日
    AS-JAN
    AS-FEB
    YearBegin每年指定月份的第一个日历日
    BAS-JAN
    BAS-FEB
    BusinessYearBegin每年指定月份的第一个工作日
  • normalize选项

    • 产生一组被规范化(normalize)到午夜的时间戳
    pd.date_range('2018/11/11 12:11:23',period=6,normalize=True)
    

日期偏移量

  • date offset

  • hour = pd.tseries.offsets.Hour()
    four_hours = pd.tseries.offsets.Hour(4)
    
    # 日期偏移量对日期进行位移
    now = datetime.datetime(2018,11,11)
    now + 3 * pd.tseries.offsets.Day()
    now + pd.tseries.offsets.MonthEnd() # 锚点偏移量(MonthEnd)
    

移动(超前或滞后)数据

  • 移动shifting

    • 沿着时间轴将数据前移或后移
    • Series和DataFrame都有一个shift方法用于执行单纯的前移或后移操作
      • 保持索引不变
    ts = pd.Series(np.random.randn(4),
                   	index=pd.date_range('2018/11/11',
                                        periods=4,
                                        freq='M'))
    
    ts.shift(2)
    ts.shift(-2)
    
  • 如果频率已知,则可以将传给shift以便实现对时间戳进行位移而不是对数据进行简单位移

    ts.shift(2,freq='M')
    

datetime模块

  • datetime模块的数据类型

    • datetime.datetime,日期和时间
    • datetime.time,时、分、秒、毫秒
    • datetime.date,公历年、月、日
    • datetime.timedelta,两个datetime.datetime值之差(日,秒,毫秒)
  • datetime.datetime

    • 毫秒形式存储日期和时间
    from datetime import datetime
    
    now = datetime.now()
    now.day
    now.year, now.month
    
  • datetime.timedelta

    • 两个datetime.datetime对象之间的时间差
    delta = datetime(2018,11,11) - datetime(2019,11,11)
    
    delta.days
    delta.seconds
    
    datetime(2018,11,11) + 2 * datetime.timedelta(12)
    

转换

字符串 与 datetime.datetime相互转换

datetime.datetime–>str

  • datetime.datetime–>str

    stamp = datetime.datetime(2018,11,22)
    
    str(stamp)
    stamp.strftime('%Y/%m-%d')
    

str --> datetime.datetime

    1. datetime.strptime
      • 需要已知日期格式
    value = '2018-11-22'
    datetime.strptime(value,'%Y-%m-%d')
    
    datestrs = ['7/18/2018','8/17/2018']
    [datetime.strptime(x,'%m/%d/%Y') for x in datestrs]
    
    1. parse()

      • –>datetime.datetime

      • 解析几乎所有人类能够理解的日期形式

      • 不需知道日期格式

    from dateutil.parse import parse
    
    parse('2018/12/22')
    parse(value)
    parse('Jan 31,1997 10:45 PM')
    
    # 参数
    parse('6/12/2018',dayfirst=True) # 日出现在月的前面
    
    1. pd.to_datetime()
    pd.to_datetime(datestrs)
    

datetime格式

代码说明
%Y4位年
%y2位年
%m2位月[01,12]
%d2位日[01,31]
%H时[00,23]
%I时[01,12]
%M2位分[0,29]
%S秒[00,61],(60和61用于闰秒)
%w整数表示星期几[0(星期天),6]
%U每年的第几周[00,53]
星期天是每周的第一天
每年第一个星期天之前的几天:第0周
%W每年的第几周[00,53]
星期一是每周的第一天
每年第一个星期一之前的几天:第0周
%z以+HHMM或-HHMM表示的UTC时区偏移量
如果时区为naive,则返回空字符串
%F%Y-%m-%d的简写
%D%m/%d/%y的简写

pd.to_datetime

df.col = pd.to_datetime(df.col,format="%Y/%m/%d")
  • format
    • Y:四位年份,2018
    • y:2位年份,18
    • m:月份
    • M:分钟
    • d:day

.astype()转换时间维度

  • 年月日,转换到月份、年份
df.col.values.astype("datetime64[M]")# 读取到月

df.col.values.astype("datetime64[Y]")# 读取到年

去除单位

df.col / np.timedelta64(1,'D')

转换时间维度

  • 同时使用与文字分组,不更改col1的数据类型

    df.col1[1]为'23/01/2018'
    df.set_index('col1',inplace=True)
    df.groupby(lambda col1:col1.split('/')[2])
    
    • 将col1列设置为index
    • 对index分组,匿名函数中split后取‘年’为分割点
    • 注意,不把col1列更改为DatetimeIndex(时间戳)

聚类分组时间序列

用0替换分和秒

  • dt = datetime.datetime(2011, 10, 29, 20, 30, 21)
    In [110]: dt.replace(minute=0, second=0)
    Out[110]: datetime.datetime(2011, 10, 29, 20, 0)
    

DatetimeIndex

转换为时间序列index

  • 设置index格式为DatetimeIndex,并引用date列的值

    df.index=pd.DatetimeIndex(df['col'])
    
  • 根据字符串样式,解析日期

    df.['col']=pd.to_datetime(df['col'],format='%Y-%m/%d')
    

By 儒冠多误身 2019/04/21

pandas 时间序列数据处理 【代码】pandas 时间序列数据处理。 阅读详情

相关推荐

Python数据处理041:数据分析之时间序列

Python数据分析之时间序列

若北辰 6607

【Python】Pandas将混合类型列转为datetime64的解决方法

因不同类型的数据拼接,导致数据列在转为datetime时报错,可修改to_datetime的errors解决问题。

离川的风 5123

Python Pandas 时间序列数据处理秘籍

在当今的数据驱动时代,时间序列数据无处不在,如金融市场的交易数据、气象观测数据、工业生产中的传感器数据等。Python 的 Pandas 库为我们处理时间序列数据提供了强大而便捷的工具。本文的目的是深入介绍如何使用 Pandas 进行时间序列数据的处理,包括数据的创建、索引、切片、重采样、插值等操作。范围涵盖了从基础的时间序列概念到高级的数据处理技巧,旨在帮助读者全面掌握使用 Pandas 处理时间序列数据的方法。本文将按照以下结构进行组织:首先介绍时间序列的核心概念和相关联系,包括时间戳、时间范围等;

AI Python 编程之道的博客 799

使用Pandas DataFrame.resample来处理时间序列

是一个功能强大的工具,用于对时间序列数据进行频率转换和重采样。通过适当地使用不同的参数组合,可以灵活地处理各种时间序列数据,并进行相应的处理和分析。

aobulaien001的博客 2009

Pandas(Python库):时间序列数据处理

时区,是地球上的一个区域采用的统一时间标准,通常基于该区域与格林尼治子午线的经度差异。全球分为24个时区,每个时区相隔15度经度,时间相差1小时。时区的引入,是为了协调不同地理位置的日期和时间,确保全球时间的一致性和可比性。在Pandas中,对象支持时区信息,这在处理跨时区的时间序列数据时尤为重要。时区信息可以使用IANA时区数据库中的时区名称来指定,如或。在Pandas中处理时间序列数据时,正确管理时区信息是确保数据准确性和一致性的关键。通过使用Timestamp对象和其相关方法,如。

kkchenjj的博客 1577

python数据分析——时间序列

时间序列是按照时间顺序排列的一系列随时间变化而变化的数据点或观测值。时间序列可以是离散的,例如每月的销售数据,也可以是连续的,例如气温和股票价格等。时间序列常用于预测和分析未来的趋势,例如经济增长、股票走势、天气变化等。时间序列分析是数据分析中的重要部分,它涉及到对随时间变化的数据进行研究,以揭示其内在规律、趋势和周期性变化。Python作为一种强大的编程语言,拥有众多的数据处理和可视化库,如pandasnumpymatplotlib和seaborn等,这些库在处理时间序列数据时表现出色。

qq_74013365的博客 4084

astype(‘datetime64[M]‘)无效的问题

astype('datetime64[M]') 无效的问题

qq_42577508的博客 1538

Codex辅助小说创作:零成本AI写作指南与实战技巧

自然语言处理技术通过深度学习模型理解语义上下文,其核心原理是基于大规模文本训练的语言模型预测能力。在创意写作领域,这项技术的价值在于突破传统写作工具的功能局限,实现从内容生成到风格模仿的智能化辅助。特别是提示词工程的应用,让创作者能够精准控制AI输出的内容和风格。在实际应用场景中,AI写作工具显著降低了小说创作门槛,适用于网络小说、奇幻科幻等多种文学类型。本文以OpenAI Codex为例,详细解析如何利用AI技术完成从故事大纲设计、章节生成到平台发布的全流程创作,其中提示词优化和内容质量把控是提升生成效果

weixin_32678995的博客 569

astype()函数

1astype()函数可用于转化dateframe某一列的数据类型 如下将dateframe某列的str类型转为int,注意astype()没有replace=True的用法,想要在原数据上修改,要写成如下形式。 注意只有当该列的字符串全是由纯数字构成时才可以这样写,如果混有字母,会报错:ValueError: invalid literal for int() with base 10: 利用int()函数转字符串也类似 参考:https://www.cnblogs.com/h...

fulk6667g78o8的专栏 2万+

多普勒频移测速与FMCW测距

文章目录时域与频域基于多普勒频移估计速度基于传统的FMCW测距什么是FMCWFMCW测距原理参考论文 时域与频域 时域 — 自变量是时间,即横轴是时间,纵轴是信号振幅的变化。表示振幅随时间的变化。 频域 — 自变量是频率,即横轴是频率,纵轴是该频率信号幅度的峰值。表示振幅峰值随频率的变化。 基于多普勒频移估计速度 当发送端静止而接收端相对运动时,有: v=FsFcv=\frac{F^s}{F}cv=FFs​c 其中,F是信号的原始频率;FsF^sFs 是接收信号频率与发送信号频率之差,即多普勒频移;c是

dsaaf21的博客 9190

电赛综合测评题练习(一)-(与2013年电赛综合测评要求类似)

电赛综合测评题练习 文章目录电赛综合测评题练习前言1. 波形发生器1.1 题目说明1.1.1 可用器件1.1.2 设计要求1.1.3 设计方案论证1.2 仿真电路设计1.2.1 脉冲波发生器电路1.2.1.1 方案介绍1.2.1.2 理论分析与计算1.2.1.3 电路系统设计1.2.1.4 仿真方案与仿真测试结果1.2.2 锯齿波电路1.2.2.1 理论分析与计算1.2.2.2 电路系统设计1.2.2.3 仿真方案与仿真测试结果1.2.3 正弦波I电路1.2.3.1 理论分析与计算1.2.3.2 电路系

daydayup!的博客 3万+

pandas 转换类型函数astype()

pandas类型转换函数

vergil_zsh的博客 1万+

京东联盟API实战:5分钟搞定商品返利链接生成(附Python代码)

本文详细介绍了如何利用京东联盟API快速构建自动化商品返利链接生成系统。通过Python代码实战,从API申请、环境配置到核心功能封装,手把手教你实现批量商品信息查询与推广链接生成,帮助内容创作者和开发者大幅提升电商推广效率。

weixin_29216957的博客 674

最新AI与Python在地球科学多源数据交叉融合中的前沿技术应用

最新AI与Python在地球科学多源数据交叉融合中的前沿技术应用

2403_89666119的博客 779

Acer宏碁暗影骑士擎AN515-58原厂系统恢复指南:从ISO镜像到完整出厂设置

本文详细介绍了为Acer宏碁暗影骑士擎AN515-58游戏本恢复原厂系统的完整指南。从准备工作、数据备份到下载官方镜像、制作恢复U盘,再到BIOS设置与恢复流程,一步步教你如何将系统完整还原至出厂状态,确保所有硬件驱动、NITROSENSE控制中心等专属优化功能恢复正常,解决系统卡顿、功能异常等问题。

weixin_29271263的博客 1108

从三极管到MOS管:单片机I/O口驱动电路设计实战解析

本文深入解析了从三极管到MOS管的单片机I/O口驱动电路设计实战经验。通过对比三极管与MOS管的本质区别,结合实际案例详细讲解了驱动电路的设计要点、优化技巧及常见问题解决方案,帮助工程师高效完成各类负载驱动设计。

weixin_29161785的博客 322

实时数据处理:时间序列分析与预测

1.背景介绍 实时数据处理是现代数据科学和人工智能领域的一个关键技术,它涉及到处理和分析大量高速变化的数据。时间序列分析和预测是实时数据处理的一个重要方面,它涉及到对历史数据进行分析,以预测未来发展趋势。在这篇文章中,我们将深入探讨实时数据处理的核心概念、算法原理、具体操作步骤和数学模型,并通过具体代码实例来说明其应用。 2.核心概念与联系 2.1 时间序列数据 时间序列数据是指在时间序列...

AI天才研究院 1198

STM32CubeIDE之SHT3X温湿度传感器移植HAL库

有了前面的OLED的学习,这个学习起来也很快。 分以下几步走 1.你要有个温度传感器,SHT3X这个型号的,因为我要讲这个 2.你要有个STM32开发板(我用的是STM32L431RCT) 3.顺便找台电脑下载一个STM32CubeIDE 4.简单的找一个SHT3X的驱动,我是去某宝嫖的,一般卖这个的都有,这个驱动分两个文件,是.c和.h的,我直接把这两个放在下边 读了我上一篇的人,看这个应该很熟悉吧,一样的套路,学习方法是一样的,你就照搬就行 下面是sht3x.c的原文档,里面有个CRC..

qq_47736089的博客 2316

【Python】时间序列分析完整过程

1. 导言 1.1 基本定义   根据维基百科上对时间序列的定义,我们简单将其理解为: 时间序列:一系列以时间顺序作为索引的数据点的集合。   因此,时间序列中的数据点,是围绕着相对确定的时间戳组织在一起的,与随机样本相比,它们包含了一些我们待提取的其他信息。   咱们先来看看,对时间序列数据分析,需要用到哪些库吧 ~ import numpy as np ...

jho9o5的博客 6万+

【推荐100个unity插件之24】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

【推荐100个unity插件之23】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1686

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python时间序列小波分析_python时间序列分析

什么是时间序列时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值。在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的(这里不考虑含外生变量的时间序列)。为什么用python用两个字总结“情怀”,爱屋及乌,个人比较喜欢python,就用python撸了。能做时间序列的软件很多,SAS、R、SPSS、Eviews甚至matla...

weixin_39943992的博客 1586

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

基于Python的时间序列的数据处理

基本概念: 时间戳,特定时期 固定时期,如2020年2月或2020年全年 时间间隔,由起始和结束时间戳表示,可以被看作是间隔的特例 实验或过程时间,每个时间点都是相对于特定起始时间的一个度量 from pandas import DataFrame,Series from datetime import datetime import numpy as np import pandas as ...

lynn_Dai的博客 1344

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python数据处理与分析案例,python如何进行数据处理

这篇文章主要介绍了基于python的数据处理案例,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

aq8821的博客 1295

跟我一起学Python数据处理(六十九):用Bokeh实现数据可视化及时间序列数据处理

大家好!一直以来,我都希望能和各位小伙伴在Python数据处理的学习道路上并肩前行,共同进步。今天,咱们继续深入探索数据处理中的数据可视化环节,重点学习Bokeh库的使用以及时间相关数据的处理与展示。掌握这些知识,能让我们更高效地挖掘数据价值,把数据背后的故事清晰地呈现出来。话不多说,开启今天的学习之旅吧!

yyy173611的博客 4748

时间序列分析-Python-纯新手教程

上述代码的作用是将时间序列分解为趋势、季节性和残差三个部分,对时间序列进行分解,分解为趋势、季节性和残差是为了更好地理解和描述时间序列数据的结构和特征。具体来说,时间序列可以分解为三个部分..

lmyuuuu的博客 5431
上一篇: 【Python数据处理专题】-加载IO
下一篇: 【Python数据分析专题】-数据探索分析
儒冠多误身
博客等级 码龄8年 12粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值