cluster_power.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # time: 2023/5/11 14:43
  4. # file: cluster_power.py
  5. # author: David
  6. # company: shenyang JY
  7. import os
  8. import numpy as np
  9. import pandas as pd
  10. # 从confinuous_data中拿数据
  11. cluster = []
  12. def
  13. def cluster_power(cluster, out_put):
  14. """
  15. 把聚类的结果
  16. """
  17. if not os.path.exists(out_put):
  18. os.makedirs(out_put)
  19. output_filtered_csv_files = '../data/output_filtered_csv_files/'
  20. files = os.listdir(output_filtered_csv_files)
  21. files.remove('turbine-144.csv')
  22. assert len(cluster) == len(files)
  23. continuous_data_path = '../data/continuous_data/'
  24. # 遍历整个continuous_data_path文件夹
  25. continuous_list = []
  26. for dirpath, dirnames, filenames in os.walk(continuous_data_path):
  27. dirname = dirpath.split('/')[-1]
  28. filenames = [file for file in filenames if not file.startswith('turbine-144')]
  29. x = [os.path.join(dirpath, filename) for filename in filenames]
  30. continuous_list.append((x, dirname))
  31. continuous_list.pop(0)
  32. for i in range(len(continuous_list)):
  33. cfs = {}
  34. dfs = [pd.read_csv(path) for path in continuous_list[i][0]]
  35. for j in range(1, max(cluster)+1):
  36. arr_j = np.where(cluster == j)[0] # cluster中聚类j的索引列表
  37. cfs.setdefault(j, [files[k] for k in arr_j])
  38. dfs_j = [dfs[k] for k in arr_j] # cluster
  39. dfj, time_series = dfs_j[0].loc[:, ['C_TIME','C_ACTIVE_POWER']], dfs_j[0]['C_TIME']
  40. for df in dfs_j[1:]:
  41. if df['C_TIME'].equals(time_series) is False:
  42. print("风机之间的日期不一致!")
  43. raise ValueError
  44. dfj['C_ACTIVE_POWER'] += df['C_ACTIVE_POWER']
  45. output_1 = os.path.join(out_put, continuous_list[i][1])
  46. if not os.path.exists(output_1):
  47. os.makedirs(output_1)
  48. dfj.to_csv(os.path.join(output_1, 'power_' + str(j) + '.csv'), index=False)
  49. paint_cluster_power(output_1)
  50. print("------{}的分组信息----".format(continuous_list[i][1]))
  51. for key, value in cfs.items():
  52. print("第{}组:{}".format(key, cfs[key]))
  53. def paint_cluster_power(cluster_path):
  54. dfs = [pd.read_csv(os.path.join(cluster_path, file_path)).rename(columns={'C_ACTIVE_POWER':file_path.split('/')[-1][:-4]}) for file_path in os.listdir(cluster_path)]
  55. df_cluster = pd.DataFrame({df.columns[-1]: df.iloc[:, -1] for df in dfs})
  56. df_cluster.insert(loc=0, column='C_TIME', value=dfs[0]['C_TIME'])
  57. df_cluster.to_csv(os.path.join(cluster_path, 'cluster_data.csv'), index=False)