T85_code/两张表特征对齐.ipynb

19 KiB
Raw Permalink 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 [47]:
use_data.to_excel('train_data.xlsx', index=False)
In [54]:
unit_data[unit_data['企业名称'].str.contains('霍州')]
Out[54]:
发电类型 地区 城市 企业名称 机组编号 机组状态 机组数量 单机容量MW 总容量MW 核心设备类型 汽轮机类型 压力参数 冷却方式
4026 煤电 山西省 临汾市 国家能源集团华北电力有限公司霍州发电厂 1 在役 1 600.0 600.0 煤粉锅炉 凝气式 超临界 空冷-直接空冷
4027 煤电 山西省 临汾市 国家能源集团华北电力有限公司霍州发电厂 2 在役 1 600.0 600.0 煤粉锅炉 凝气式 超临界 空冷-直接空冷
4056 煤电 山西省 吕梁市 霍州煤电集团吕梁山煤电有限公司方山发电厂 1 在役 1 60.0 60.0 循环流化床锅炉 抽凝式 高压 空冷-直接空冷
4057 煤电 山西省 吕梁市 霍州煤电集团吕梁山煤电有限公司方山发电厂 2 在役 1 60.0 60.0 循环流化床锅炉 抽凝式 高压 空冷-直接空冷
In [ ]: