《利用python进行数据分析》读书笔记--第十章 时间序列(三)
7、时间序列绘图
pandas时间序列的绘图功能在日期格式化方面比matplotlib原生的要好。
#-*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from pandas import Series,DataFrame
from datetime import datetime
from dateutil.parser import parse
import time
from pandas.tseries.offsets import Hour,Minute,Day,MonthEnd
import pytz
#下面两个参数,一个是解析日期形式,一个是将第一列作为行名
close_px_all = pd.read_csv('E:\\stock_px.csv',parse_dates = True,index_col = 0)
print close_px_all.head(),'\n'
close_px = close_px_all[['AAPL','MSFT','XOM']]
close_px = close_px.resample('B',fill_method = 'ffill')
print close_px.head()
#注意下面的索引方式即可
close_px['AAPL'].plot()
close_px.ix[''].plot()
close_px['AAPL'].ix['01-2011':'03-2011'].plot()
#季度型频率的数据会用季度标记进行格式化,这种事情手工的话会很费力……(真是有道理……)
appl_q = close_px['AAPL'].resample('Q-DEC',fill_method = 'ffill')
appl_q.ix['':].plot()
#作者说交互方式右键按住日期会动态展开或收缩,实际自己做,没效果……
plt.show()
>>>
AA AAPL GE IBM JNJ MSFT PEP SPX XOM
1990-02-01 4.98 7.86 2.87 16.79 4.27 0.51 6.04 328.79 6.12
1990-02-02 5.04 8.00 2.87 16.89 4.37 0.51 6.09 330.92 6.24
1990-02-05 5.07 8.18 2.87 17.32 4.34 0.51 6.05 331.85 6.25
1990-02-06 5.01 8.12 2.88 17.56 4.32 0.51 6.15 329.66 6.23
1990-02-07 5.04 7.77 2.91 17.93 4.38 0.51 6.17 333.75 6.33 AAPL MSFT XOM
1990-02-01 7.86 0.51 6.12
1990-02-02 8.00 0.51 6.24
1990-02-05 8.18 0.51 6.25
1990-02-06 8.12 0.51 6.23
1990-02-07 7.77 0.51 6.33
[Finished in 37.5s]
下面是作出的几张图:
8、移动窗口函数
在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换。作者将其称为移动窗口函数(moving window function),其中还包括那些窗口不定长的函数(如指数加权移动平均)。跟其他统计函数一样,移动窗口函数也会自动排除缺失值。这样的函数通常需要指定一些数量的非NA观测值。
#-*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from pandas import Series,DataFrame
from datetime import datetime
from dateutil.parser import parse
import time
from pandas.tseries.offsets import Hour,Minute,Day,MonthEnd
import pytz #rolling_mean是其中最简单的一个。它接受一个TimeSeries或DataFrame以及一个window(表示期数)
close_px_all = pd.read_csv('E:\\stock_px.csv',parse_dates = True,index_col = 0)
print close_px_all.head(),'\n'
close_px = close_px_all[['AAPL','MSFT','XOM']]
close_px = close_px.resample('B',fill_method = 'ffill')
close_px.AAPL.plot()
pd.rolling_mean(close_px.AAPL,250).plot()
plt.show()
#默认情况下,诸如rolling_mean这样的涵涵素需要指定数量的非NA观测值。可以修改该行为以解决缺失数据的问题,其实,
#在时间序列开始处尚不足窗口期的那些数据就是个特例(也就是前250期均线值是没有的)
#看一下下面的图
#有个参数是min_periods,文档中说的是窗口中应该有值的最小的序列标号,可是如果是250期的标准差值,250之前怎么会有数呢?。。。难道是自动转换了周期?
#YES!确实是这样,min_periods是指自这个标号开始,计算前面所有数的std,比如min_periods = 10时,计算前10个数的,min_periods = 20时,计算前20个数的,知道min_periods = 250为止,这就是所谓的“指定的非NA观测值”
close_px.AAPL.plot()
appl_std250 = pd.rolling_std(close_px.AAPL,250,min_periods = 10)
print appl_std250[:15]
appl_std250.plot()
plt.show()
>>>
AA AAPL GE IBM JNJ MSFT PEP SPX XOM
1990-02-01 4.98 7.86 2.87 16.79 4.27 0.51 6.04 328.79 6.12
1990-02-02 5.04 8.00 2.87 16.89 4.37 0.51 6.09 330.92 6.24
1990-02-05 5.07 8.18 2.87 17.32 4.34 0.51 6.05 331.85 6.25
1990-02-06 5.01 8.12 2.88 17.56 4.32 0.51 6.15 329.66 6.23
1990-02-07 5.04 7.77 2.91 17.93 4.38 0.51 6.17 333.75 6.33 1990-02-01 NaN
1990-02-02 NaN
1990-02-05 NaN
1990-02-06 NaN
1990-02-07 NaN
1990-02-08 NaN
1990-02-09 NaN
1990-02-12 NaN
1990-02-13 NaN
1990-02-14 0.148189
1990-02-15 0.141003
1990-02-16 0.135454
1990-02-19 0.130502
1990-02-20 0.128690
1990-02-21 0.124108
Freq: B
[Finished in 4.6s]
要计算扩展窗口平均(expanding window mean),可以将扩展窗口看作一个特殊的窗口,其长度与时间序列一样,但只需一期或多期即可计算一个值。
#通过rolling_mean定义扩展平均
expanding_mean = lambda x:rolling_mean(x,len(x),min_periods = 1)
#对DataFrame调用rolling_mean(以及其他类似函数)会将转换应用到所有列上
#下面的logy是将纵坐标显示为科学计数法,暂时搞不懂怎么变换的
mean_60 = pd.rolling_mean(close_px,60).plot()
mean_60 = pd.rolling_mean(close_px,60).plot(logy = True) #print mean_60[(len(mean_60) - 20):len(mean_60)]
plt.show()
'''
ts = pd.Series(range(10), index=pd.date_range('1/1/2000', periods=10))
#ts = np.exp(ts.cumsum())
print ts
print np.log(ts)
ts.plot(logy=True)
plt.show()
'''
- 指数加权函数
另一种使用固定大小窗口及相等权数观测值的方法是,定义一个衰减因子(decay factor)常量,以便使近期的观测值拥有更大的权数。衰减因子的定义方式有很多,比较流行的是使用时间间隔(span),它可以使结果兼容于窗口大小等于时间间隔的简单移动窗口函数。
fig,axes = plt.subplots(nrows = 2,ncols = 1,sharex = True,sharey = True,figsize = (12,7))
aapl_px = close_px.AAPL['':'']
ma60 = pd.rolling_mean(aapl_px,60,min_periods = 50)
ewma60 = pd.ewma(aapl_px,span = 60) aapl_px.plot(style = 'k-',ax = axes[0])
ma60.plot(style = 'k--',ax = axes[0])
aapl_px.plot(style = 'k-',ax = axes[1])
ewma60.plot(style = 'k--',ax = axes[1])
axes[0].set_title('Simple MA')
axes[1].set_title('Exponentially-weighted MA')
plt.show()
- 二元移动窗口函数
有些统计运算(如相关系数和协方差)需要在两个时间序列上执行。比如,金融分析师常常对某只股票对某个参数(如标普500指数)的相关系数感兴趣。我们可以通过计算百分比变化并使用rolling_corr的方式得到该结果。
#-*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from pandas import Series,DataFrame
from datetime import datetime
from dateutil.parser import parse
import time
from pandas.tseries.offsets import Hour,Minute,Day,MonthEnd
import pytz #rolling_mean是其中最简单的一个。它接受一个TimeSeries或DataFrame以及一个window(表示期数)
close_px_all = pd.read_csv('E:\\stock_px.csv',parse_dates = True,index_col = 0)
print close_px_all.head(),'\n'
close_px = close_px_all[['AAPL','MSFT','XOM']] spx_px = close_px_all['SPX']
print spx_px
#下面是将spx_px数据后移一位,减1是将数据减1,当然后面的是先除,再减1
#print spx_px.shift(1) - 1
spx_rets = spx_px / spx_px.shift(1) - 1
#看一下,下面的函数是跟上面的一样,作者是为了展示函数才这么写的
#spx_rets_pct_change = spx_px.pct_change()
#print spx_rets_pct_change[:10]
print spx_rets[:10],'\n'
returns = close_px.pct_change()
print returns[:10]
corr = pd.rolling_corr(returns.AAPL,spx_rets,125,min_periods = 100)
corr.plot()
plt.show()
>>>
AA AAPL GE IBM JNJ MSFT PEP SPX XOM
1990-02-01 4.98 7.86 2.87 16.79 4.27 0.51 6.04 328.79 6.12
1990-02-02 5.04 8.00 2.87 16.89 4.37 0.51 6.09 330.92 6.24
1990-02-05 5.07 8.18 2.87 17.32 4.34 0.51 6.05 331.85 6.25
1990-02-06 5.01 8.12 2.88 17.56 4.32 0.51 6.15 329.66 6.23
1990-02-07 5.04 7.77 2.91 17.93 4.38 0.51 6.17 333.75 6.33 1990-02-01 328.79
1990-02-02 330.92
1990-02-05 331.85
1990-02-06 329.66
1990-02-07 333.75
1990-02-08 332.96
1990-02-09 333.62
1990-02-12 330.08
1990-02-13 331.02
1990-02-14 332.01
1990-02-15 334.89
1990-02-16 332.72
1990-02-20 327.99
1990-02-21 327.67
1990-02-22 325.70
...
2011-09-26 1162.95
2011-09-27 1175.38
2011-09-28 1151.06
2011-09-29 1160.40
2011-09-30 1131.42
2011-10-03 1099.23
2011-10-04 1123.95
2011-10-05 1144.03
2011-10-06 1164.97
2011-10-07 1155.46
2011-10-10 1194.89
2011-10-11 1195.54
2011-10-12 1207.25
2011-10-13 1203.66
2011-10-14 1224.58
Name: SPX, Length: 5472
1990-02-01 NaN
1990-02-02 0.006478
1990-02-05 0.002810
1990-02-06 -0.006599
1990-02-07 0.012407
1990-02-08 -0.002367
1990-02-09 0.001982
1990-02-12 -0.010611
1990-02-13 0.002848
1990-02-14 0.002991
Name: SPX AAPL MSFT XOM
1990-02-01 NaN NaN NaN
1990-02-02 0.017812 0.000000 0.019608
1990-02-05 0.022500 0.000000 0.001603
1990-02-06 -0.007335 0.000000 -0.003200
1990-02-07 -0.043103 0.000000 0.016051
1990-02-08 -0.007722 0.000000 0.003160
1990-02-09 0.037613 0.019608 0.003150
1990-02-12 -0.007500 0.000000 -0.023548
1990-02-13 0.015113 0.000000 0.001608
1990-02-14 -0.007444 0.000000 -0.004815
[Finished in 50.8s]
假如现在想同时计算多只股票与标普的相关系数。只需传入一个TimeSeries和一个DataFrame,rolling_corr就会自动计算TimeSeries与DataFrame各列的相关系数。
corr = pd.rolling_corr(returns,spx_rets,125,min_periods = 100)
corr.plot()
plt.show()
- 用户自定义的移动窗口函数
rolling_apply函数使你能够在移动窗口上应用自己设计的数组函数。唯一的要求就是:该函数要能从数组的各个片段中产生单个值。比如,当用rolling_quantile计算样本分位数时,可能对样本中特定值的百分等级感兴趣。
#-*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from pandas import Series,DataFrame
from datetime import datetime
from dateutil.parser import parse
import time
from pandas.tseries.offsets import Hour,Minute,Day,MonthEnd
import pytz
from scipy.stats import percentileofscore #rolling_mean是其中最简单的一个。它接受一个TimeSeries或DataFrame以及一个window(表示期数)
close_px_all = pd.read_csv('E:\\stock_px.csv',parse_dates = True,index_col = 0)
close_px = close_px_all[['AAPL','MSFT','XOM']]
returns = close_px.pct_change()
#这里的percentileofscore是指,0.02在x中的位置是x中的百分比
#AAPL %2回报率的百分等级
score_at_2percent = lambda x:percentileofscore(x,0.02)
result = pd.rolling_apply(returns.AAPL,250,score_at_2percent)
result.plot()
plt.show()
9、性能和内存使用方面的注意事项
TimeSeries和Period都是以64位整数表示的(即NumPy的datetime64数据类型)。也就是说,对于每个数据点,其时间戳需要占用8字节内存。因此,含有一百万个float64数据点的时间序列需要占用大约16MB的内存空间。由于pandas会尽量在多个时间序列之间共享索引,所以创建现有时间序列的视图不会占用更多内存。此外,低频率索引(日以上)会被存放在一个中心缓存中,所以任何固定频率的索引都是该日期缓存的视图。所以。如果你有一个很大的低频率时间序列,索引所占用的内存空间将不会很大。
性能方面,pandas对数据对齐(两个不同索引的ts1 + ts2的幕后工作)和重采样运算进行了高度优化。下面这个例子将一亿个数据点聚合为OHLC:
#-*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from pandas import Series,DataFrame
from datetime import datetime
from dateutil.parser import parse
import time
from pandas.tseries.offsets import Hour,Minute,Day,MonthEnd
import pytz rng = pd.date_range('1/1/2000',periods = 10000000,freq = '10ms')
ts = Series(np.random.randn(len(rng)),index = rng)
print ts,'\n'
print ts.resample('15min',how = 'ohlc'),'\n'
#下面测试一下代码运行时间,下面运行不成功
#%timeit ts.resample('15min',how = 'ohlc')
#换句话说,聚合的频率越高,耗费时间越多,但是,但是仍然是非常高效的
>>>
2000-01-01 00:00:00 -0.681229
2000-01-01 00:00:00.010000 -1.231560
2000-01-01 00:00:00.020000 0.437656
2000-01-01 00:00:00.030000 2.134065
2000-01-01 00:00:00.040000 0.264029
2000-01-01 00:00:00.050000 -2.273143
2000-01-01 00:00:00.060000 1.519468
2000-01-01 00:00:00.070000 -0.052764
2000-01-01 00:00:00.080000 1.329301
2000-01-01 00:00:00.090000 -1.078996
2000-01-01 00:00:00.100000 -1.121855
2000-01-01 00:00:00.110000 -0.157845
2000-01-01 00:00:00.120000 0.453539
2000-01-01 00:00:00.130000 0.043068
2000-01-01 00:00:00.140000 0.378264
...
2000-01-02 03:46:39.850000 -0.444970
2000-01-02 03:46:39.860000 0.296446
2000-01-02 03:46:39.870000 -1.051884
2000-01-02 03:46:39.880000 0.612868
2000-01-02 03:46:39.890000 0.682818
2000-01-02 03:46:39.900000 0.375605
2000-01-02 03:46:39.910000 -0.843553
2000-01-02 03:46:39.920000 -0.861029
2000-01-02 03:46:39.930000 0.349835
2000-01-02 03:46:39.940000 0.231722
2000-01-02 03:46:39.950000 -0.268164
2000-01-02 03:46:39.960000 -1.537572
2000-01-02 03:46:39.970000 -0.634842
2000-01-02 03:46:39.980000 -1.110032
2000-01-02 03:46:39.990000 0.071214
Freq: 10L, Length: 10000000 open high low close
2000-01-01 00:00:00 -0.681229 -0.681229 -0.681229 -0.681229
2000-01-01 00:15:00 -1.231560 4.113992 -4.589095 -0.241367
2000-01-01 00:30:00 1.171302 4.593611 -4.329438 -0.099641
2000-01-01 00:45:00 -0.720612 4.432697 -4.658295 -2.278497
2000-01-01 01:00:00 0.119403 4.259349 -4.922511 1.899723
2000-01-01 01:15:00 1.168395 4.351551 -4.087221 -0.124419
2000-01-01 01:30:00 1.888486 4.288424 -4.540685 0.337621
2000-01-01 01:45:00 0.263643 4.412893 -4.362212 -1.125978
2000-01-01 02:00:00 1.398256 4.301166 -4.140143 0.693118
2000-01-01 02:15:00 -0.307263 4.353092 -4.417690 -1.647730
2000-01-01 02:30:00 1.028139 4.727692 -4.089063 0.242530
2000-01-01 02:45:00 0.857454 3.946653 -4.745711 0.270212
2000-01-01 03:00:00 -0.925215 4.544331 -4.261408 -0.616690
2000-01-01 03:15:00 -0.008779 3.958481 -4.016185 -1.055645
2000-01-01 03:30:00 0.649988 4.939031 -4.446418 0.118234
2000-01-01 03:45:00 -0.533717 4.685563 -4.205492 0.731999
2000-01-01 04:00:00 0.511450 4.483055 -3.945226 -0.814555
2000-01-01 04:15:00 0.372549 4.449327 -4.087508 0.786998
2000-01-01 04:30:00 -1.015505 4.750429 -4.111374 0.955857
2000-01-01 04:45:00 -0.450577 4.155395 -4.628542 0.621572
2000-01-01 05:00:00 0.629534 4.144105 -4.302083 1.567992
2000-01-01 05:15:00 0.843481 4.092661 -4.509020 -0.997818
2000-01-01 05:30:00 1.026566 4.004000 -4.330091 -0.745961
2000-01-01 05:45:00 0.523910 4.286510 -4.147153 -0.334644
2000-01-01 06:00:00 1.481702 4.437908 -4.198872 0.309824
2000-01-01 06:15:00 -0.530256 4.551381 -4.218254 0.112050
2000-01-01 06:30:00 -1.224188 4.245407 -4.198838 0.973066
2000-01-01 06:45:00 0.114000 4.286166 -4.070633 -1.024489
2000-01-01 07:00:00 -2.148906 4.198777 -4.213584 2.137635
2000-01-01 07:15:00 2.716069 4.308833 -4.432955 0.196065
2000-01-01 07:30:00 -0.902512 4.315467 -4.376366 -1.944492
2000-01-01 07:45:00 0.978385 4.482707 -4.343861 -0.161608
2000-01-01 08:00:00 0.028728 4.334193 -4.995541 -1.409060
2000-01-01 08:15:00 0.254613 3.944059 -4.263927 1.022247
2000-01-01 08:30:00 -2.153415 4.282622 -4.681402 0.133295
2000-01-01 08:45:00 0.361382 4.332683 -4.124674 -1.810247
2000-01-01 09:00:00 0.218621 4.087920 -4.878364 -0.247444
2000-01-01 09:15:00 1.541770 4.709500 -4.100887 0.263939
2000-01-01 09:30:00 0.302456 4.072987 -4.402301 -0.695389
2000-01-01 09:45:00 0.758779 4.854449 -4.292967 -0.098260
2000-01-01 10:00:00 -1.033195 4.412930 -4.319737 -1.078443
2000-01-01 10:15:00 -0.702287 4.687409 -4.242148 0.108918
2000-01-01 10:30:00 2.040476 4.167678 -4.069875 -0.271023
2000-01-01 10:45:00 -1.719918 4.414900 -4.003430 0.178522
2000-01-01 11:00:00 -2.003960 4.681189 -4.407995 -1.532938
2000-01-01 11:15:00 2.071234 4.691175 -4.203442 -0.000271
2000-01-01 11:30:00 -0.335169 4.577745 -4.383428 -0.356682
2000-01-01 11:45:00 0.837294 4.158462 -4.667864 -1.214194
2000-01-01 12:00:00 -0.593185 4.491041 -4.229999 -0.906558
2000-01-01 12:15:00 -0.757815 4.283729 -4.824929 0.461968
2000-01-01 12:30:00 -0.627753 4.465840 -4.382329 1.758057
2000-01-01 12:45:00 -0.582081 4.248387 -5.043421 -1.665271
2000-01-01 13:00:00 -0.232743 4.151332 -4.197010 -1.040030
2000-01-01 13:15:00 -0.099233 4.065889 -4.025087 0.400879
2000-01-01 13:30:00 0.560333 4.441687 -4.372460 -1.212408
2000-01-01 13:45:00 0.442710 4.105972 -4.284578 -0.756200
2000-01-01 14:00:00 1.280060 4.613177 -4.435858 0.793312
2000-01-01 14:15:00 0.849877 4.445931 -4.143685 -1.522613
2000-01-01 14:30:00 1.084148 4.750917 -4.196053 0.154898
2000-01-01 14:45:00 1.055437 4.320318 -4.673456 1.022639
2000-01-01 15:00:00 0.708564 4.573142 -4.251478 -0.420195
2000-01-01 15:15:00 -2.163962 4.332879 -4.207693 0.909637
2000-01-01 15:30:00 0.316790 4.269409 -4.110165 0.698051
2000-01-01 15:45:00 -0.811775 4.356382 -4.576847 1.465054
2000-01-01 16:00:00 -0.000181 4.101318 -4.549553 -0.161170
2000-01-01 16:15:00 0.293171 4.565994 -4.279151 0.574916
2000-01-01 16:30:00 1.284430 4.438795 -4.384199 -0.357597
2000-01-01 16:45:00 0.922512 4.270791 -4.365019 -0.089139
2000-01-01 17:00:00 -1.434599 4.216443 -4.599743 -0.993626
2000-01-01 17:15:00 -2.289424 4.447081 -4.129147 -0.770931
2000-01-01 17:30:00 0.235515 4.122913 -3.901979 1.107505
2000-01-01 17:45:00 0.121232 4.316179 -4.294560 -0.325761
2000-01-01 18:00:00 1.406108 4.909856 -4.380683 -1.371316
2000-01-01 18:15:00 -0.330192 4.092084 -4.433832 0.451967
2000-01-01 18:30:00 0.069717 4.602332 -4.814984 1.041939
2000-01-01 18:45:00 -2.441102 4.077937 -4.477974 -0.284751
2000-01-01 19:00:00 1.117306 4.669111 -4.433551 1.887700
2000-01-01 19:15:00 0.482482 4.545320 -4.231923 2.098973
2000-01-01 19:30:00 0.146878 4.230201 -4.738262 0.260756
2000-01-01 19:45:00 0.491376 5.230373 -5.069700 -0.936606
2000-01-01 20:00:00 -1.075473 4.701905 -4.245575 2.898905
2000-01-01 20:15:00 1.728790 4.291821 -4.145234 -0.735600
2000-01-01 20:30:00 0.680025 4.509368 -4.176570 0.346777
2000-01-01 20:45:00 -0.603546 4.479395 -4.033444 1.901963
2000-01-01 21:00:00 -0.893833 4.472098 -4.658866 0.026791
2000-01-01 21:15:00 -0.571074 4.066533 -4.773198 0.719510
2000-01-01 21:30:00 -1.109575 4.377526 -4.154108 -0.419939
2000-01-01 21:45:00 -1.109197 4.244968 -4.476610 0.625287
2000-01-01 22:00:00 -0.500703 4.204465 -4.695903 -0.205293
2000-01-01 22:15:00 -0.474312 4.278451 -4.261542 -0.605803
2000-01-01 22:30:00 -0.929173 4.679216 -4.243371 -0.389516
2000-01-01 22:45:00 0.625107 4.588921 -3.944369 0.051261
2000-01-01 23:00:00 0.223470 4.300131 -4.556017 0.411957
2000-01-01 23:15:00 2.834194 4.669853 -4.894633 -0.172413
2000-01-01 23:30:00 0.271214 4.468473 -4.059279 -0.144921
2000-01-01 23:45:00 1.005364 4.311476 -4.373045 -0.532617
2000-01-02 00:00:00 -0.177777 4.288976 -4.784412 1.279124
2000-01-02 00:15:00 1.767240 4.268321 -4.964638 0.978593
2000-01-02 00:30:00 0.874845 4.114844 -4.735220 0.755658
2000-01-02 00:45:00 0.139810 4.480646 -4.530709 1.861165
2000-01-02 01:00:00 -1.633137 4.237701 -4.465151 1.502397
2000-01-02 01:15:00 0.497876 4.056503 -4.348021 -0.019043
2000-01-02 01:30:00 0.183521 4.369899 -4.264499 0.725734
2000-01-02 01:45:00 -0.365043 4.257799 -4.003001 -0.197835
2000-01-02 02:00:00 1.389697 4.463931 -4.166211 1.310472
2000-01-02 02:15:00 -0.829049 4.360859 -5.347301 -0.719968
2000-01-02 02:30:00 -0.257339 4.156498 -4.481656 0.804225
2000-01-02 02:45:00 -0.112207 4.238031 -4.277917 -1.851001
2000-01-02 03:00:00 1.024404 4.315122 -4.296867 1.567366
2000-01-02 03:15:00 1.506557 4.440672 -4.429984 -1.569164
2000-01-02 03:30:00 0.292707 4.088439 -3.877321 -0.169247
2000-01-02 03:45:00 -1.838429 4.056206 -4.687052 0.679375
2000-01-02 04:00:00 0.469589 3.651325 -3.386148 0.071214 [Finished in 2.6s]
《利用python进行数据分析》读书笔记--第十章 时间序列(三)的更多相关文章
- 《利用Python 进行数据分析》 - 笔记(4)----json
解决方案: 读写文本格式的数据: pandas 提供了一些用于将表格型数据读取为DataFrame对象的函数 pandas 中的解析函数 函数的选项可以划分为以下几个大类 索引:将一个或多个列当做返回 ...
- 【python】《利用python进行数据分析》笔记
[第三章]ipython C-a 到行首 C-e 到行尾 %timeit 测量语句时间,%time是一次,%timeit是多次. %pdb是自动调试的开关. %debug中,可以用b 12在第12行设 ...
- 《利用Python进行数据分析》笔记---第6章数据加载、存储与文件格式
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 《利用Python进行数据分析》笔记---第5章pandas入门
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 《利用Python进行数据分析》笔记---第4章NumPy基础:数组和矢量计算
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 《利用Python进行数据分析》笔记---第2章--1880-2010年间全美婴儿姓名
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 《利用Python进行数据分析》笔记---第2章--MovieLens 1M数据集
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 《利用Python进行数据分析》笔记---第2章--来自bit.ly的1.usa.gov数据
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 利用Python进行数据分析-Pandas(第七部分-时间序列)
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(ti ...
随机推荐
- nodejs发起HTTPS请求并获取数据
摘要:在网站中有时候需要跨域请求数据,直接用Ajax无法实现跨域,采用其他方式需要根据不同的浏览器做相应的处理.用Nodejs可以很好的解决这些问题,后台引用HTTPS模块,发送和返回的数据均为JSO ...
- SQL 存储和触发器
存储过程:就像函数一样的会保存在数据库中-->可编程性 --> 存储过程 创建存储过程:create proc JiaFa--需要的参数@a int,@b intas --存储过程的内容 ...
- linux第12天 线程
今天主要学习了共享内存,信号量的封装,还有线程. POSIX线程库 与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的 要使用这些函数库,要通过引入头文<p ...
- linux kernel.shmall shemax shemin 參數解釋
分类: oracle linux 2010-06-17 14:30 6193人阅读 评论(0) 收藏 举报 linuxoracleredhat数据库服务器x86 Linux X86-64操作系统,Or ...
- GitHub和SourceTree入门教程——(转载),希望能帮到有需要的人
-->本教程适用于主流的开源网站github和bitbucket,个人认为sourceTree还是比较好用的git客户端,支持windows和mac os. -->soureceTree的 ...
- paper 45:latex的使用
本教程面向对LaTeX完全无认知无基础的新人. 旨在让新人能够用最简单快捷的方式,轻松入门,能够迅速使用LaTeX完成基本的文本编辑. 尤其旨在破除部分新人对LaTeX在传闻中难以学习的恐惧感. 在入 ...
- MVC权限管理系统dwpro项目权限按钮无故自动消失问题
关于那个权限按钮丢失的问题修改方法如下: 把源文件中的XmlConfig文件夹里的Config.xml文件剪切到根目录下,并修改文件名为:app.config(关键是后缀不是xml了是config) ...
- full_case & parallel_case
case中的full_case与parallel_case讨论: 1)术语介绍: 整个case模块叫做:case_statement,注释部分叫做case_statement_header case ...
- 开源软件free download manager在windows defender中报毒
从官网上下载的fdm lite 3.9.6,从图片中可以看出安装包有数字签名,windows defender报毒,在线杀毒也检出木马,官网的程序更新到了3.9.6版本,在sourceforge上的源 ...
- HTTP错误汇总(404、302、200……)
HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 ...