快乐学习
前程无忧、中华英才非你莫属!

原创-Pandas心法之时间序列处理-9

"""
使用时间序列
"""
from datetime import datetime

'''
pandas是在财务建模的背景下开发的,
因此,正如您可能期望的那样,
它包含用于处理日期,时间和时间索引数据的相当广泛的工具集。
日期和时间数据有几种形式,我们将在这里讨论:

时间戳记会参考特定时间点(例如,2015年7月4日上午7:00)。
时间间隔和时间段指的是特定起点和终点之间的时间长度;
例如,2015年。期间通指的是时间间隔的一种特殊情况,
其中每个时间间隔的长度均一且不重叠(例如,24小时长的时间段,包括几天)。
时间增量或持续时间指的是确切的时间长度(例如22.56秒的持续时间)。

'''
# Pandas,提供了一个Timestamp对象,
# 该对象结合了的易用性datetime以及dateutil的高效存储和矢量化接口

import pandas as pd

date = pd.to_datetime("4th of July, 2015")
print(date)

print(date.strftime('%A'))
print(date + pd.to_timedelta(np.arange(12), 'D'))

index = pd.DatetimeIndex(['2014-07-04', '2014-08-04',
                          '2015-07-04', '2015-08-04'])
data = pd.Series([0, 1, 2, 3], index=index)

print(data)
print(data['2014-07-04':'2015-07-04'])
print(data['2015'])

'''
熊猫时间序列数据结构¶
'''

'''
对于时间戳,熊猫提供Timestamp类型。
如前所述,它实际上是Python的native的替代datetime,
但它基于更有效的numpy.datetime64数据类型。关联的索引结构为DatetimeIndex。
对于时间段,Pandas提供了Period类型。
这基于编码固定频率间隔numpy.datetime64。
关联的索引结构为PeriodIndex。
对于时间增量或持续时间,Pandas提供Timedelta类型。
Timedelta是基于Python的本机datetime.
timedelta类型的更有效替代,并且基于numpy.timedelta64。
关联的索引结构为TimedeltaIndex。

这些日期/时间对象中最基本的是Timestamp和DatetimeIndex对象。
尽管可以直接调用这些类对象,但是使用该pd.to_datetime()函数可以解析多种格式更为常见。
将单个日期传递给会pd.to_datetime()产生Timestamp;
默认情况下,传递一系列日期会产生DatetimeIndex:

'''
dates = pd.to_datetime([datetime(2015, 7, 3), '4th of July, 2015',
                        '2015-Jul-6', '07-07-2015', '20150708'])
print(dates)

'''
DatetimeIndex可以通过添加频率代码PeriodIndex的to_period()
功能将任意值转换为;在这里,我们将'D'用来指示每日的频率:
'''

print(dates.to_period('D'))
print(dates - dates[0])

# 常规序列
print(pd.date_range('2015-07-03', '2015-07-10'))
print(pd.date_range('2015-07-03', periods=8))  # 生成8个日期

# 生成带小时的8个日期
print(pd.date_range('2015-07-03', periods=8, freq='H'))

# 生成8个年-月
print(pd.period_range('2015-07', periods=8, freq='M'))

# 生成8个时分秒的日期
print(pd.timedelta_range(0, periods=10, freq='H'))

'''
频率和偏移量

这些熊猫时间序列工具的基础是频率或日期偏移量的概念。
正如我们在上面看到的D(天)和H(小时)代码一样,
我们可以使用这些代码来指定任何所需的频率间隔。
下表总结了可用的主要代码:

Code Description Code Description
D Calendar day B Business day
W Weekly
M Month end BM Business month end
Q Quarter end BQ Business quarter end
A Year end BA Business year end
H Hours BH Business hours
T Minutes
S Seconds
L Milliseonds
U Microseconds
N nanoseconds

代码 描述 代码 描述
MS 月开始 BMS 营业月开始
QS 季度开始 BQS 业务季度开始
AS 年开始 BAS 营业年度开始
'''

# 生成9个日期,每一个日期相隔两小时30分钟
print(pd.timedelta_range(0, periods=9, freq="2H30T"))

# 生成一个工作日偏移量
from pandas.tseries.offsets import BDay
print(pd.date_range('2015-07-01', periods=5, freq=BDay()))
打赏

未经允许不得转载:同乐学堂 » 原创-Pandas心法之时间序列处理-9

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

特别的技术,给特别的你!

联系QQ:1071235258QQ群:367203382
error: Sorry,暂时内容不可复制!