使用i iteration和np.sum函数时获得不同的结果

时间:2017-09-06 06:24:43

标签: python-2.7 sum iteration

我有一个pandas Dataframe,我想得到每日回报的总和'每60天数据框的一列。以下是我的代码:

day = days() #days is a function to count business days.
for day>60: 
    for i  in range(day-60,day): 
        current_x = sh600004['daily return'][i]
        x_list.append(current_x)
        x_sum = sum(x_list)
        print x_sum

这是我得到的enter image description here

为了测试结果,我使用了以下代码:

y = sh600004
y.apply(lambda x: x.sum())

我得到了不同的结果。enter image description here

每日回报的总和'列不一样。当我打印出我的数据帧sh600004时,我意识到x_sum中的数据与sh600004 ['每日返回']相同,而不是它的总和。

我需要做些什么来获得每日返程的每60天的总和?有人可以帮忙吗?

我不知道是否会有所帮助,但这是我迄今为止编写的代码:

#calculate daily return
daily_close = sh600004['close']
daily_pct_c = daily_close.pct_change().fillna(0)
sh600004['daily return'] = daily_pct_c


def days():
    day = np.busday_count((datetime.datetime.strptime(sh600004['date'][0], '%Y/%m/%d')),pd.to_datetime(date), weekmask='1111100', holidays=holiday_list) 
    return day

def xn_deviation():
    x_list = []
    deviation_list = []
    z_list = []
    diff_list = []
    result_list  = []
    day = days()
    for i in range(0, 60):
        current_x = sh600004['daily return'][i]
        x_list.append(current_x)
        x_sum = sum(x_list)
        x_average = x_sum/len(x_list) #xn average
        x_deviation = current_x - x_average #xn deviation
        deviation_list.append(x_deviation)
        dev_sum = sum(deviation_list) #calculate Z
        z_list.append(dev_sum) #deviation sum list
        r = max(z_list)-min(z_list) #calculate widest deviation
        diff = np.square(current_x - x_average)
        diff_list.append(diff)
        sum_diff = sum(diff_list)
        s = np.sqrt(sum_diff/len(x_list))
        result_list = [r,s]
        return result_list
    else:
        for i  in range(day-60,day):
            #same code as before

#loop
for date in sh600004.index:
    days()
    xn_deviation()

0 个答案:

没有答案