In [1] I showed how quantiles in GAMS are difficult, and how they can be calculated better in R. Here is some Python code to do the same:
import pandas as pd df = pd.read_csv("p.csv") q=df.groupby(['i','j']).quantile([0,.25,.5,.75,1]) print(q) q.to_csv("q.csv") |
The q data frame looks like:
Val i j i1 j1 0.00 18.002966 0.25 28.242058 0.50 33.222936 0.75 62.736221 1.00 85.770764 j2 0.00 7.644259 0.25 41.375281 0.50 61.313381 0.75 82.127640 1.00 99.813645 j3 0.00 14.017667 0.25 16.559221 0.50 30.775334 0.75 38.482815 1.00 67.223932 i2 j1 0.00 11.938737 0.25 29.259331 0.50 55.029177 0.75 69.633259 1.00 83.258388 j2 0.00 16.857103 0.25 28.783298 0.50 53.358812 0.75 65.534761 1.00 87.373769 j3 0.00 5.608600 0.25 17.433855 0.50 33.311746 0.75 45.566497 1.00 64.926986 |
This is pretty clean. Data frames can easily be read in from CSV files or databases.
References
- http://yetanothermathprogrammingconsultant.blogspot.nl/2017/08/quantiles.html