# 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.