norm.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # time: 2023/6/25 10:28
  4. # file: norm.py
  5. # author: David
  6. # company: shenyang JY
  7. import os.path
  8. import numpy as np
  9. import pandas as pd
  10. import yaml
  11. class Normalize():
  12. def __init__(self):
  13. self.mean = {}
  14. self.std = {}
  15. def normalize(self, df):
  16. """
  17. 暂时不将C_TIME归一化
  18. :param dfs:
  19. :return:
  20. """
  21. if 'C_TIME' in df.columns:
  22. df.drop('C_TIME', axis=1, inplace=True)
  23. mean_dict = np.mean(df, axis=0) # 数据的均值
  24. std_dict = np.std(df, axis=0) # 标准差
  25. for k, v in mean_dict.to_dict().items():
  26. self.mean[k] = round(v, 3)
  27. for k, v in std_dict.to_dict().items():
  28. self.std[k] = round(v, 3)
  29. print("归一化参数,均值为:{},方差为:{}".format(self.mean, self.std))
  30. def save_yml(self, yml_dict, path):
  31. cfg = {}
  32. for k, v in yml_dict.items():
  33. cfg[k] = v
  34. with open(path, 'w') as f:
  35. yaml.safe_dump(cfg, f, default_flow_style=False)
  36. if __name__ == '__main__':
  37. norm = Normalize()
  38. p = r'F:\ligh-power\data\J00226\rp.xls'
  39. en = r'F:\ligh-power\data\J00226\envir.xls'
  40. nwp = r'F:\ligh-power\data\J00226\nwp.xls'
  41. power = pd.read_excel(p)
  42. en = pd.read_excel(en)
  43. nwp = pd.read_excel(nwp)
  44. norm.normalize(power.loc[:, ['C_VALUE']])
  45. norm.normalize(en.loc[:, 'C_RH':'C_P'])
  46. norm.normalize(nwp.loc[:, 'C_DIRECTION10':'C_TEMPERATURE90'])
  47. norm.save_yml({'mean': norm.mean, 'std': norm.std}, path=r'F:\light-CDQ\data\J00226\norm.yaml')