hotmap.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # time: 2024/8/2 9:49
  4. # file: hotmap.py
  5. # author: David
  6. # company: shenyang JY
  7. import matplotlib.pyplot as plt
  8. import seaborn as sns
  9. import pandas as pd
  10. import math
  11. weather = pd.read_csv('./weather-1-process.csv')
  12. power = pd.read_csv('./power.csv')
  13. data = pd.merge(weather, power, on='C_TIME')
  14. data['C_TIME'] = pd.to_datetime(data['C_TIME'])
  15. data['时间1'] = data['C_TIME'].dt.strftime('%Y-%m')
  16. data = data[['C_TIME', '时间1', 'C_AIRT', 'C_CELLT', 'C_DIFFUSER', 'C_DIRECTR', 'C_GLOBALR', 'C_REAL_VALUE']]
  17. pearson = pd.DataFrame()
  18. data.iloc[:, 2:] = data.iloc[:, 2:].astype(float)
  19. indexs= []
  20. new = {}
  21. for name, group in data.groupby('时间1'):
  22. print("name=", name, "长度:", len(group))
  23. indexs.append(name)
  24. # new = {}
  25. for key, value in group.iloc[:, 2:].iteritems():
  26. cov = group[key].cov(group['C_REAL_VALUE'])
  27. var = group['C_REAL_VALUE'].var()
  28. vari = group[key].var()
  29. if var * vari != 0 :
  30. res_pearson = cov/math.sqrt(var*vari)
  31. else:
  32. res_pearson = 0
  33. # new[key] = res_pearson
  34. new.setdefault(key, []).append(res_pearson)
  35. pearson = pd.DataFrame(new, index=indexs)
  36. # pearson = pearson.append(new, ignore_index=True)
  37. # plt.style.use('ggplot')
  38. # plt.rcParams['font.sans-serif'] = ['SimHei']
  39. # plt.rcParams['axes.unicode_minus'] = False
  40. fig,ax = plt.subplots(figsize=(50,6))
  41. sns.set(font_scale=1.25)
  42. # cmap = sns.cm.hot_r
  43. hm = sns.heatmap(pearson, cbar=True, square=True, fmt='.2f', annot=True, annot_kws={'size': 10}, cmap="hot_r")
  44. plt.show()