T85_code/.ipynb_checkpoints/两张表特征对齐-checkpoint.ipynb

26 KiB
Raw Blame History

In [1]:
import pandas as pd
import numpy as np
In [3]:
total_data = pd.read_csv('train_data.csv')
total_data.head(3)
Out[3]:
电厂名称 机组编号 铭牌容量 (MW) 机组类型 参数分类 冷凝器型式 入炉煤低位热值(kJ/kg) 燃煤挥发份Var(%) 燃煤灰份Aar(%) 煤种 所处地区 longitude latitude altitude 发电碳排放因子(kg/kWh) 供热碳排放因子(kg/MJ)
0 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21602.05000 26.09 16.80 烟煤 江苏省 120.09662 31.942361 1.0 0.586990 0.076843
1 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21926.81000 26.68 15.41 烟煤 江苏省 120.09662 31.942361 1.0 0.632859 0.077676
2 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21261.93062 26.46 15.18 烟煤 江苏省 120.09662 31.942361 1.0 0.609196 0.074823
In [23]:
total_data.shape
Out[23]:
(5741, 16)
In [4]:
unit_data = pd.read_excel('./data/煤电机组情况(含企业名称).xlsx')
unit_data.head(3)
Out[4]:
发电类型 地区 城市 企业名称 机组编号 机组状态 机组数量 单机容量MW 总容量MW 核心设备类型 汽轮机类型 压力参数 冷却方式
0 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 1 在役 1 320.0 320.0 煤粉锅炉 凝气式 亚临界 水冷-开式循环
1 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 2 在役 1 320.0 320.0 煤粉锅炉 凝气式 亚临界 水冷-开式循环
2 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 3 在役 1 1000.0 1000.0 煤粉锅炉 凝气式 超超临界 水冷-闭式循环
In [21]:
total_data.rename(columns={'电厂名称':'企业名称'}, inplace=True)
total_data['机组编号'] = total_data['机组编号'].astype('str')
unit_data['机组编号'] = unit_data['机组编号'].astype('str')
In [44]:
def change_type(x:str):
    if pd.isna(x):
        return x
    x = x.strip()
    if '纯凝' in x:
        return '纯凝式'
    if '供热' in x:
        return '供热式'
    if '煤粉' in x:
        return '煤粉锅炉'
    if x.startswith('循环流化床'):
        return '循环流化床锅炉'
    if '三废' in x:
        return '三废炉'
    if '直接空冷' in x:
        return '直接空冷'
    if '间接空冷' in x:
        return '间接空冷'
    return x
In [28]:
merge_data = total_data.merge(unit_data[['企业名称','机组编号','汽轮机类型', '压力参数', '冷却方式']], how='left', on=['企业名称', '机组编号'])
In [32]:
merge_data['机组类型'] = merge_data.apply(lambda x: x['机组类型'] if pd.isna(x['汽轮机类型']) else x['汽轮机类型'], axis=1)
In [34]:
merge_data['参数分类'] = merge_data.apply(lambda x: x['参数分类'] if pd.isna(x['压力参数']) else x['压力参数'], axis=1)
In [35]:
merge_data['冷凝器型式'] = merge_data.apply(lambda x: x['冷凝器型式'] if pd.isna(x['冷却方式']) else x['冷却方式'], axis=1)
In [37]:
merge_data['冷凝器型式'].value_counts()
Out[37]:
水冷-闭式循环    2143
水冷         1166
水冷-开式循环    1101
空冷-直接空冷     492
直接空冷        241
空冷-间接空冷     154
间接空冷         74
空冷           19
其他            2
Name: 冷凝器型式, dtype: int64
In [41]:
use_data = merge_data[merge_data.columns[:-3]].copy()
In [45]:
for col in ['机组类型', '参数分类', '冷凝器型式']:
    use_data[col] = use_data[col].apply(change_type)
In [46]:
use_data
Out[46]:
企业名称 机组编号 铭牌容量 (MW) 机组类型 参数分类 冷凝器型式 入炉煤低位热值(kJ/kg) 燃煤挥发份Var(%) 燃煤灰份Aar(%) 煤种 所处地区 longitude latitude altitude 发电碳排放因子(kg/kWh) 供热碳排放因子(kg/MJ)
0 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 21602.05000 26.09 16.80 烟煤 江苏省 120.096620 31.942361 1.0 0.586990 0.076843
1 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 21926.81000 26.68 15.41 烟煤 江苏省 120.096620 31.942361 1.0 0.632859 0.077676
2 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 21261.93062 26.46 15.18 烟煤 江苏省 120.096620 31.942361 1.0 0.609196 0.074823
3 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 20840.00000 26.43 14.55 烟煤 江苏省 120.096620 31.942361 1.0 0.602178 0.081628
4 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 20706.00000 26.43 14.96 烟煤 江苏省 120.096620 31.942361 1.0 0.590254 0.081103
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
5736 浙江浙能电力股份有限公司台州发电厂 8 350.0 凝气式 亚临界 水冷-开式循环 21973.00000 37.43 17.12 烟煤 浙江省 121.465840 28.704623 73.0 0.628300 0.078776
5737 浙江浙能电力股份有限公司台州发电厂 8 350.0 凝气式 亚临界 水冷-开式循环 21372.00000 39.87 18.01 烟煤 浙江省 121.465840 28.704623 73.0 0.595019 0.076622
5738 浙江浙能电力股份有限公司台州发电厂 8 350.0 凝气式 亚临界 水冷-开式循环 20856.00000 39.32 19.74 烟煤 浙江省 121.465840 28.704623 73.0 0.565718 0.074772
5739 榆能榆神热电有限公司 1 350.0 抽凝式 超临界 间接空冷 25514.00000 38.84 7.28 烟煤 陕西省 109.820265 38.304383 1151.0 0.664456 0.091482
5740 榆能榆神热电有限公司 2 350.0 抽凝式 超临界 间接空冷 25514.00000 38.84 7.28 烟煤 陕西省 109.820265 38.304383 1151.0 0.661759 0.091483

5741 rows × 16 columns

In [ ]: