P9

知知知…
在这里插入图片描述
有一说一,重采样与窗口函数部分完全看不懂!!(哭…)

简单地记录一下前两部分的学习吧(嘻嘻…)

一、时间点的创建

  1. to_datetime方法
    这个方法的包容性很大,可以有很多种(有限)建立起时间点

  2. 使用 to_datetime 方法与 format 格式化函数
    加上format函数后,甚至可以为所欲为的建立时间点

  3. 可将时间点作为索引创建一个列表

  4. date_range方法
    主要参数有四个start/end/periods(时间点个数)/freq(间隔方法)

  5. bdate_range方法与上一个方法基本相同,它主要是提供了 freq 中有一个特殊的’C’/‘CBM’/'CBMS’选项,表示定制,需要联合weekmask参数和holidays参数使用

  6. DateOffset对象
    Timedelta绝对时间差的特点指无论是冬令时还是夏令时,增减1day都只计算24小时
    DataOffset相对时间差指,无论一天是23\24\25小时,增减1day都与当天相同的时间保持一致
    把 tz(time zone)去除,就能解除时区带来的烦恼!!!

二、时序的索引及属性

  1. 索引切片
    大概就是建立一个以时间点为索引的Series,而这个索引是可以以切片,间隔等形式给出

  2. 子集索引
    在读取数据时,类似一种模糊索引吧 比如对于一个年月日的索引,读取一个年月的索引,就能把这个月里的所有日对应的信息都展现出来

  3. 时间点的属性
    采用dt对象可以轻松获得关于时间的信息,dt这东西吧类似于Series的内置方法str 一样,dt是关于时间信息的内置方法(类),它能访问有关于周,日的具体信息

题题题…

【问题一】 如何对date_range进行批量加帧操作或对某一时间段加大时间戳密度?

可尝试加大 periods 参数或以更小的时间间隔 frq 来分隔

# periods = 3
print(pd.date_range(start='2020/12/23',end='2020/12/24', periods=3))
'''
DatetimeIndex(['2020-12-23 00:00:00', '2020-12-23 12:00:00',
               '2020-12-24 00:00:00'],
              dtype='datetime64[ns]', freq=None)
'''
# 增大periods = 9
print(pd.date_range(start='2020/12/23',end='2020/12/24', periods=9))
'''
DatetimeIndex(['2020-12-23 00:00:00', '2020-12-23 03:00:00',
               '2020-12-23 06:00:00', '2020-12-23 09:00:00',
               '2020-12-23 12:00:00', '2020-12-23 15:00:00',
               '2020-12-23 18:00:00', '2020-12-23 21:00:00',
               '2020-12-24 00:00:00'],
              dtype='datetime64[ns]', freq=None)

'''
# 以 D(天)为时间间隔
print(pd.date_range(start='2020/12/23', end='2020/12/24', freq='D'))
'''
DatetimeIndex(['2020-12-23', '2020-12-24'], dtype='datetime64[ns]', freq='D')
'''

# 以 T(每小时)为时间间隔
print(pd.date_range(start='2020/12/23', end='2020/12/24', freq='T'))
'''
DatetimeIndex(['2020-12-23 00:00:00', '2020-12-23 00:01:00',
               '2020-12-23 00:02:00', '2020-12-23 00:03:00',
               '2020-12-23 00:04:00', '2020-12-23 00:05:00',
               '2020-12-23 00:06:00', '2020-12-23 00:07:00',
               '2020-12-23 00:08:00', '2020-12-23 00:09:00',
               ...
               '2020-12-23 23:51:00', '2020-12-23 23:52:00',
               '2020-12-23 23:53:00', '2020-12-23 23:54:00',
               '2020-12-23 23:55:00', '2020-12-23 23:56:00',
               '2020-12-23 23:57:00', '2020-12-23 23:58:00',
               '2020-12-23 23:59:00', '2020-12-24 00:00:00'],
              dtype='datetime64[ns]', length=1441, freq='T')
'''

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

增加精度不难 在建立时间点的时候,秒数的后面至多可以写到纳秒级别

print(pd.to_datetime('2020 12 22 00:00:00.000000010'))
'''
2020-12-22 00:00:00.000000010
'''

至于批量处理…

【问题三】 对于超出处理时间的时间点,是否真的完全没有处理方法?

官方文档提示:If you have data that is outside of the Timestamp bounds,see Timestamp limitations,then you can use a Periodlndex andor Series of Periods to do computations.

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

time = pd.date_range(start='2020/12/23', end='2020/12/31', periods=3)
print(time)
'''
DatetimeIndex(['2020-12-23', '2020-12-27', '2020-12-31'], dtype='datetime64[ns]', freq=None)
'''
print(time.max(), time.min())  # 2020-12-31 00:00:00 2020-12-23 00:00:00
time1 = pd.date_range(start=str(time.min()), end=str(time.max()), freq='D')
print(time1[~time1.isin(time)])
'''
DatetimeIndex(['2020-12-24', '2020-12-25', '2020-12-26', '2020-12-28',
               '2020-12-29', '2020-12-30'],
              dtype='datetime64[ns]', freq=None)
'''

【练习一】 现有一份关于某超市牛奶销售额的时间序列数据,请完成下列问题:

df = pd.read_csv(r'C:\Users\YANG\Desktop\joyful-pandas-master\data\time_series_one.csv')
print(df.head())
'''
      日期   销售额
0  2017/2/17  2154
1  2017/2/18  2095
2  2017/2/19  3459
3  2017/2/20  2198
4  2017/2/21  2413
'''

(a)销售额出现最大值的是星期几?(提示:利用dayofweek函数)

好的,就用 dayofweek 函数呢

df = pd.read_csv(r'C:\Users\YANG\Desktop\joyful-pandas-master\data\time_series_one.csv')
# print(df.head())
s = df['日期'][df['销售额'] == df['销售额'].max()] # 取出时间点的序列
print(pd.to_datetime(s.iloc[0]).dayofweek) # s.iloc[0]读出序列的绝对索引的第一个值,即时间点
# 6

剩下的可难了呢(哼)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值