我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Pandas中时间序列的处理大全

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Pandas中时间序列的处理大全

目录
  • 一、时间序列数据的生成
  • 二、Pandas设置索引
  • 三、 时间序列数据的截取
  • 四、Pandas重复值处理
    • 4.1 查询是否有重复值
    • 4.2 去除重复值
  • 五、Pandas缺失值处理
    • 5.1 缺失值查询
  • 六、pandas统计计算方法
    • 七、Pandas数据重采样
      • 总结

        一、时间序列数据的生成

        pd.date_ranges生成时间序列

        • time格式:年月日分隔符号可以是"-","/",空格这三种格式(年月日、日月年、月日年都可以);时分秒只能用":"分隔,顺序只能是时分秒。
        • start:起始时间(time)
        • end:终止时间(time)
        • periods:期数(int),使用时只能出现start或者end,两者不能同时出现
        • freq:频率(numY,num年;numM,num月;numD,num日),详细参数见下表
        频率别名 描述
        B 工作日频率
        C 自定义工作日频率
        D 日历日频率
        W 每周频率
        M 每月最后一个日历日
        SM 每半个月最后一个日历日(15日和月末)
        BM 每月最后一个工作日
        CBM 自定义每月最后一个工作日
        MS 每月第一个日历日
        SMS 每半月第一个日历日(第1和第15)
        BMS 每月第一个工作日
        CBMS 自定义每月第一个工作日
        Q 每季度最后一个月的最后一个日历日
        BQ 每季度最后一个月的最后一个工作日
        QS 每季度最后一个月的第一个日历日
        BQS 每季度最后一个月的第一个工作日
        A, Y 每年的最后一个日历日
        BA, BY 每年的最后一个工作日
        AS, YS 每年的第一个日历日
        BAS, BYS 每年的第一个工作日
        BH 工作日按“时”计算频率
        H 每小时频率
        T, min 每分钟频率
        S 每秒频率
        L, ms 毫秒频率
        U, us 微秒频率
        N 纳秒频率
        
        import pandas as pd
        import numpy as np
        df = pd.DataFrame( data=np.random.randint(1,20,10),
                          index=pd.date_range(start="20/01/2021",periods=10,freq="M"),) 
        print(df)
        

                     0
        2021-01-31   1
        2021-02-28   6
        2021-03-31  12
        2021-04-30   5
        2021-05-31   7
        2021-06-30   4
        2021-07-31   9
        2021-08-31   7
        2021-09-30  18
        2021-10-31  10

                     0
        count  10.00000
        mean    7.90000
        std     4.72464
        min     1.00000
        25%     5.25000
        50%     7.00000
        75%     9.75000
        max    18.00000

        二、Pandas设置索引

        创建时添加索引

        pd.DataFrame(...,index=[],...)

        df.set_index使用现有列设置索引

        • keys:列名,多个列用[name1,name2]
        • drop:设置升序(True)、降序(False)
        • inplace:替换原变量(True),不替换(False)
        
        df.set_index(["X"],inplace=True)
        df.set_index(["X","Y"],inplace=True)
        

        df.reset_index可以还原索引

        
        df.reset_index("X")
        

        三、 时间序列数据的截取

        df.truncate过滤数据

        • before:过滤之前的数据(time)
        • after:过滤之后的数据(time)
        • axis:列(columns),行(index)
        
        df.truncate(before="2021-5",after="2021-9")
        

                   0
        2021-05-31  7
        2021-06-30  4
        2021-07-31  9
        2021-08-31  7

        df.loc索引过滤

        
        df.loc["2021-5":]
        

                     0
        2021-05-31   7
        2021-06-30   4
        2021-07-31   9
        2021-08-31   7
        2021-09-30  18
        2021-10-31  10

        四、Pandas重复值处理

        4.1 查询是否有重复值

        duplicated()方法判断

        
        # 判断dataframe数据整行是否重复
        df.duplicated()
        # dataframe数据某列是否重复
        df.columns_name.duplicated()
        # 判断dataframe数据多列数据是否重复(多列组合查)
        df.duplicated(subset = ['n1','n2'])
        

        groupby().count()

        
        df.groupby('columns').count()>1
        

        4.2 去除重复值

        drop_duplicats参数说明:

        • 参数subset:用来指定特定的列,默认所有列
        • 参数keep:first和last表示是选择最前一项还是最后一项保留,默认first
        • 参数inplace:是直接在原来数据上修改还是保留一个副本,默认为False
        
        df.drop_duplicats(subset=['name1','name2'],keep='last',inplace=True)
        

        按照index索引去重

        
        df.index.duplicated(keep='last')
        
        
        

        五、Pandas缺失值处理

        5.1 缺失值查询

        df.info查询各列的信息

        
        df.info()
        
        # res
        <class 'pandas.core.frame.DataFrame'>
        Int64Index: 10 entries, 19 to 14
        Data columns (total 2 columns):
         #   Column  Non-Null Count  Dtype
        ---  ------  --------------  -----
         0   Y       10 non-null     int32
         1   Z       10 non-null     int32
        dtypes: int32(2)
        memory usage: 160.0 bytes
        

        df.isnull判断是否是空值

        
        df.isnull().any() # 筛选出缺失值的列
        df.isna().any() # 筛选出缺失值的列
        

        df.empty判断是否有空值

        
        df.empty
        

        5.2 缺失值填充

        ffill 空值取前面的值

        
        df.ffill()
        

        bfill 空值取后面的值

        
        df.bfill()
        

        fillna 指定值填充

        
        df.fillna(1)
        df.fillna({'A': 0, 'B': 1, 'C': 2, 'D': 3}) # 指定列填充
        

        interpolate 插值

        • df.interpolate(method=‘linear', axis=0, limit=None, inplace=False, limit_direction=‘forward', limit_area=None, downcast=None, **kwargs)
        • method参数解释
          • linear:忽略索引,线性等距插值
          • time:在以天或者更高频率的数据上插入给定的时间间隔长度数据
          • index, values:使用索引的实际数值
          • pad:使用现有值填写NaN
          • nearest, zero, slinear, quadratic, cubic, spline, barycentric, polynomial:传递给scipy.interpolate.interp1d。这些方法使用索引的数值。polynomial和spline都要求您还指定一个顺序(int),例如 ,df.interpolate(method=‘polynomial', order=5)
          • krogh,piecewise_polynomial,spline,pchip,akima:包括类似名称的SciPy插值方法。
          • from_derivatives:指 scipy.interpolate.BPoly.from_derivatives,它替换了scipy 0.18中的'piecewise_polynomial'插值方法
        • axis : {0或'index',1或'columns',None},默认为None;沿轴进行interpolate。
        • limit: int;要填充的连续NaN的最大数量。必须大于0
        • inplace : bool,默认为False;如果可以,更新现有数据
        • limit_direction : {‘forward',‘backward',‘both'},默认为'forward';如果指定了限制,则将沿该方向填充连续的NaN
        • limit_area : {None, ‘inside', ‘outside'}, 默认为None;如果指定了限制,则连续的NaN将填充此限制。
        • None:无填充限制
        • inside:仅填充有效值包围的NaN
        • outside: 仅在有效值之外填充NaN
        
        dff.interpolate(method='polynomial',order=2)
        

        删除缺失值

        
        df.dropna(how='any')
        

        六、pandas统计计算方法

        方法 说明
        count 非NaN值的数理
        describe 列计算统计汇总
        min、max 最小值和最大值
        argmin、argmax 最小值和最大值索引(int)
        idxmin、idxmax 最小值和最大值索引
        quantile 分位数([0,1],0.25下四分为)
        sum 总和
        mean 均值
        median 0.5分位数,中位数
        mad 根据均值计算绝对离差
        var 方差
        std 标准差
        
        df.describe()
        

        七、Pandas数据重采样

        重采样就是基于时间数据由一个频率转换到另一个频率的方法,分为降采样和升采样。

        降采样:高频率===>低频率,如频率日变为月,需要指定统计函数如sum

        
        df.resample("M").mean()
        

        升采样:低频率===>高频率,如频率月变为日,需要进行缺失值填充

        
        df.resample("D").asfreq().fillna(1)
        

        总结

        到此这篇关于Pandas中时间序列处理的文章就介绍到这了,更多相关Pandas时间序列处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

        免责声明:

        ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

        ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

        Pandas中时间序列的处理大全

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

        下载Word文档

        猜你喜欢

        Pandas中时间序列的处理大全

        目录一、时间序列数据的生成二、Pandas设置索引三、 时间序列数据的截取四、Pandas重复值处理4.1 查询是否有重复值4.2 去除重复值五、Pandas缺失值处理5.1 缺失值查询六、pandas统计计算方法七、Pandas数据重采样
        2022-06-02

        Pandas中时间序列的处理方法

        这篇文章主要为大家展示了“Pandas中时间序列的处理方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Pandas中时间序列的处理方法”这篇文章吧。一、时间序列数据的生成pd.date_ran
        2023-06-15

        如何进行Pandas库中时间序列的处理

        这期内容当中小编将会给大家带来有关如何进行Pandas库中时间序列的处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与
        2023-06-02

        怎么理解Pandas时间序列

        本篇内容主要讲解“怎么理解Pandas时间序列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Pandas时间序列”吧!依托 NumPy 的 datetime64、timedelta64
        2023-06-01

        PyTorch中怎么处理时间序列数据

        在PyTorch中处理时间序列数据通常需要使用torch.utils.data.Dataset和torch.utils.data.DataLoader来加载和处理数据。以下是一般的处理步骤:创建一个自定义的数据集类,继承自torch.uti
        PyTorch中怎么处理时间序列数据
        2024-03-05

        MariaDB中如何处理时间序列数据

        在MariaDB中处理时间序列数据通常会使用日期和时间函数来操作数据。以下是一些常用的日期和时间函数:NOW():返回当前日期和时间。CURDATE():返回当前日期。CURTIME():返回当前时间。DATE():提取日期部分。T
        MariaDB中如何处理时间序列数据
        2024-04-09

        Pandas.DataFrame时间序列数据处理的实现

        本文主要介绍了Pandas.DataFrame时间序列数据处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
        2023-02-23

        Cassandra如何处理时间序列数据

        Cassandra是一个分布式数据库系统,通常用于处理大规模数据和高并发读写操作。在处理时间序列数据时,Cassandra可以使用以下一些方法:数据模型设计:在设计数据模型时,可以使用时间戳作为主键或者索引列,这样可以方便快速地检索和查询时
        Cassandra如何处理时间序列数据
        2024-04-09

        PyTorch中怎么处理时间序列数据任务

        在PyTorch中处理时间序列数据任务通常需要使用torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU等递归神经网络模块,以及torch.utils.data.Dataset和torch.utils.data.
        PyTorch中怎么处理时间序列数据任务
        2024-03-05

        Keras中如何处理时间序列预测任务

        在Keras中处理时间序列预测任务通常涉及到使用循环神经网络(RNN)或卷积神经网络(CNN)来构建模型。下面是一个简单的使用RNN来处理时间序列预测任务的示例代码:import numpy as npfrom keras.models
        Keras中如何处理时间序列预测任务
        2024-03-08

        Netdata在处理大量时间序列数据时的性能优化技巧是什么

        Netdata处理大量时间序列数据时的性能优化技巧包括:使用数据聚合:将原始数据聚合成更高层次的数据,例如将每分钟的数据聚合成每小时的数据,减少数据量。数据压缩和存储优化:使用压缩算法和优化存储格式,减小数据量并提高读取效率。数据分片和分区
        Netdata在处理大量时间序列数据时的性能优化技巧是什么
        2024-06-03

        编程热搜

        • Python 学习之路 - Python
          一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
          Python 学习之路 - Python
        • chatgpt的中文全称是什么
          chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
          chatgpt的中文全称是什么
        • C/C++中extern函数使用详解
        • C/C++可变参数的使用
          可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
          C/C++可变参数的使用
        • css样式文件该放在哪里
        • php中数组下标必须是连续的吗
        • Python 3 教程
          Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
          Python 3 教程
        • Python pip包管理
          一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
          Python pip包管理
        • ubuntu如何重新编译内核
        • 改善Java代码之慎用java动态编译

        目录