samedi 10 novembre 2018

Python Randomized combinations Dataframe

I would like to calculate randamized combinations using the data in a dataframe. I already can create the combinations and subtract the values from each other. Now I try to achieve picking e.g. 100 randomized combinations and subtract these with the conditions defined in my code below:

The code looks like the following:

from itertools import combinations
import random as rnd
import pandas as pd

df = pd.read_csv('C:/Input_Data_Analysis_Testanalysis.csv',sep=';')
print(df)

df_res2 = pd.DataFrame([list(name_g) + [-val1+val2,'{},{}'.format(unit1,unit2), '{},{}'.format(town1,town2)] 
                        for name_g, df_g in df.groupby(['fact_date','Country','Scen']) 
                        for ((val1, unit1, town1), (val2, unit2, town2)) in combinations(df_g[['Value','Unit','Town']].values,2)],
                        columns=['Combination','Country','Scen','Value_Sum','Unit_Com','Town'])

I also tried making an example how I can randomize data in an dataframe with a little bit different simpler example it somehow worked but using it in the original code above I not succeed making it:

print(df_res2)
z = []

for i in range(20):
    #constant seed for cross-check reasons
    rnd.seed(i)
    y = rnd.choice(df_res2)
    z.append(y)

print(z)

But if i try using the randomizer in the original code I get an error message:

KeyError: 12

The input Data looks like the following:

   fact_date Unit    Town  Scen  Value Country
0    11. Apr    a  Town A     1     13     USA
1    11. Apr    a  Town A     2     11     USA
2    11. Apr    b  Town A     1     15     USA
3    11. Apr    b  Town A     2     20     USA
4    10. Apr    a  Town A     1     18     USA
5    10. Apr    a  Town A     2     12     USA
6    10. Apr    b  Town A     1     10     USA
7    10. Apr    b  Town A     2     13     USA
8    11. Apr    e  Town B     1     18     USA
9    11. Apr    e  Town B     2     17     USA
10   11. Apr    f  Town B     1     15     USA
11   11. Apr    f  Town B     2     19     USA
12   10. Apr    e  Town B     1     19     USA
13   10. Apr    e  Town B     2     10     USA
14   10. Apr    f  Town B     1     16     USA
15   10. Apr    f  Town B     2     10     USA

I expect the output to look like the following (if it is randomized it might looks different (seed can be kept in the first instance constant that the results are reproducable):

   Combination Country  Scen  Value_Sum Unit_Com           Town
0      10. Apr     USA     1         -8      a,b  Town A,Town A
1      10. Apr     USA     1          1      a,e  Town A,Town B
2      10. Apr     USA     1         -2      a,f  Town A,Town B
3      10. Apr     USA     1          9      b,e  Town A,Town B
4      10. Apr     USA     1          6      b,f  Town A,Town B
5      10. Apr     USA     1         -3      e,f  Town B,Town B
6      10. Apr     USA     2          1      a,b  Town A,Town A
7      10. Apr     USA     2         -2      a,e  Town A,Town B
8      10. Apr     USA     2         -2      a,f  Town A,Town B
9      10. Apr     USA     2         -3      b,e  Town A,Town B
10     10. Apr     USA     2         -3      b,f  Town A,Town B
11     10. Apr     USA     2          0      e,f  Town B,Town B
12     10. Apr     USA     2         -2      a,f  Town A,Town B  
13     10. Apr     USA     2         -3      e,f  Town B,Town B
14     10. Apr     USA     2         -3      b,e  Town A,Town B
15     10. Apr     USA     2          1      a,b  Town A,Town A
16     10. Apr     USA     2         -3      b,f  Town A,Town B
17     11. Apr     USA     1          2      a,b  Town A,Town A
18     11. Apr     USA     1          5      a,e  Town A,Town B
19     11. Apr     USA     1          2      a,f  Town A,Town B
20     11. Apr     USA     1          3      b,e  Town A,Town B
21     11. Apr     USA     1          0      b,f  Town A,Town B
22     11. Apr     USA     1         -3      e,f  Town B,Town B
23     11. Apr     USA     2          9      a,b  Town A,Town A
24     11. Apr     USA     2          6      a,e  Town A,Town B
25     11. Apr     USA     2          8      a,f  Town A,Town B
26     11. Apr     USA     2         -3      b,e  Town A,Town B
27     11. Apr     USA     2         -1      b,f  Town A,Town B
28     11. Apr     USA     2          2      e,f  Town B,Town B
29     11. Apr     USA     2          6      a,e  Town A,Town B 
30     11. Apr     USA     2          6      a,e  Town A,Town B
31     11. Apr     USA     2         -3      e,f  Town B,Town B
32     11. Apr     USA     2          2      a,f  Town A,Town B
33     11. Apr     USA     2          9      a,b  Town A,Town A




Aucun commentaire:

Enregistrer un commentaire