itil_limited_power_cleaning.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import requests
  2. import pandas as pd
  3. url = 'http://itil.jiayuepowertech.com:9958/itil/api/power-limitation'
  4. def get_station_info(timeBegin, timeEnd):
  5. url_f = url + '?timeBegin=' + timeBegin + '&timeEnd=' + timeEnd
  6. res = requests.get(url_f).json()
  7. ele_info = list(filter(lambda x: x['stationCode'] == 'J00557', res['data']))
  8. return ele_info
  9. def cleaning_powers(power, ele_info):
  10. power = power.copy()
  11. start = len(power)
  12. print("限电清洗前,有{}条".format(start))
  13. for ele in ele_info:
  14. begin = ele['timeBegin']
  15. end = ele['timeEnd']
  16. ele_limits = power[begin: end].index.to_list()
  17. if len(ele_limits) > 0:
  18. print("清洗时段:{}-{}".format(ele_limits[0], ele_limits[-1]))
  19. power.drop(ele_limits, inplace=True)
  20. print("限电清洗后,有{}条, 一共清洗了{}条".format(len(power), start-len(power)))
  21. return power
  22. if __name__ == '__main__':
  23. power = pd.read_csv('./557/power.csv', parse_dates=['C_TIME'], index_col='C_TIME')
  24. dq = pd.read_csv('./557/dq.csv', parse_dates=['C_TIME'])
  25. ele_info = get_station_info('2023-01', '2023-10-31')
  26. power_filter = cleaning_powers(power, ele_info)
  27. power_filter.to_csv('./557/power_filter.csv')
  28. power_able = pd.merge(power, dq, on='C_TIME')
  29. power_able['error'] = round(power_able['ABLE'] - power_able['C_FP_VALUE'], 3)
  30. power_able.to_csv('./557/power_able.csv', index=False)