Pandas数据分析学习打卡(四):时序数据

本文介绍了Pandas中时序数据的概念及其操作,包括使用to_datetime和date_range创建时间序列,支持的时间索引和切片,通过dt对象获取时间信息,以及重采样操作resample。还探讨了窗口函数rolling和expanding的应用,如设置窗口大小、处理缺失数据。同时提出了四个问题:如何批量加帧、增加Timestamp精度、处理超出时间范围的数据以及找出缺失日期。
摘要由CSDN通过智能技术生成

主要内容:时序数据,我的理解就是直接以时间为索引的序列,同时对时间信息有多种方法来实现对数据的灵活操作。
时间序列的创建有多种方式,可以用to_datetime方法和date_range方法来实现。
时间序列支持索引和切片操作

rng = pd.date_range('2020','2021', freq='W')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
ts['2020-01-26']
# 混合形态的索引
ts['2020-01-26':'20200726']

采用dt对象可以轻松获得关于时间的信息,利用strftime可重新修改时间格式,对于datetime对象可以直接通过属性获取信息。
对时序数据的操作中存在着类似groupby的分组操作,也就是所谓重采样,指的resample函数。采样之后必须配合其它方法比如sum、mean等,不然返回的只是个内部地址。采样组可以迭代,采样组的迭代和groupby迭代完全类似,对于每一个组都可以分别做相应操作。
最后是窗口函数,主要是rolling和expanding,它们的作用是规定一个窗口,然后配合聚合函数来使用。主要的参数是window和min_periods,前者指定窗口宽度,后者是指需要的非缺失数据点数量阀值。

问题与练习
【问题一】 如何对date_range进行批量加帧操作或对某一时间段加大时间戳密度?
我对加帧的理解是在两行时序数据之间插入新数据,不知道这样对不对:

import pandas as pd
import numpy as np
rng = pd.date_range(start='2020/1/1', end='2020/1/10', periods=3)
ts = pd.Series(np.random.randn(3), index=rng)
for i in range(0, len(ts)-1):
    irng = pd.date_range(start=ts.index[i], end=ts.index[i+1], periods=5)
    its = pd.Series(np.random.randn(len(irng)), index=irng)
    ts = ts.append(dict(zip([its.index.astype('str')[1:(len(its) - 1)]], its[1:(len(its) - 1)])), ignore_index=True)
print(ts.index())

【问题二】 如何批量增加TimeStamp的精度?

import pandas as pd
pd.Timestamp('2020-01-01') + pd.offset.Second(0)

【问题三】 对于超出处理时间的时间点,是否真的完全没有处理方法?
可以将超出处理时间的时间点减去最大时间,将差值记录下来存储到值中。

【问题四】 给定一组非连续的日期,怎么快速找出位于其最大日期和最小日期之间,且没有出现在该组日期中的日期?

import pandas as pd
rng = pd.date_range(start='2020/1/1', end='2020/1/10', periods=2)
rng_all = pd.date_range(start='2020/1/1', end='2020/1/10', periods=4)
print(rng_all[~rng_all.isin(rng)])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值