行业与气象数据的相关性探索

行业数据与气象数据的相关性探索

缺失值的处理方式

通过筛查,发现行业表中各类行业均缺失2021年1月26日的数据,对此天的气象数据选择跳过,其余进行连接

定性数据的赋值方式

1.行业类型

普通工业通常指的是一般性的工业生产活动,如制造业,采矿业,建筑业等;非普通工业用电则可能指的是一些特殊或非常规的工业用电活动,包括如高能耗行业,高污染行业,高技术含量行业;商业用电主要指的是商业场所和办公场所的用电,包括商店,办公楼,餐厅,酒店等地方的用电;大工业用电通常指的是工业生产中大型工厂,制造业,重工业等领域的用电需求。

所以我们赋值为:大工业用电:4;非普通用电:3;普通工业用电:2;商业用电:1

2.天气状况

  • 晴:4
  • 晴间多云:3
  • 局部多云:2
  • 多云:1
  • 阴/雾:0
  • 小雨:-1
  • 中雨:-2
  • 阵雨:-3
  • 大雨:-4
  • 雷阵雨:-5
  • 暴雨:-6

一般来说,天气越恶劣,对电力需求的影响越大,所以分数按照这个顺序来赋值。分数越高表示天气对电力需求的影响越好,分数越低表示天气对电力需求的影响越坏。

3.风向情况

  1. 东风8-9级:9
  2. 东南风4-5级:8
  3. 南风4~5级:7
  4. 东风3~4级:6
  5. 西南风3-4级:5
  6. 南风3-4级:5
  7. 东南风3-4级:5
  8. 东北风3-4级:4
  9. 东北偏东风2:3
  10. 西南风1-2级:3
  11. 南风1-2级:3
  12. 东南风1-2级:3
  13. 东风1-2级:3
  14. 东北风1-2级:2
  15. 北风4-5级:1
  16. 北风3~4级:1
  17. 北风3:1
  18. 北风1-2级:1
  19. 无持续风向1-2级:2
  20. 无持续风向<3级:2
  21. 无持续风向微风:2
  22. 微风<3级:2

通常来说,风向对电力需求的影响主要取决于其风力大小和气候条件。这种评分方式考虑了风力大小和气候条件对电力需求的影响,分数越高表示对电力需求的影响越好,分数越低表示影响越不利。但实际影响还可能受到其他因素的影响,比如地理位置、季节等。

4.温度数据

去掉其后的单位,转化为纯数据。

5.时间数据

考虑到格式不同,这里选择直接忽略这列数据。但是或许有进行累计等的更好的处理方式。

数据预处理

因为直接进行相关性分析效果不是很理想,我们选择对每列数据分别进行标准化。

符号说明

  • job 行业类型
  • ele_most(kw) 有功功率最大值(kw)
  • ele_least(kw) 有功功率最小值(kw)
  • weather 天气状况
  • day_wind 白天风力风向
  • night_wind 夜晚风力风向
  • low_tem 最低温度
  • high_tem 最高温度

代码实现

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns ;sns.set(color_codes=True)#用color_codes预定的颜色
import chardet#用于判断表中数据的类型
from sklearn.preprocessing import StandardScaler#为了标准化
#df = pd.read_csv("python_play.csv")
# 读取CSV文件
#df.head()
# 显示数据框的前几行
#with open('python_play.csv', 'rb') as f:
 #   content = f.read()
  #  print(content)
with open('python_play.csv', 'rb') as f:
    content = f.read()
    encoding = chardet.detect(content)['encoding']

print(encoding)

out:
ascii


# 读取CSV文件,指定编码为ascii
df = pd.read_csv('python_play.csv', encoding='ascii',usecols=lambda column: column != 'time')
df.head()

out:

