【利用python进行数据分析】chapter10:时间序列

一些和日期、时间等有关的内容
1.日期和时间数据类型及工具

from datetime import datetime as dt
now = dt.now()
now
# datetime.datetime(2021, 2, 16, 16, 55, 23, 636760)
now.year,now.month,now.day  #分别查询年月日
(2021, 2, 16)
#delta查询两个datetime对象之间的时间差
delta = dt(2011,1,7)-dt(2008,6,24,8,15)
delta
# datetime.timedelta(days=926, seconds=56700)
delta.days  #查询相差的天数
# 926
# timedelta 相当于时间差
from datetime import timedelta
start = dt(2011,1,7)
start+timedelta(12) #来个7天
# datetime.datetime(2011, 1, 19, 0, 0)

2.字符串和datetime之间的转换

stamp = dt(2011,1,3)
str(stamp)
# '2011-01-03 00:00:00'
stamp.strftime('%Y-%m-%d') #注意大小写哦
# '2011-01-03'
value = '2011-01-03'
datetime.strptime(value,'%Y-%m-%d')  #按照给定的日期的形式
# datetime.datetime(2011, 1, 3, 0, 0)
value = '7/6/2011'
datetime.strptime(value,'%m/%d/%Y')
# datetime.datetime(2011, 7, 6, 0, 0)
#还可以使用dateutil进行日期的转化
from dateutil.parser import parse
parse('2011-01-03') #parse几乎可以解析大部分日期形式(没有中文)
# datetime.datetime(2011, 1, 3, 0, 0)
# 如果想要日期出现在月的前面
parse('2011-01-03',dayfirst = True)

3.时间偏移

pd.date_range('1/1/2001','1/3/2001 23:59',freq = '4h')  #每隔四个小时
#output
DatetimeIndex(['2001-01-01 00:00:00', '2001-01-01 04:00:00',
               '2001-01-01 08:00:00', '2001-01-01 12:00:00',
               '2001-01-01 16:00:00', '2001-01-01 20:00:00',
               '2001-01-02 00:00:00', '2001-01-02 04:00:00',
               '2001-01-02 08:00:00', '2001-01-02 12:00:00',
               '2001-01-02 16:00:00', '2001-01-02 20:00:00',
               '2001-01-03 00:00:00', '2001-01-03 04:00:00',
               '2001-01-03 08:00:00', '2001-01-03 12:00:00',
               '2001-01-03 16:00:00', '2001-01-03 20:00:00'],
              dtype='datetime64[ns]', freq='4H')

pd.date_range('1/1/2001',periods = 10,freq = '1h30min')
# output
DatetimeIndex(['2001-01-01 00:00:00', '2001-01-01 01:30:00',
               '2001-01-01 03:00:00', '2001-01-01 04:30:00',
               '2001-01-01 06:00:00', '2001-01-01 07:30:00',
               '2001-01-01 09:00:00', '2001-01-01 10:30:00',
               '2001-01-01 12:00:00', '2001-01-01 13:30:00'],
              dtype='datetime64[ns]', freq='90T')


# 时区
import pytz
pytz.common_timezones[-5:]
tz = pytz.timezone('US/Eastern')  #选定这个时区
tz
# <DstTzInfo 'US/Eastern' LMT-1 day, 19:04:00 STD>
# 重采样 好像可以用来求不同时间频率的相应参数
rng = pd.date_range('1/1/2000',periods = 100,freq = 'D')
ts = Series(np.random.randn(len(rng)),index = rng)
ts.resample('M',how = 'mean')  #修改频率为月份,求平均数
re.resample('5min',how = 'sum',closed = 'left',label = 'left')   #求每五分钟的和,右区间不包含在内,使用面元的左边界进行标记

太多内容没记录,感觉目前用不上。随用随写吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值