python pandas 日期_【Python数据分析】pandas日期范围date_range

1.date_range

1.1 按频率生成时间段

import pandas as pd

print(pd.date_range('2017/1/1','2017/1/4')) # 默认freq = 'D':每日历日

print(pd.date_range('2017/1/1','2017/1/4', freq = 'B')) # B:每工作日

print(pd.date_range('2017/1/1','2017/1/2', freq = 'H')) # H:每小时

print(pd.date_range('2017/1/1 12:00','2017/1/1 12:10', freq = 'T')) # T/MIN:每分

print(pd.date_range('2017/1/1 12:00:00','2017/1/1 12:00:10', freq = 'S')) # S:每秒

print(pd.date_range('2017/1/1 12:00:00','2017/1/1 12:00:10', freq = 'L')) # L:每毫秒(千分之一秒)

print(pd.date_range('2017/1/1 12:00:00','2017/1/1 12:00:10', freq = 'U')) # U:每微秒(百万分之一秒)

print(pd.date_range('2017/1/1','2017/2/1', freq = 'W-MON'))

# W-MON:从指定星期几开始算起,每周

# 星期几缩写:MON/TUE/WED/THU/FRI/SAT/SUN

print(pd.date_range('2017/1/1','2017/5/1', freq = 'WOM-2MON'))

# WOM-2MON:每月的第几个星期几开始算,这里是每月第二个星期一

print(pd.date_range('2017','2018', freq = 'M'))

print(pd.date_range('2017','2020', freq = 'Q-DEC'))

print(pd.date_range('2017','2020', freq = 'A-DEC'))

print('-' * 50)

# M:每月最后一个日历日

# Q-月:指定月为季度末,每个季度末最后一月的最后一个日历日

# A-月:每年指定月份的最后一个日历日

# 月缩写:JAN/FEB/MAR/APR/MAY/JUN/JUL/AUG/SEP/OCT/NOV/DEC

# 所以Q-月只有三种情况:1-4-7-10,2-5-8-11,3-6-9-12

print(pd.date_range('2017','2018', freq = 'BM'))

print(pd.date_range('2017','2020', freq = 'BQ-DEC'))

print(pd.date_range('2017','2020', freq = 'BA-DEC'))

print('*' * 50)

# BM:每月最后一个工作日

# BQ-月:指定月为季度末,每个季度末最后一月的最后一个工作日

# BA-月:每年指定月份的最后一个工作日

print(pd.date_range('2017','2018', freq = 'MS'))

print(pd.date_range('2017','2020', freq = 'QS-DEC'))

print(pd.date_range('2017','2020', freq = 'AS-DEC'))

print('-' * 50)

# M:每月第一个日历日

# Q-月:指定月为季度末,每个季度末最后一月的第一个日历日

# A-月:每年指定月份的第一个日历日

print(pd.date_range('2017','2018', freq = 'BMS'))

print(pd.date_range('2017','2020', freq = 'BQS-DEC'))

print(pd.date_range('2017','2020', freq = 'BAS-DEC'))

# BM:每月第一个工作日

# BQ-月:指定月为季度末,每个季度末最后一月的第一个工作日

# BA-月:每年指定月份的第一个工作日

1.2 按复合频率生成时间段

import pandas as pd

print(pd.date_range('2017/1/1','2017/2/1', freq = '7D')) # 7天

print(pd.date_range('2017/1/1','2017/1/2', freq = '2h30min')) # 2小时30分钟

print(pd.date_range('2017','2018', freq = '2M')) # 2月,每月最后一个日历日

1.3 asfreq频率转换

import numpy as np

import pandas as pd

ts = pd.Series(np.random.rand(4), index = pd.date_range('20170101','20170104'))

print(ts)

print(ts.asfreq('4H',method = 'ffill'))

# 改变频率,这里是D改为4H

# method:插值模式,None不插值,ffill用之前值填充,bfill用之后值填充

1.4 生成超前-滞后的数据范围

import numpy as np

import pandas as pd

# pd.date_range()-日期范围:超前/滞后数据

ts = pd.Series(np.random.rand(4),

index = pd.date_range('20170101','20170104'))

print(ts)

print(ts.shift(2))

print(ts.shift(-2))

print('*' * 50)

# 正数:数值后移(滞后);负数:数值前移(超前)

per = ts/ts.shift(1) - 1

print(per)

print('-' * 50)

# 计算变化百分比,这里计算:该时间戳与上一个时间戳相比,变化百分比

print(ts.shift(2, freq = 'D'))

print(ts.shift(2, freq = 'T'))

# 加上freq参数:对时间戳进行位移,而不是对数值进行位移

2.时间戳索引DatetimeIndex

以下是一个生成时间戳索引的案例

import pandas as pd

import numpy as np

# 直接生成时间戳索引,支持str、datetime.datetime

# 单个时间戳为Timestamp,多个时间戳为DatetimeIndex

dix = pd.DatetimeIndex(['2020-01-01','2020-01-02','2020-01-03','2020-01-04'])

print(dix)

print(dix[0],type(dix[0]))

print('-' * 50)

# 以DatetimeIndex为index的Series,为TimeSries,时间序列

st = pd.Series(np.random.rand(len(dix)), index = dix)

print(st,type(st))

print(st.index)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值