【python数据分析(16)】Pandas中时间序列处理(2)Timestamp时刻数据与DatetimeIndex时间索引

1. Timestamp时刻数据

1.1pandas.Timestamp() 时刻数据

代表时间点,是pandas的数据类型,是将值与时间点相关联的最基本类型的时间序列数据

import numpy as np
import pandas as pd
from datetime import datetime

date1 = datetime(2016,12,1,12,45,30)  
date2 = '2017-12-21' 
t1 = pd.Timestamp(date1)
t2 = pd.Timestamp(date2)
print(t1,type(t1))
print(t2)
print(pd.Timestamp('2017-12-21 15:00:22'))
print(t2 - t1)
print((t2 - t1).days)

–> 输出的结果为:(这里输入的三个数据都是同一类型的,既然是时间刻就可以进行运算)

2016-12-01 12:45:30 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
2017-12-21 00:00:00
2017-12-21 15:00:22
384 days 11:14:30
384
1.2 时刻数据转化

1) 单时间数据转化,转化为pandas的时刻数据,数据类型为Timestamp

date1 = datetime(2016,12,1,12,45,30)
date2 = '2017-12-21'
t1 = pd.to_datetime(date1)
t2 = pd.to_datetime(date2)
print(t1,type(t1))
print(t2,type(t2))

–> 输出的结果为:

2016-12-01 12:45:30 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
2017-12-21 00:00:00 <class 'pandas._libs.tslibs.timestamps.Timestamp'>

2) 多时间数据转化 (demo),将会转换为pandas的DatetimeIndex

lst_date = [ '2017-12-21', '2017-12-22', '2017-12-23']
t3 = pd.to_datetime(lst_date)
print(t3)
print(type(t3))

–> 输出的结果为:

DatetimeIndex(['2017-12-21', '2017-12-22', '2017-12-23'], dtype='datetime64[ns]', freq=None)
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>

3) 多时间数据转化 (base),多个时间数据转换时间戳索引

date1 = [datetime(2015,6,1),datetime(2015,7,1),datetime(2015,8,1),datetime(2015,9,1),datetime(2015,10,1)]
date2 = ['2017-2-1','2017-2-2','2017-2-3','2017-2-4','2017-2-5','2017-2-6']
print(date1,'\n')
print(date2,'\n')
t1 = pd.to_datetime(date2)
t2 = pd.to_datetime(date2)
print(t1,'\n')
print(t2)

–> 输出的结果为:

[datetime.datetime(2015, 6, 1, 0, 0), datetime.datetime(2015, 7, 1, 0, 0), datetime.datetime(2015, 8, 1, 0, 0), datetime.datetime(2015, 9, 1, 0, 0), datetime.datetime(2015, 10, 1, 0, 0)] 

['2017-2-1', '2017-2-2', '2017-2-3', '2017-2-4', '2017-2-5', '2017-2-6'] 

DatetimeIndex(['2017-02-01', '2017-02-02', '2017-02-03', '2017-02-04',
               '2017-02-05', '2017-02-06'],
              dtype='datetime64[ns]', freq=None) 

DatetimeIndex(['2017-02-01', '2017-02-02', '2017-02-03', '2017-02-04',
               '2017-02-05', '2017-02-06'],
              dtype='datetime64[ns]', freq=None)

★★★ 当一组时间序列中夹杂其他格式数据,可用errors参数返回,errors = 'ignore':不可解析时返回原始输入,下面就是直接生成一般数组

date3 = ['2017-2-1','2017-2-2','2017-2-3','hello world!','2017-2-5','2017-2-6']
t3 = pd.to_datetime(date3, errors = 'ignore')
print(t3)
print(type(t3))

–> 输出的结果为:(注意里面的'hello world!'

Index(['2017-2-1', '2017-2-2', '2017-2-3', 'hello world!', '2017-2-5',
       '2017-2-6'],
      dtype='object') 
<class 'pandas.core.indexes.base.Index'>

★★★ errors = 'coerce' 不可扩展,缺失值返回NaT(Not a Time),结果认为DatetimeIndex

t4 = pd.to_datetime(date3, errors = 'coerce')
print(t4)
print(type(t4))

–> 输出的结果为:(注意和上面返回的标签数据类型做对比)

DatetimeIndex(['2017-02-01', '2017-02-02', '2017-02-03', 'NaT', '2017-02-05',
               '2017-02-06'],
              dtype='datetime64[ns]', freq=None) 
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>

2. DatetimeIndex时间戳索引

通过上面的输出结果可以看出,最后生成的数据类型就是属于pandas里面的时间索引对象

2.1 pd.DatetimeIndex()TimeSeries时间序列

1) pd.DatetimeIndex() 时间戳索引,直接生成时间戳索引,支持str、datetime.datetime

rng = pd.DatetimeIndex(['12/1/2017','12/2/2017','12/3/2017','12/4/2017','12/5/2017'])
print(rng)
print(type(rng))
print(rng[0])
print(type(rng[0]))

–> 输出的结果为:(单个时间戳为Timestamp,多个时间戳为DatetimeIndex)

DatetimeIndex(['2017-12-01', '2017-12-02', '2017-12-03', '2017-12-04',
               '2017-12-05'],
              dtype='datetime64[ns]', freq=None)
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
2017-12-01 00:00:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

★★★ 2)以DatetimeIndexindexSeries,为TimeSries时间序列(创建时刻数据TimeSeries时间序列)

st = pd.Series(np.random.rand(len(rng)), index = rng)
print(st)
print(type(st))
print(st.index)

–> 输出的结果为:(就是应用时间戳索引创建Series,可以理解为TimeSries时间序列)

2017-12-01    0.881504
2017-12-02    0.691407
2017-12-03    0.185201
2017-12-04    0.457349
2017-12-05    0.637777
dtype: float64
<class 'pandas.core.series.Series'>
DatetimeIndex(['2017-12-01', '2017-12-02', '2017-12-03', '2017-12-04',
               '2017-12-05'],
              dtype='datetime64[ns]', freq=None)
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值