file-export.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import pandas as pd
  2. import numpy as np
  3. id_header = ['Ebene' + str(i) for i in range(1, 11)]
  4. values2_header = ['VJ', 'AJ', 'FC', 'Plan_ori', 'Plan_Prozent', 'Stk', 'VAK', 'BE_Prozent', 'Plan_VJ', 'Plan_Stk_VJ', 'Plan',
  5. 'Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez', 'Periode13']
  6. season_header = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']
  7. header = ['text', 'costcenter', 'department'] + id_header + values2_header
  8. def expand(df, header, values_label):
  9. for i, key in enumerate(header):
  10. df[key] = df[values_label].str[i]
  11. return df
  12. def apply_season(df):
  13. df['Saison'] = df['Ebene1'].str.contains('Umsatzerlöse|Materialaufwand|Verkaufsabh. Kosten')
  14. for i, key in enumerate(season_header):
  15. df[key] = np.where(df['Saison'], df['Plan'] * df[key + '_2'] / 100, df['Plan'] * 8.3333 / 100)
  16. return df
  17. def data_cleansing(filename):
  18. df = pd.read_json(filename)
  19. df['values2'] = df['values2'].apply(lambda v: list(v.items()))
  20. df = df.explode('values2')
  21. df['department'], df['values2'] = zip(*df['values2'])
  22. df['id'] = df['id'].str.split(';')
  23. df = expand(df, id_header, 'id')
  24. df = expand(df, values2_header, 'values2')
  25. return df
  26. df = data_cleansing('Planung/V1.json')
  27. season = df[(df['level'] == 2) & (df['Ebene1'] == 'Umsatzerlöse')]
  28. plan = df[df['accounts'].apply(lambda a: len(a) > 0)]
  29. plan = pd.merge(plan, season, how='left', on=['Ebene2', 'department'], suffixes=('', '_2'))
  30. plan = apply_season(plan)
  31. # plan = plan[header]
  32. plan.to_csv(open('Planung/V1.csv', 'w', newline=''), sep=';', decimal=',', encoding='ansi', index=False)