python时间序列预测,量化分析resample,洗数据

学习之旅

df = pd.read_csv('train.csv', nrows=11856)
#nrows:需要读取的行数

# Creating train and test set
# Index 10392 marks the end of October 2013
train = df[0:10392]
test = df[10392:]
带有时间的表格数据的处理(df.resample)量化交易
 df.resample('D')

这个dataframe,时间不连续。分析建模都是需要时间均匀间隔的数据
因此用df = df.resample(‘60S’)把他洗成1min频率的数据
在这里插入图片描述

df = df.resample('60S').last()
#last()表示使用每个分钟段区间内的最后一个数据作为该分钟最终显示的数据,如果该分钟内没有任何数据则会显示NaN
#sum()表示总的
#mean()平均

在这里插入图片描述
两个参数我们想要的效果不一样就分开获取

price = df['price].resample('60S', label = 'right').last()
volume = df['price].resample('60S', label = 'right').sum()
df = pd.concat([price, volume], axis = 1)

'''
从新的dataframe中我们还是可以观察出问题:
原dataframe的第一个记录是00:00:07,然而这个数据却被自动附到了新dataframe中00:00:00的index上。
而事实上在00:00:00时刻,我们并不知道00:00:07发生了什么
所以我们通过设置label的参数去解决第一个问题。
在resample函数里,label默认值是left,也就是把一个区间内的数据的计算结果都附到区间左侧端点上,
而我们想要的则是相反的情况,也就是label = right
我们通过将price和volume分开处理,price使用last,volume则使用sum函数,达到了更合理的处理效果。
最后,我们用concat函数将两个Series合并
'''

还可以利用apply和lambda函数计算每分钟交易量加权的价格

df.resample('60S', label = 'right').apply(lambda x:np.average(x['price'] ,weights = x['volume']) #weights是每个时间区段内的所有volume数据
if sum(x['volume']) != 0 
else np.average(x['price'])[['price']]

lamba:

def sum(x,y):
      return x+y
#--------------------------------      
p = lambda x,y:x+y
print(p(4,6))

apply 用在dataframe上,用于对row或者column进行计算

import numpy as np
import pandas as pd
 
 
f = lambda x: x.max()-x.min()
 
df = pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah', 'ohio', 'texas', 'oregon'])
print(df)
 
t1 = df.apply(f)  #默认列计算
print(t1)
 
t2 = df.apply(f, axis=1)   #axis=1:行计算
print(t2)

------------------------------
               b         d         e
utah    1.106486  0.101113 -0.494279
ohio    0.955676 -1.889499  0.522151
texas   1.891144 -0.670588  0.106530
oregon -0.062372  0.991231  0.294464
 
b    1.953516
d    2.880730
e    1.016430
dtype: float64
 
utah      1.600766
ohio      2.845175
texas     2.561732
oregon    1.053603
dtype: float64

axis:使用0值表示沿着每一列或行标签\索引值向下执行方法
使用1值表示沿着每一行或者列标签模向执行对应的方法
在这里插入图片描述
reshape学习

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值