# Calculate ratio compared with the previous period for the selected records

Task:Find the trading information and increase rate of a stock in the three trading days with the highest share price.

### Python

 1 import pandas as pd 2 stock1001_file = "E:\\txt\\stock1001_price.txt" 3 stock1001 = pd.read_csv(stock1001_file,sep = '\t') 4 CL = stock1001['CL'] 5 CL_psort = CL.argsort()[::-1].iloc[:3].values 6 CL_psort_shift1 = CL_psort-1 7 CL_rise = CL[CL_psort].values/CL[CL_psort_shift1].values-1 8 max_3 = stock1001.loc[CL_psort].reset_index(drop = True) 9 max_3['RISE'] = CL_rise 10 print(max_3)

Python can't use position to directly calculate ratio compared with the previous period. It needs to construct a position sequence of the previous period and then calculate.

### esProc

 A 1 =Stocks.sort(TradingDate) 2 =A1.psort(ClosePrice:-1)([1,2,3]) The position of three days with highest share price 3 =A1.calc(A2, ClosePrice/ClosePrice[-1]-1) Calculate the increase rate for the three days 4 =A1(A2).new(TradingDate,ClosePrice,A3(#):IncreaseRate)

esProc is very good at these calculations related to order and position, and the code is simple and in line with natural thinking.