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)以DatetimeIndex
为index
的Series
,为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)