《利用python做数据分析》第十章:时间序列分析

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
//anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment. warnings.warn(‘Matplotlib is building the font cache using fc-list. This may take a moment.’)
from pandas import Series,DataFrame
#### Time Seiries Analysis **** > build-in package time datetime calendar
from datetime import datetime
now = datetime.now()
now
datetime.datetime(2016, 2, 1, 11, 11, 8, 934671) > ** display time right now **
now.year,now.month,now.day
(2016, 2, 1) datetime以毫秒形势存储��和⌚️,**datetime.datedelta**表示两个datetime对象之间的时间差
delta = datetime(2011,1,7) - datetime(2008,6,24,8,15)
显示的前一个是天数,后一个是秒钟 —- delta.days delta.seconds
delta
datetime.timedelta(926, 56700) ### 可以给datetime对象加上或者减去一个或者多个timedelta,会产生一个新对象
from datetime import timedelta
start = datetime(2011, 1, 7)
start + timedelta(12)
datetime.datetime(2011, 1, 19, 0, 0)
start - timedelta(12) * 4
datetime.datetime(2010, 11, 20, 0, 0) > 可见timedelta是以天为单位 #### datetime模块中的数据类型 —– - date | 以公历形式存储日历日期(年、月、日) - time | 将时间存储为时、分、秒、毫秒 - datetime | 存储时间和日期 - timedelta| 比阿诗两个datetime值之间的差(日, 秒, 毫秒) ## str transformed to datetime use ** str ** or ** strftime(invoke a formed str) ** ,datetime object and pandas.Timestamp can be formulated to string
stamp = datetime(2011, 1, 3)
str(stamp)
‘2011-01-03 00:00:00’
stamp.strftime('%Y-%m-%d')
‘2011-01-03’
stamp.strftime('%Y-%m')
‘2011-01’
value = '2011-01-03'
datetime.strptime(value, '%Y-%m-%d')
datetime.datetime(2011, 1, 3, 0, 0)
datestrs = ['7/6/2011','8/6/2011']
[datetime.strptime(x, '%m/%d/%Y') for x in datestrs]
[datetime.datetime(2011, 7, 6, 0, 0), datetime.datetime(2011, 8, 6, 0, 0)] datetime.striptime 是通过已知格式进行日期解析的最佳方式,但每次都要编写格式定义 - 使用dateutil中的parser.parse来实现
from dateutil.parser import parse
parse('2011-01-03')
datetime.datetime(2011, 1, 3, 0, 0) parse的解析能力很强,几乎可以解析一切格式
parse('Jan 31,1997 10:45 PM')
datetime.datetime(1997, 1, 31, 22, 45)
parse('6/30/2011', dayfirst=True)
datetime.datetime(2011, 6, 30, 0, 0)
datestrs
[‘7/6/2011’, ‘8/6/2011’] # pd.to_datetime()
pd.to_datetime(datestrs)
DatetimeIndex([‘2011-07-06’, ‘2011-08-06’], dtype=’datetime64[ns]’, freq=None)
dates = [datetime(2011, 1, 2),datetime(2011,1,5),datetime(2011,1,7),
        datetime(2011,1,8),datetime(2011,1,10),datetime(2011,1,12)]
ts = Series(np.random.randn(6), index=dates)
ts
2011-01-02 0.573974 2011-01-05 -0.337112 2011-01-07 -1.650845 2011-01-08 0.450012 2011-01-10 -1.253801 2011-01-12 -0.402997 dtype: float64
type(ts)
pandas.core.series.Series
ts.index
DatetimeIndex([‘2011-01-02’, ‘2011-01-05’, ‘2011-01-07’, ‘2011-01-08’, ‘2011-01-10’, ‘2011-01-12’], dtype=’datetime64[ns]’, freq=None)
ts + ts[::2]
2011-01-02 1.147949 2011-01-05 NaN 2011-01-07 -3.301690 2011-01-08 NaN 2011-01-10 -2.507602 2011-01-12 NaN dtype: float64
ts[::2]
2011-01-02 0.573974 2011-01-07 -1.650845 2011-01-10 -1.253801 dtype: float64 ## 索引、选取、子集构造
ts['1/10/2011']
-1.2538008746706757 传入可以解释为日期的字符,就可以代替索引
ts['20110110']
-1.2538008746706757
longer_ts=Series(np.random.randn(1000),index=pd.date_range('20000101',periods=1000))
longer_ts
2000-01-01 -1.025498 2000-01-02 -0.913267 2000-01-03 0.240895 2000-01-04 -1.475368 2000-01-05 -1.675558 2000-01-06 1.020005 2000-01-07 0.638097 2000-01-08 0.503482 2000-01-09 -0.541771 2000-01-10 -1.107036 2000-01-11 0.797612 2000-01-12 1.691745 2000-01-13 1.889323 2000-01-14 -0.852126 2000-01-15 -0.987578 2000-01-16 0.558084 2000-01-17 -0.842907 2000-01-18 1.932399 2000-01-19 -1.126650 2000-01-20 -0.529707 2000-01-21 0.116756 2000-01-22 -0.012790 2000-01-23 0.501330 2000-01-24 0.346976 2000-01-25 -0.880443 2000-01-26
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值