job ele_most(kw) ele_least(kw) weather day_wind night_wind low_tem high_tem
0 4 117888.3300 51526.5690 0.0 2 2 7 12
1 4 126843.7914 63638.4294 -1.0 2 2 6 11
2 4 130286.1294 102048.2754 0.0 2 2 9 15
3 4 133018.6344 104466.0762 -0.5 2 2 12 17
4 4 133504.4784 99507.3528 -0.5 2 2 12 17

scaler = StandardScaler()
# 初始化标准化器
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
# 对每列数据进行标准化
df_normalized.head()

out:

job ele_most(kw) ele_least(kw) weather day_wind night_wind low_tem high_tem
0 1.336246 1.027821 0.658652 0.148206 0.375726 0.375726 -2.237758 -2.574969
1 1.336246 1.183029 0.992150 -0.253312 0.375726 0.375726 -2.404345 -2.737512
2 1.336246 1.242688 2.049759 0.148206 0.375726 0.375726 -1.904584 -2.087342
3 1.336246 1.290045 2.116332 -0.052553 0.375726 0.375726 -1.404822 -1.762257
4 1.336246 1.298465 1.979795 -0.052553 0.375726 0.375726 -1.404822 -1.762257

job,ele_most(kw),ele_least(kw)与电力系统相关;weather,day_wind,night_wind,low_tem,high_tem与天气相关。

df_normalized.corr()

out:

job ele_most(kw) ele_least(kw) weather day_wind night_wind low_tem high_tem
job 1.000000 0.126761 0.645022 0.009319 -0.017214 -0.017214 -0.005267 -0.001947
ele_most(kw) 0.126761 1.000000 0.710800 -0.099735 0.108485 0.108485 0.205206 0.182597
ele_least(kw) 0.645022 0.710800 1.000000 -0.039749 0.041487 0.041487 0.100280 0.087170
weather 0.009319 -0.099735 -0.039749 1.000000 -0.093055 -0.093055 -0.364826 -0.206647
day_wind -0.017214 0.108485 0.041487 -0.093055 1.000000 1.000000 0.131514 0.074132
night_wind -0.017214 0.108485 0.041487 -0.093055 1.000000 1.000000 0.131514 0.074132
low_tem -0.005267 0.205206 0.100280 -0.364826 0.131514 0.131514 1.000000 0.935022
high_tem -0.001947 0.182597 0.087170 -0.206647 0.074132 0.074132 0.935022 1.000000

sns.pairplot(df_normalized)

下面为警告:
D:\anaconda3\envs\FLpyth38\lib\site-packages\seaborn\axisgrid.py:123: UserWarning: The figure layout has changed to tight
self._figure.tight_layout(*args, **kwargs)

out:
<seaborn.axisgrid.PairGrid at 0x1f4418dd430>

png

sns.heatmap(df_normalized.corr())

out:

<Axes: >

png


sns.clustermap(df_normalized.corr())

out:

<seaborn.matrix.ClusterGrid at 0x1f446394d60>

png


species=df_normalized.pop("job")
g=sns.clustermap(df_normalized)

out:

png


sns.jointplot(x='ele_most(kw)',y='low_tem',data=df_normalized)

out:

<seaborn.axisgrid.JointGrid at 0x1f4480fa9d0>

png


sns.jointplot(x='ele_most(kw)',y='low_tem',data=df_normalized,kind='hex')

out:

<seaborn.axisgrid.JointGrid at 0x1f448ba1640>

png


sns.jointplot(x='ele_most(kw)',y='low_tem',data=df_normalized,kind='reg')

out:

<seaborn.axisgrid.JointGrid at 0x1f4439012b0>

png


直线旁的灰色是上下95%的置信区间

结论说明

以目前的数据处理方式,电力系统与天气状况类的数据相关程度最高为ele_most(kw)与low_tem,相关程度为0.205206,最低为job与high_tem,相关程度为-0.001947

posted @ 2024-05-25 21:42  岁月月宝贝  阅读(31)  评论(0编辑  收藏  举报