2015-04-16-时间序列(2)-时区处理等
来源:互联网 发布:安卓微信虚拟聊天软件 编辑:程序博客网 时间:2024/06/01 20:50
from pandas import DataFrame,Series
import numpy as np
import pandas as pd
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----(四)、时区处理
import pytz
pytz.common_timezones[-5:]
ts=pytz.timezone('US/Eastern')
#-----1.本地化和转换
rng=pd.date_range('3/9/2012 9:30',periods=6,freq='D')
ts=Series(np.random.randn(len(rng)),index=rng)
print(ts.index.tz)
#在生成日期范围的时候还可以加上一个时区集
pd.date_range('3/9/2012 9:30',periods=10,freq='D',tz='UTC')
#本地化
ts_utc=ts.tz_localize('UTC')
ts_utc
ts_utc.index
#转换到别的时区
ts_utc.tz_convert('US/Eastern')
ts_eastern=ts.tz_localize('US/Eastern')
ts_eastern.tz_convert('UTC')
ts_eastern.tz_convert('Europe/Berlin')
#tz_localize和tz_convert也是DatetimeIndex的实例方法
ts.index.tz_localize('Asia/Shanghai')
#-----2.操作时区意识型Timestamp对象
stamp=pd.Timestamp('2011-03-12 04:00')
stamp_utc=stamp.tz_localize('utc')
stamp_utc.tz_convert('US/Eastern')
#在创建Timestamp时,还可以传入一个时区信息
stamp_moscow=pd.Timestamp('2011-03-12 04:00',tz='Europe/Moscow')
stamp_moscow
#时区意识型Timestamp对象在内部保存了一个UTC时间戳值
stamp_utc.value
stamp_utc.tz_convert('US/Eastern').value
#当使用pandas的DateOffset对象执行时间算术运算时,运算过程会自动关注是否存在夏令时转变期
#夏令时转变前30分钟
from pandas.tseries.offsets import Hour
stamp=pd.Timestamp('2012-03-12 01:30',tz='US/Eastern')
stamp
stamp+Hour()
#夏令时转变前90分钟
stamp=pd.Timestamp('2012-11-04 00:59',tz='US/Eastern')
stamp
stamp+Hour()
#-----3.不同时区之间的运算
rng=pd.date_range('3/7/2012 9:30',periods=10,freq='B')
ts=Series(np.random.randn(len(rng)),index=rng)
ts
ts1=ts[:7].tz_localize('Europe/London')
ts2=ts1[2:].tz_convert('Europe/Moscow')
result=ts1+ts2
result.index
-----------------------------------------------------------------------------------------
-----(五)、时期及其算术运算
p=pd.Period(2007,freq='A-DEC')
p
位移
p+5
p-2
pd.Period('2014',freq='A-DEC')-p
#period_range函数
rng=pd.period_range('1/1/2000','6/30/2000',freq='M')
Series(np.random.randn(6),index=rng)
values=['2001Q3','2002Q2','2003Q1']
index=pd.PeriodIndex(values,freq='Q-DEC')
#-----1.时期的频率转换
p=pd.Period('2007',freq='A-DEC')
p.asfreq('M',how='start')
p.asfreq('M',how='end')
p=pd.Period('2007-08','M')
p.asfreq('A-JUN')
rng=pd.period_range('2006','2009',freq='A-DEC')
ts=Series(np.random.randn(len(rng)),index=rng)
ts.asfreq('M',how='start')
ts.asfreq('B',how='end')
#-----2.按季度计算的时期频率
p=pd.Period('2012Q4',freq='Q-JAN')
p
p.asfreq('D','start')
p.asfreq('D','end')
#获取该季度倒数第二个工作日下午4点的时间戳
p4pm=(p.asfreq('B','e')-1).asfreq('T','s')+16*60
p4pm
p4pm.to_timestamp()
#形成季度型范围
rng=pd.period_range('2011Q3','2012Q4',freq='Q-JAN')
ts=Series(np.arange(len(rng)),index=rng)
ts
new_rng=(rng.asfreq('B','e')-1).asfreq('T','s')+16*60
ts.index=new_rng.to_timestamp()
ts
#-----3.将Timestamp转换为Period(及其反向工程)
rng=pd.date_range('1/1/2000',periods=3,freq='M')
ts=Series(np.random.randn(3),index=rng)
pts=ts.to_period()
ts
pts
rng=pd.date_range('1/29/2000',periods=6,freq='D')
ts2=Series(np.random.randn(6),index=rng)
ts2.to_period('M')
pts=ts.to_period()
pts
pts.to_timestamp(how='end')
#-----4.通过数组创建PeriodIndex
cd L:\czz
data=pd.read_csv('ch08\macrodata.csv')
data.year
data.quarter
index=pd.PeriodIndex(year=data.year,quarter=data.quarter,freq='Q-DEC')
data.index=index
data.infl
-----------------------------------------------------------------------------------------
-----(六)、重采样及频率转换
rng=pd.date_range('1/1/2000',periods=100,freq='D')
ts=Series(np.random.randn(len(rng)),index=rng)
ts.resample('M',how='mean')
ts.resample('M',how='mean',kind='period')
#####resample方法的参数
freq 表示重采样频率的字符串或DateOffset,例如'M','5min'或Second(15)
how='mean' 用于产生聚合值的函数名或数组函数,如mean,ohlc,max,min,first,last,median
axis=0 重采样的轴,默认为axis=0
fill_method=None 升采样时如何插值,比如'ffill'或'bfill'.默认不插值
closed='right' 在降采样中,各时间段的哪一端是闭合(即包含)的,right或left
label='right' 在降采样中,如何设置聚合值的标签,right或left(面元的右边界或左边界).
例如9:30到9:35之间的这5分钟会被标记为9:30或9:35.默认为'right'
loffset=None 面元标签的时间校正值,比如'-1s'/Second(-1)用于将聚合标签调早1秒
limit=None 在前向或后向填充时,允许填充的最大时期数
kind=None 聚合到时期('period')或时间戳('timestamp'),默认聚合到时间序列的索引类型
convention=None 当重采样时,将低频率转换到高频率所采用的约定('start'或'end')。默认为'end'
#####
#------1.降采样
#在用resample对数据进行降采样时,需要考虑两样东西1.各区间哪边是闭合的 2.如何标记各个聚合面元,用区间的开头还是末尾
rng=pd.date_range('1/1/2000',periods=12,freq='T')
ts=Series(np.arange(12),index=rng)
ts
#通过求和的方式将这些数据聚合到'5分钟'块中
ts.resample('5min',how='sum')
ts.resample('5min',how='sum',closed='right')
ts.resample('5min',how='sum',closed='left')
ts.resample('5min',how='sum',closed='left',label='left')
#对结果索引做一些位移
ts.resample('5min',how='sum',loffset='-1s')
#------2.OHLC重采样
ts.resample('5min',how='ohlc')
#------3.通过groupby进行重采样
rng=pd.date_range('1/1/2000',periods=100,freq='D')
ts=Series(np.arange(100),index=rng)
ts.groupby(lambda x:x.month).mean()
ts.groupby(lambda x:x.weekday).mean()
#------4.升采样和插值
frame=DataFrame(np.random.randn(2,4),index=pd.date_range('1/1/2000',periods=2,freq='W-WED'),
columns=['Colorado','Texas','New York','Ohio']
)
frame
df_daily=frame.resample('D')
df_daily
#填充值
frame.resample('D',fill_method='ffill')
#只填充指定的时期值
frame.resample('D',fill_method='ffill',limit=2)
frame.resample('W-THU',fill_method='ffill')
#------5.通过时期进行重采样
frame=DataFrame(np.random.randn(24,4),index=pd.period_range('1-2000','12-2001',freq='M'),columns=['Colorado','Texas','New York','Ohio'])
annual_frame=frame.resample('A-DEC',how='mean')
annual_frame
#Q-DEC:季度型(每年以12月结束)
annual_frame.resample('Q-DEC',fill_method='ffill') ???
annual_frame.resample('Q-DEC',fill_method='ffill',convention='start') ???
annual_frame.resample('Q-MAR',fill_method='ffill')
-----------------------------------------------------------------------------------------
-----(七)、时间序列绘图
cd L:\czz
close_px_all=pd.read_csv(r'ch09\stock_px.csv',parse_dates=True,index_col=0)
close_px=close_px_all[['AAPL','MSFT','XOM']]
close_px=close_px.resample('B',fill_method='ffill')
close_px
#绘图
close_px['AAPL'].plot()
#只绘制2009年的数据
close_px.ix['2009'].plot()
#苹果公司在2011年1月到3月间的每日股价
close_px['AAPL'].ix['01-2011':'03-2011'].plot()
#季度
appl_q=close_px['AAPL'].resample('Q-DEC',fill_method='ffill')
appl_q.ix['2009':].plot()
-----------------------------------------------------------------------------------------
-----(八)、移动窗口函数
close_px.AAPL.plot()
pd.rolling_mean(close_px.AAPL,250).plot() ??
appl_std250=pd.rolling_std(close_px.AAPL,250,min_periods=10) ??
appl_std250[5:12]
appl_std250.plot()
#通过rolling_mean定义扩展平均
expanding_mean=lambda x:rolling_mean(x,len(x),min_periods=1)
pd.rolling_mean(close_px,60).plot(logy=True)
######移动窗口和指数加权函数
rolling_count 返回各窗口非NA观测值的数量
rolling_sum 移动窗口的和
rolling_mean 移动窗口的平均值
rolling_median 移动窗口的中位数
rolling_var,rolling_std 移动窗口的方差和标准差.分母为n-1
rolling_skew,rolling_kurt 移动窗口的偏度(三阶矩)和峰度(四阶矩)
rolling_min,rolling_max 移动窗口的最小值和最大值
rolling_quantile 移动窗口指定百分位数/样本分位数位置的值
rolling_corr,rolling_cov 移动窗口的相关系数和协方差
rolling_apply 对移动窗口应用普通数组函数
ewma 指数加权移动平均
ewmvar,ewmstd 指数加权移动方差和标准差
ewmcorr,ewmcov 指数加权移动相关系数和协方差
######
#------1.指数加权函数
#简单移动平均和指数加权移动平均
fig,axes=plt.subplots(nrows=2,ncols=1,sharex=True,sharey=True,figsize=(12,7))
aapl_px=close_px.AAPL['2005':'2009']
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')
#-----2.二元移动窗口函数
spx_px=close_px_all['SPX']
spx_rets=spx_px/spx_px.shift(1)-1
returns=close_px.pct_change()
corr=pd.rolling_corr(returns.AAPL,spx_rets,125,min_periods=100)
corr.plot()# AAPL六个月的回报与标准普尔500指数的相关系数
corr=pd.rolling_corr(returns,spx_rets,125,min_periods=100)
corr.plot()#3只股票6个月的回报与标准普尔500指数的相关系数
#-----3.用户定义的移动窗口函数
#AAPL 2%回报率的百分等级(一年窗口期)
from scipy.stats import percentileofscore
score_at_2percent=lambda x:percentileofscore(x,0.02)
result=pd.rolling_apply(returns.AAPL,250,score_at_2percent)
result.plot()
-----------------------------------------------------------------------------------------
-----(九)、性能和内存使用方面的注意事项
rng=pd.date_range('1/1/2000',periods=10000000,freq='10ms')
ts=Series(np.random.randn(len(rng)),index=rng)
ts
ts.resample('15min',how='ohlc')
%timeit ts.resample('15min',how='ohlc')
rng=pd.date_range('1/1/2000',periods=10000000,freq='1s')
ts=Series(np.random.randn(len(rng)),index=rng)
%timeit ts.resample('15s',how='ohlc')
import numpy as np
import pandas as pd
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----(四)、时区处理
import pytz
pytz.common_timezones[-5:]
ts=pytz.timezone('US/Eastern')
#-----1.本地化和转换
rng=pd.date_range('3/9/2012 9:30',periods=6,freq='D')
ts=Series(np.random.randn(len(rng)),index=rng)
print(ts.index.tz)
#在生成日期范围的时候还可以加上一个时区集
pd.date_range('3/9/2012 9:30',periods=10,freq='D',tz='UTC')
#本地化
ts_utc=ts.tz_localize('UTC')
ts_utc
ts_utc.index
#转换到别的时区
ts_utc.tz_convert('US/Eastern')
ts_eastern=ts.tz_localize('US/Eastern')
ts_eastern.tz_convert('UTC')
ts_eastern.tz_convert('Europe/Berlin')
#tz_localize和tz_convert也是DatetimeIndex的实例方法
ts.index.tz_localize('Asia/Shanghai')
#-----2.操作时区意识型Timestamp对象
stamp=pd.Timestamp('2011-03-12 04:00')
stamp_utc=stamp.tz_localize('utc')
stamp_utc.tz_convert('US/Eastern')
#在创建Timestamp时,还可以传入一个时区信息
stamp_moscow=pd.Timestamp('2011-03-12 04:00',tz='Europe/Moscow')
stamp_moscow
#时区意识型Timestamp对象在内部保存了一个UTC时间戳值
stamp_utc.value
stamp_utc.tz_convert('US/Eastern').value
#当使用pandas的DateOffset对象执行时间算术运算时,运算过程会自动关注是否存在夏令时转变期
#夏令时转变前30分钟
from pandas.tseries.offsets import Hour
stamp=pd.Timestamp('2012-03-12 01:30',tz='US/Eastern')
stamp
stamp+Hour()
#夏令时转变前90分钟
stamp=pd.Timestamp('2012-11-04 00:59',tz='US/Eastern')
stamp
stamp+Hour()
#-----3.不同时区之间的运算
rng=pd.date_range('3/7/2012 9:30',periods=10,freq='B')
ts=Series(np.random.randn(len(rng)),index=rng)
ts
ts1=ts[:7].tz_localize('Europe/London')
ts2=ts1[2:].tz_convert('Europe/Moscow')
result=ts1+ts2
result.index
-----------------------------------------------------------------------------------------
-----(五)、时期及其算术运算
p=pd.Period(2007,freq='A-DEC')
p
位移
p+5
p-2
pd.Period('2014',freq='A-DEC')-p
#period_range函数
rng=pd.period_range('1/1/2000','6/30/2000',freq='M')
Series(np.random.randn(6),index=rng)
values=['2001Q3','2002Q2','2003Q1']
index=pd.PeriodIndex(values,freq='Q-DEC')
#-----1.时期的频率转换
p=pd.Period('2007',freq='A-DEC')
p.asfreq('M',how='start')
p.asfreq('M',how='end')
p=pd.Period('2007-08','M')
p.asfreq('A-JUN')
rng=pd.period_range('2006','2009',freq='A-DEC')
ts=Series(np.random.randn(len(rng)),index=rng)
ts.asfreq('M',how='start')
ts.asfreq('B',how='end')
#-----2.按季度计算的时期频率
p=pd.Period('2012Q4',freq='Q-JAN')
p
p.asfreq('D','start')
p.asfreq('D','end')
#获取该季度倒数第二个工作日下午4点的时间戳
p4pm=(p.asfreq('B','e')-1).asfreq('T','s')+16*60
p4pm
p4pm.to_timestamp()
#形成季度型范围
rng=pd.period_range('2011Q3','2012Q4',freq='Q-JAN')
ts=Series(np.arange(len(rng)),index=rng)
ts
new_rng=(rng.asfreq('B','e')-1).asfreq('T','s')+16*60
ts.index=new_rng.to_timestamp()
ts
#-----3.将Timestamp转换为Period(及其反向工程)
rng=pd.date_range('1/1/2000',periods=3,freq='M')
ts=Series(np.random.randn(3),index=rng)
pts=ts.to_period()
ts
pts
rng=pd.date_range('1/29/2000',periods=6,freq='D')
ts2=Series(np.random.randn(6),index=rng)
ts2.to_period('M')
pts=ts.to_period()
pts
pts.to_timestamp(how='end')
#-----4.通过数组创建PeriodIndex
cd L:\czz
data=pd.read_csv('ch08\macrodata.csv')
data.year
data.quarter
index=pd.PeriodIndex(year=data.year,quarter=data.quarter,freq='Q-DEC')
data.index=index
data.infl
-----------------------------------------------------------------------------------------
-----(六)、重采样及频率转换
rng=pd.date_range('1/1/2000',periods=100,freq='D')
ts=Series(np.random.randn(len(rng)),index=rng)
ts.resample('M',how='mean')
ts.resample('M',how='mean',kind='period')
#####resample方法的参数
freq 表示重采样频率的字符串或DateOffset,例如'M','5min'或Second(15)
how='mean' 用于产生聚合值的函数名或数组函数,如mean,ohlc,max,min,first,last,median
axis=0 重采样的轴,默认为axis=0
fill_method=None 升采样时如何插值,比如'ffill'或'bfill'.默认不插值
closed='right' 在降采样中,各时间段的哪一端是闭合(即包含)的,right或left
label='right' 在降采样中,如何设置聚合值的标签,right或left(面元的右边界或左边界).
例如9:30到9:35之间的这5分钟会被标记为9:30或9:35.默认为'right'
loffset=None 面元标签的时间校正值,比如'-1s'/Second(-1)用于将聚合标签调早1秒
limit=None 在前向或后向填充时,允许填充的最大时期数
kind=None 聚合到时期('period')或时间戳('timestamp'),默认聚合到时间序列的索引类型
convention=None 当重采样时,将低频率转换到高频率所采用的约定('start'或'end')。默认为'end'
#####
#------1.降采样
#在用resample对数据进行降采样时,需要考虑两样东西1.各区间哪边是闭合的 2.如何标记各个聚合面元,用区间的开头还是末尾
rng=pd.date_range('1/1/2000',periods=12,freq='T')
ts=Series(np.arange(12),index=rng)
ts
#通过求和的方式将这些数据聚合到'5分钟'块中
ts.resample('5min',how='sum')
ts.resample('5min',how='sum',closed='right')
ts.resample('5min',how='sum',closed='left')
ts.resample('5min',how='sum',closed='left',label='left')
#对结果索引做一些位移
ts.resample('5min',how='sum',loffset='-1s')
#------2.OHLC重采样
ts.resample('5min',how='ohlc')
#------3.通过groupby进行重采样
rng=pd.date_range('1/1/2000',periods=100,freq='D')
ts=Series(np.arange(100),index=rng)
ts.groupby(lambda x:x.month).mean()
ts.groupby(lambda x:x.weekday).mean()
#------4.升采样和插值
frame=DataFrame(np.random.randn(2,4),index=pd.date_range('1/1/2000',periods=2,freq='W-WED'),
columns=['Colorado','Texas','New York','Ohio']
)
frame
df_daily=frame.resample('D')
df_daily
#填充值
frame.resample('D',fill_method='ffill')
#只填充指定的时期值
frame.resample('D',fill_method='ffill',limit=2)
frame.resample('W-THU',fill_method='ffill')
#------5.通过时期进行重采样
frame=DataFrame(np.random.randn(24,4),index=pd.period_range('1-2000','12-2001',freq='M'),columns=['Colorado','Texas','New York','Ohio'])
annual_frame=frame.resample('A-DEC',how='mean')
annual_frame
#Q-DEC:季度型(每年以12月结束)
annual_frame.resample('Q-DEC',fill_method='ffill') ???
annual_frame.resample('Q-DEC',fill_method='ffill',convention='start') ???
annual_frame.resample('Q-MAR',fill_method='ffill')
-----------------------------------------------------------------------------------------
-----(七)、时间序列绘图
cd L:\czz
close_px_all=pd.read_csv(r'ch09\stock_px.csv',parse_dates=True,index_col=0)
close_px=close_px_all[['AAPL','MSFT','XOM']]
close_px=close_px.resample('B',fill_method='ffill')
close_px
#绘图
close_px['AAPL'].plot()
#只绘制2009年的数据
close_px.ix['2009'].plot()
#苹果公司在2011年1月到3月间的每日股价
close_px['AAPL'].ix['01-2011':'03-2011'].plot()
#季度
appl_q=close_px['AAPL'].resample('Q-DEC',fill_method='ffill')
appl_q.ix['2009':].plot()
-----------------------------------------------------------------------------------------
-----(八)、移动窗口函数
close_px.AAPL.plot()
pd.rolling_mean(close_px.AAPL,250).plot() ??
appl_std250=pd.rolling_std(close_px.AAPL,250,min_periods=10) ??
appl_std250[5:12]
appl_std250.plot()
#通过rolling_mean定义扩展平均
expanding_mean=lambda x:rolling_mean(x,len(x),min_periods=1)
pd.rolling_mean(close_px,60).plot(logy=True)
######移动窗口和指数加权函数
rolling_count 返回各窗口非NA观测值的数量
rolling_sum 移动窗口的和
rolling_mean 移动窗口的平均值
rolling_median 移动窗口的中位数
rolling_var,rolling_std 移动窗口的方差和标准差.分母为n-1
rolling_skew,rolling_kurt 移动窗口的偏度(三阶矩)和峰度(四阶矩)
rolling_min,rolling_max 移动窗口的最小值和最大值
rolling_quantile 移动窗口指定百分位数/样本分位数位置的值
rolling_corr,rolling_cov 移动窗口的相关系数和协方差
rolling_apply 对移动窗口应用普通数组函数
ewma 指数加权移动平均
ewmvar,ewmstd 指数加权移动方差和标准差
ewmcorr,ewmcov 指数加权移动相关系数和协方差
######
#------1.指数加权函数
#简单移动平均和指数加权移动平均
fig,axes=plt.subplots(nrows=2,ncols=1,sharex=True,sharey=True,figsize=(12,7))
aapl_px=close_px.AAPL['2005':'2009']
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')
#-----2.二元移动窗口函数
spx_px=close_px_all['SPX']
spx_rets=spx_px/spx_px.shift(1)-1
returns=close_px.pct_change()
corr=pd.rolling_corr(returns.AAPL,spx_rets,125,min_periods=100)
corr.plot()# AAPL六个月的回报与标准普尔500指数的相关系数
corr=pd.rolling_corr(returns,spx_rets,125,min_periods=100)
corr.plot()#3只股票6个月的回报与标准普尔500指数的相关系数
#-----3.用户定义的移动窗口函数
#AAPL 2%回报率的百分等级(一年窗口期)
from scipy.stats import percentileofscore
score_at_2percent=lambda x:percentileofscore(x,0.02)
result=pd.rolling_apply(returns.AAPL,250,score_at_2percent)
result.plot()
-----------------------------------------------------------------------------------------
-----(九)、性能和内存使用方面的注意事项
rng=pd.date_range('1/1/2000',periods=10000000,freq='10ms')
ts=Series(np.random.randn(len(rng)),index=rng)
ts
ts.resample('15min',how='ohlc')
%timeit ts.resample('15min',how='ohlc')
rng=pd.date_range('1/1/2000',periods=10000000,freq='1s')
ts=Series(np.random.randn(len(rng)),index=rng)
%timeit ts.resample('15s',how='ohlc')
0 0
- 2015-04-16-时间序列(2)-时区处理等
- ios时间时区处理
- 时间时区处理问题
- Apache PHP 等服务器时间时区修改
- matlab自动交易系统 时间 时区差别处理
- linux windows 硬件时间,系统时间,时区处理全过程
- Java时间处理相对时间 之 时区相关
- GMT、UTC与24时区 等时间概念
- GMT、UTC与24时区 等时间概念
- GMT、UTC与24时区 等时间概念
- GMT、UTC与24时区等时间概念
- GMT、UTC与24时区 等时间概念
- Cento 配置时间时区等信息(ntp/timezone)
- GMT、UTC与24时区 等时间概念
- ubuntu 时区 修改时间 保存 重启 变化等
- ubuntu 时区 修改时间 保存 重启 变化等
- 时区处理
- spring boot 架构问题 时间处理 (映射,时区问题)
- 菜鸟学习Struts2遇到的问题
- 命名空间、using声明和using指示【附送彩蛋】
- centos FTP服务器的架设和配置
- Java知识整理
- 文章标题
- 2015-04-16-时间序列(2)-时区处理等
- 学英语《每日一歌》之yesterday once more
- jxcx_Hermes-3-使用-hermes消费MetaQ中的数据
- Permutations(Leet Code)
- POJ 1986 — Distance Queries
- UVA11401
- UML
- SVM算法
- 20150421