This commit is contained in:
zhaojinghao 2023-05-11 14:18:08 +08:00
parent 3b4f0c8a40
commit 8237af04c7
18 changed files with 20982 additions and 0 deletions

View File

@ -0,0 +1,682 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"635"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file_path = [x for x in os.listdir('./new_data/') if x.endswith('xls') and '经济性' in x]\n",
"len(file_path)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"data = pd.read_excel(f'./new_data/{file_path[0]}', header=[3,4,5])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['序号',\n",
" '机组编号',\n",
" '时间',\n",
" '发电量(万kWh)',\n",
" '供电量(万kWh)',\n",
" '标煤量t',\n",
" '发电用标煤量t',\n",
" '供热用标煤量t',\n",
" '利用小时(h)',\n",
" '平均负荷(MW)',\n",
" '出力系数(%)',\n",
" '出力系数(%)',\n",
" '出力系数(%)',\n",
" '工业供热量',\n",
" '工业热电比(%)',\n",
" '采暖供热量',\n",
" '采暖热电比(%)',\n",
" '总热电比(%)',\n",
" '总供热量',\n",
" '供热煤耗',\n",
" '给水泵汽轮机总耗热量',\n",
" '供电煤耗gce/(kWh)',\n",
" '综合厂用电率(%)',\n",
" '发电厂用电率(%)',\n",
" '供热厂用电率(%)',\n",
" '非生产厂用电率(%)',\n",
" '最新THA工况二类修正后汽机热耗率kJ/KWh',\n",
" '点火用油(kg/万kWh)',\n",
" '助燃用油(kg/万kWh)',\n",
" '主蒸汽压力(MPa)',\n",
" '主蒸汽温度(℃)',\n",
" '再热蒸汽温度(℃)',\n",
" '高加投入率(%)',\n",
" '给水温度(℃)',\n",
" '真空严密性V(Pa/min)',\n",
" '真空度(%)',\n",
" '凝汽器端差(℃)',\n",
" '凝结水过冷度(℃)',\n",
" '发电补给水率(%)',\n",
" '发电综合耗水率',\n",
" '排烟温度(℃)',\n",
" '飞灰含碳量(%)',\n",
" '空预器漏风率(%)',\n",
" '过热器减温水量(t/h)',\n",
" '再热器减温水量(t/h)',\n",
" '入厂煤低位热值(kJ/kg)',\n",
" '入炉煤低位热值(kJ/kg)',\n",
" '燃煤挥发份Var(%)',\n",
" '燃煤灰份Aar(%)',\n",
" '燃煤低位热值Qar,net(kJ/kg)',\n",
" '燃煤硫份Sar(%)',\n",
" '锅炉专业主要辅机耗电率 送风机耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 引风机耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 一次风机耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 炉水泵耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 给煤机耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 磨煤机耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 电除尘器耗电率(%)',\n",
" '锅炉专业主要辅机耗电率 除灰系统耗电率(%)',\n",
" '汽机专业主要辅机耗电率 凝结水泵耗电率(%)',\n",
" '汽机专业主要辅机耗电率 前置泵耗电率(%)',\n",
" '汽机专业主要辅机耗电率 电动给水泵耗电率(%)',\n",
" '汽机专业主要辅机耗电率 循环水泵耗电率(%)',\n",
" '汽机专业主要辅机耗电率 空冷风机耗电率(%)',\n",
" '汽机专业主要辅机耗电率 热网循环水泵耗电率(%)',\n",
" '环保专业耗电率 脱硫系统耗电率(%)',\n",
" '环保专业耗电率 脱销系统耗电率(%)',\n",
" '输煤专业耗电率输煤系统耗电率(%)',\n",
" '化学系统耗电率 (%)',\n",
" '化学系统耗电率 (%)']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cols = [''.join([x for x in y if 'Unnamed' not in x]) for y in data.columns]\n",
"cols"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"data_list = list()\n",
"for file in file_path:\n",
" data = pd.read_excel(f'./new_data/{file}', header=[3,4,5])\n",
" data.columns = cols\n",
" plant = file.split('-')[0]\n",
" data['时间'] = data['时间'].astype(str)\n",
" use_data = data[~data['时间'].str.contains('半年')].copy()\n",
" use_data['电厂名称'] = plant\n",
" data_list.append(use_data)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>序号</th>\n",
" <th>机组编号</th>\n",
" <th>时间</th>\n",
" <th>发电量(万kWh)</th>\n",
" <th>供电量(万kWh)</th>\n",
" <th>标煤量t</th>\n",
" <th>发电用标煤量t</th>\n",
" <th>供热用标煤量t</th>\n",
" <th>利用小时(h)</th>\n",
" <th>平均负荷(MW)</th>\n",
" <th>...</th>\n",
" <th>汽机专业主要辅机耗电率 电动给水泵耗电率(%)</th>\n",
" <th>汽机专业主要辅机耗电率 循环水泵耗电率(%)</th>\n",
" <th>汽机专业主要辅机耗电率 空冷风机耗电率(%)</th>\n",
" <th>汽机专业主要辅机耗电率 热网循环水泵耗电率(%)</th>\n",
" <th>环保专业耗电率 脱硫系统耗电率(%)</th>\n",
" <th>环保专业耗电率 脱销系统耗电率(%)</th>\n",
" <th>输煤专业耗电率输煤系统耗电率(%)</th>\n",
" <th>化学系统耗电率 (%)</th>\n",
" <th>化学系统耗电率 (%)</th>\n",
" <th>电厂名称</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2008</td>\n",
" <td>90133.898438</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7210.709961</td>\n",
" <td>113.171409</td>\n",
" <td>...</td>\n",
" <td>2.22</td>\n",
" <td>0.220</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.100</td>\n",
" <td>0.0</td>\n",
" <td>0.02</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2008</td>\n",
" <td>91543.898438</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7323.509766</td>\n",
" <td>112.801718</td>\n",
" <td>...</td>\n",
" <td>2.28</td>\n",
" <td>0.220</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.000</td>\n",
" <td>0.0</td>\n",
" <td>0.02</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2007</td>\n",
" <td>88968.703125</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3550.750000</td>\n",
" <td>109.667990</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>2007</td>\n",
" <td>92342.750000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3693.709961</td>\n",
" <td>112.702716</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2021</td>\n",
" <td>154638.030000</td>\n",
" <td>146317.63</td>\n",
" <td>597224.38</td>\n",
" <td>398069.77</td>\n",
" <td>199154.61</td>\n",
" <td>4418.229429</td>\n",
" <td>204.300000</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.936</td>\n",
" <td>0.0</td>\n",
" <td>0.31</td>\n",
" <td>1.018</td>\n",
" <td>0.0</td>\n",
" <td>0.05</td>\n",
" <td>0.02</td>\n",
" <td>NaN</td>\n",
" <td>三河发电有限责任公司</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>11</td>\n",
" <td>1</td>\n",
" <td>2005</td>\n",
" <td>131498.000000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>6574.899902</td>\n",
" <td>171.999827</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>黔桂发电有限责任公司</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>12</td>\n",
" <td>2</td>\n",
" <td>2005</td>\n",
" <td>143572.000000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7178.589844</td>\n",
" <td>171.555440</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>黔桂发电有限责任公司</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" <td>2005</td>\n",
" <td>137886.000000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>6894.310059</td>\n",
" <td>174.126182</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>黔桂发电有限责任公司</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>14</td>\n",
" <td>4</td>\n",
" <td>2005</td>\n",
" <td>154531.000000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7726.549805</td>\n",
" <td>184.107277</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>黔桂发电有限责任公司</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>15</td>\n",
" <td>5</td>\n",
" <td>2005</td>\n",
" <td>155969.000000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7798.459961</td>\n",
" <td>184.192211</td>\n",
" <td>...</td>\n",
" <td>0.00</td>\n",
" <td>0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.000</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>黔桂发电有限责任公司</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>15758 rows × 71 columns</p>\n",
"</div>"
],
"text/plain": [
" 序号 机组编号 时间 发电量(万kWh) 供电量(万kWh) 标煤量t 发电用标煤量t 供热用标煤量t \\\n",
"0 1 1 2008 90133.898438 NaN NaN NaN NaN \n",
"1 2 2 2008 91543.898438 NaN NaN NaN NaN \n",
"2 3 1 2007 88968.703125 NaN NaN NaN NaN \n",
"3 4 2 2007 92342.750000 NaN NaN NaN NaN \n",
"0 1 1 2021 154638.030000 146317.63 597224.38 398069.77 199154.61 \n",
".. .. ... ... ... ... ... ... ... \n",
"10 11 1 2005 131498.000000 NaN NaN NaN NaN \n",
"11 12 2 2005 143572.000000 NaN NaN NaN NaN \n",
"12 13 3 2005 137886.000000 NaN NaN NaN NaN \n",
"13 14 4 2005 154531.000000 NaN NaN NaN NaN \n",
"14 15 5 2005 155969.000000 NaN NaN NaN NaN \n",
"\n",
" 利用小时(h) 平均负荷(MW) ... 汽机专业主要辅机耗电率 电动给水泵耗电率(%) \\\n",
"0 7210.709961 113.171409 ... 2.22 \n",
"1 7323.509766 112.801718 ... 2.28 \n",
"2 3550.750000 109.667990 ... 0.00 \n",
"3 3693.709961 112.702716 ... 0.00 \n",
"0 4418.229429 204.300000 ... 0.00 \n",
".. ... ... ... ... \n",
"10 6574.899902 171.999827 ... 0.00 \n",
"11 7178.589844 171.555440 ... 0.00 \n",
"12 6894.310059 174.126182 ... 0.00 \n",
"13 7726.549805 184.107277 ... 0.00 \n",
"14 7798.459961 184.192211 ... 0.00 \n",
"\n",
" 汽机专业主要辅机耗电率 循环水泵耗电率(%) 汽机专业主要辅机耗电率 空冷风机耗电率(%) 汽机专业主要辅机耗电率 热网循环水泵耗电率(%) \\\n",
"0 0.220 NaN NaN \n",
"1 0.220 NaN NaN \n",
"2 0.000 NaN NaN \n",
"3 0.000 NaN NaN \n",
"0 0.936 0.0 0.31 \n",
".. ... ... ... \n",
"10 0.000 NaN NaN \n",
"11 0.000 NaN NaN \n",
"12 0.000 NaN NaN \n",
"13 0.000 NaN NaN \n",
"14 0.000 NaN NaN \n",
"\n",
" 环保专业耗电率 脱硫系统耗电率(%) 环保专业耗电率 脱销系统耗电率(%) 输煤专业耗电率输煤系统耗电率(%) 化学系统耗电率 (%) \\\n",
"0 1.100 0.0 0.02 NaN \n",
"1 1.000 0.0 0.02 NaN \n",
"2 0.000 0.0 0.00 NaN \n",
"3 0.000 0.0 0.00 NaN \n",
"0 1.018 0.0 0.05 0.02 \n",
".. ... ... ... ... \n",
"10 0.000 0.0 0.00 NaN \n",
"11 0.000 0.0 0.00 NaN \n",
"12 0.000 0.0 0.00 NaN \n",
"13 0.000 0.0 0.00 NaN \n",
"14 0.000 0.0 0.00 NaN \n",
"\n",
" 化学系统耗电率 (%) 电厂名称 \n",
"0 NaN 万方发电厂(焦作爱依斯万方电力有限公司) \n",
"1 NaN 万方发电厂(焦作爱依斯万方电力有限公司) \n",
"2 NaN 万方发电厂(焦作爱依斯万方电力有限公司) \n",
"3 NaN 万方发电厂(焦作爱依斯万方电力有限公司) \n",
"0 NaN 三河发电有限责任公司 \n",
".. ... ... \n",
"10 NaN 黔桂发电有限责任公司 \n",
"11 NaN 黔桂发电有限责任公司 \n",
"12 NaN 黔桂发电有限责任公司 \n",
"13 NaN 黔桂发电有限责任公司 \n",
"14 NaN 黔桂发电有限责任公司 \n",
"\n",
"[15758 rows x 71 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.concat(data_list, axis=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 机组信息"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['中国中信集团公司-32020-电厂机组数据查询-20220707.xls',\n",
" '中国中煤能源集团有限公司-34027-电厂机组数据查询-20220707.xls',\n",
" '中国华电集团有限公司-21060-电厂机组数据查询-20220707.xls',\n",
" '中国华能集团有限公司-17021-电厂机组数据查询-20220707.xls',\n",
" '中国大唐集团有限公司-61005-电厂机组数据查询-20220707.xls']"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unit_data_files = [x for x in os.listdir('./new_data/') if '电厂机组' in x]\n",
"unit_data_files[:5]"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['序号',\n",
" '企业编码',\n",
" '电厂名称',\n",
" '简称',\n",
" '机组编号',\n",
" '铭牌容量 (MW)',\n",
" '投产时间',\n",
" '机组类型',\n",
" '参数分类',\n",
" '所处地区',\n",
" '机组产地',\n",
" '锅炉制造厂家',\n",
" '汽轮机制造厂家',\n",
" '发电机制造厂家',\n",
" '主变压器制造厂家',\n",
" '二级公司',\n",
" '所属集团',\n",
" '所属电网',\n",
" '所属电网']"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unit_samples = pd.read_excel(f'./new_data/{unit_data_files[0]}', header=[3,4])\n",
"unit_cols = [''.join([x for x in y if 'Unnamed' not in x]) for y in unit_samples.columns]\n",
"unit_cols"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"unit_list = list()\n",
"for file in unit_data_files:\n",
" data = pd.read_excel(f'./new_data/{file}', header=[3,4])\n",
" data.columns = cols\n",
" plant = file.split('-')[0]\n",
" data['时间'] = data['时间'].astype(str)\n",
" use_data = data[~data['时间'].str.contains('半年')].copy()\n",
" use_data['电厂名称'] = plant\n",
" unit_list.append(use_data)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -0,0 +1,137 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"id": "888d089c-a9c8-4d2d-af74-dff1a8ccfefd",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"from typing import List\n",
"import requests\n",
"import pandas as pd\n",
"\n",
"\n",
"class GetElevation:\n",
"\n",
" @classmethod\n",
" def __SendQuery(cls, latLngString: str) -> json:\n",
" query = ('https://api.opentopodata.org/v1/mapzen?locations={}&interpolation=bilinear'.format(latLngString))\n",
" res = requests.get(query).json()\n",
" if res[\"status\"] != \"OK\":\n",
" raise Exception(res[\"error\"])\n",
" return res\n",
"\n",
" def GetSingleElevation(self, latitude: float, longitude: float) -> float:\n",
" \"\"\"\n",
" 获取单个高程输入经纬度格式为数值类型返回值为高程float类型\n",
" :param latitude: 纬度\n",
" :param longitude: 经度\n",
" :return: 高程\n",
" \"\"\"\n",
" if latitude < -90 or latitude > 90:\n",
" raise Exception(\"纬度的范围应在-90-90之间请检查数据源\")\n",
" latLngString = str(latitude) + \",\" + str(longitude)\n",
" res = self.__SendQuery(latLngString)\n",
" elevation = res[\"results\"][0][\"elevation\"]\n",
" return elevation\n",
"\n",
" def GetMultiElevation(self, latitude: List[float], longitude: List[float]) -> List[float]:\n",
" \"\"\"\n",
" 获取数组类型的高程,输入经纬度格式为经度数组和纬度数组,返回值为高程数组\n",
" :param latitude:纬度数组\n",
" :param longitude:经度数组\n",
" :return:高程数组\n",
" \"\"\"\n",
" if len(latitude) != len(longitude):\n",
" raise Exception(\"纬度数组和经度数组长度不一致!请检查数据源!\")\n",
" for lat in latitude:\n",
" if lat < -90 or lat > 90:\n",
" raise Exception(\"纬度的范围应在-90-90之间请检查数据源\")\n",
" elevationList = []\n",
" hundredNums = len(latitude) // 100\n",
" # 查询整百的高程\n",
" for i in range(hundredNums):\n",
" latLngString = \"\"\n",
" for idx in range(100 * i, 100 * (i + 1)):\n",
" latLngString += (str(latitude[idx]) + \",\" + str(longitude[idx]) + \"|\")\n",
" res = self.__SendQuery(latLngString)\n",
" for idx in range(100):\n",
" elevationList.append(res[\"results\"][idx][\"elevation\"])\n",
" time.sleep(1)\n",
" # 查询剩余的不到100的高程\n",
" latLngString = \"\"\n",
" for i in range(hundredNums * 100, len(latitude)):\n",
" latLngString += (str(latitude[i]) + \",\" + str(longitude[i]) + \"|\")\n",
" res = self.__SendQuery(latLngString)\n",
" for i in range(len(latitude) - hundredNums * 100):\n",
" elevationList.append(res[\"results\"][i][\"elevation\"])\n",
" return elevationList\n",
"\n",
" def ExportToXlsx(self, latLongDf: pd.DataFrame, elevationList: List[float], outputPath: str) -> None:\n",
" \"\"\"\n",
" 如果用户可以传入一个DataFrame数据可以将返回得到的高程拼接并输出\n",
" :param latLongDf: DataFrame数据\n",
" :param elevationList: 高程数组\n",
" :param outputPath: 输出路径\n",
" :return: 无返回值\n",
" \"\"\"\n",
" latLongDf[\"elevation\"] = elevationList\n",
" latLongDf.to_excel(outputPath, index=False)\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "2a226b08-0c92-483e-b590-29a39dce6298",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"data = pd.read_excel('./lat_lon.xlsx')\n",
"data.columns = ['plant', 'longitude', 'latitude']"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "91afb581-1994-47c4-85ca-d3ea3e13e95d",
"metadata": {},
"outputs": [],
"source": [
"multiEle = ele.GetMultiElevation(data[\"latitude\"], data[\"longitude\"])\n",
"print(multiEle)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,759 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "8950aafd-80e8-4078-874c-966efdc4b0ac",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "50832980-f7e1-4a19-a5e0-b8a378ebd39b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>电厂名称</th>\n",
" <th>机组编号</th>\n",
" <th>铭牌容量 (MW)</th>\n",
" <th>机组类型</th>\n",
" <th>参数分类</th>\n",
" <th>冷凝器型式</th>\n",
" <th>入炉煤低位热值(kJ/kg)</th>\n",
" <th>燃煤挥发份Var(%)</th>\n",
" <th>燃煤灰份Aar(%)</th>\n",
" <th>煤种</th>\n",
" <th>所处地区</th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>altitude</th>\n",
" <th>发电碳排放因子(kg/kWh)</th>\n",
" <th>供热碳排放因子(kg/MJ)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>纯凝式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷</td>\n",
" <td>21602.05000</td>\n",
" <td>26.09</td>\n",
" <td>16.80</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.09662</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.586990</td>\n",
" <td>0.076843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>纯凝式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷</td>\n",
" <td>21926.81000</td>\n",
" <td>26.68</td>\n",
" <td>15.41</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.09662</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.632859</td>\n",
" <td>0.077676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>纯凝式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷</td>\n",
" <td>21261.93062</td>\n",
" <td>26.46</td>\n",
" <td>15.18</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.09662</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.609196</td>\n",
" <td>0.074823</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 电厂名称 机组编号 铭牌容量 (MW) 机组类型 参数分类 冷凝器型式 入炉煤低位热值(kJ/kg) 燃煤挥发份Var(%) \\\n",
"0 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21602.05000 26.09 \n",
"1 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21926.81000 26.68 \n",
"2 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21261.93062 26.46 \n",
"\n",
" 燃煤灰份Aar(%) 煤种 所处地区 longitude latitude altitude 发电碳排放因子(kg/kWh) \\\n",
"0 16.80 烟煤 江苏省 120.09662 31.942361 1.0 0.586990 \n",
"1 15.41 烟煤 江苏省 120.09662 31.942361 1.0 0.632859 \n",
"2 15.18 烟煤 江苏省 120.09662 31.942361 1.0 0.609196 \n",
"\n",
" 供热碳排放因子(kg/MJ) \n",
"0 0.076843 \n",
"1 0.077676 \n",
"2 0.074823 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_data = pd.read_csv('train_data.csv')\n",
"total_data.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "499cac72-c6a3-4b86-8aed-6fc010b12693",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5741, 16)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_data.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7ab5d82e-19bd-4aa4-9cd6-d2004718b00d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>发电类型</th>\n",
" <th>地区</th>\n",
" <th>城市</th>\n",
" <th>企业名称</th>\n",
" <th>机组编号</th>\n",
" <th>机组状态</th>\n",
" <th>机组数量</th>\n",
" <th>单机容量MW</th>\n",
" <th>总容量MW</th>\n",
" <th>核心设备类型</th>\n",
" <th>汽轮机类型</th>\n",
" <th>压力参数</th>\n",
" <th>冷却方式</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>煤电</td>\n",
" <td>安徽省</td>\n",
" <td>安庆市</td>\n",
" <td>国能神皖安庆发电有限责任公司</td>\n",
" <td>1</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>320.0</td>\n",
" <td>320.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>煤电</td>\n",
" <td>安徽省</td>\n",
" <td>安庆市</td>\n",
" <td>国能神皖安庆发电有限责任公司</td>\n",
" <td>2</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>320.0</td>\n",
" <td>320.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>煤电</td>\n",
" <td>安徽省</td>\n",
" <td>安庆市</td>\n",
" <td>国能神皖安庆发电有限责任公司</td>\n",
" <td>3</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>1000.0</td>\n",
" <td>1000.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>超超临界</td>\n",
" <td>水冷-闭式循环</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 发电类型 地区 城市 企业名称 机组编号 机组状态 机组数量 单机容量MW 总容量MW 核心设备类型 \\\n",
"0 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 1 在役 1 320.0 320.0 煤粉锅炉 \n",
"1 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 2 在役 1 320.0 320.0 煤粉锅炉 \n",
"2 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 3 在役 1 1000.0 1000.0 煤粉锅炉 \n",
"\n",
" 汽轮机类型 压力参数 冷却方式 \n",
"0 凝气式 亚临界 水冷-开式循环 \n",
"1 凝气式 亚临界 水冷-开式循环 \n",
"2 凝气式 超超临界 水冷-闭式循环 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unit_data = pd.read_excel('./data/煤电机组情况(含企业名称).xlsx')\n",
"unit_data.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c4d54203-5343-43df-b594-f6a13e6f47a1",
"metadata": {},
"outputs": [],
"source": [
"total_data.rename(columns={'电厂名称':'企业名称'}, inplace=True)\n",
"total_data['机组编号'] = total_data['机组编号'].astype('str')\n",
"unit_data['机组编号'] = unit_data['机组编号'].astype('str')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "757e26c3-cd1b-48a3-9668-78e13f40436f",
"metadata": {},
"outputs": [],
"source": [
"def change_type(x:str):\n",
" if pd.isna(x):\n",
" return x\n",
" x = x.strip()\n",
" if '纯凝' in x:\n",
" return '纯凝式'\n",
" if '供热' in x:\n",
" return '供热式'\n",
" if '煤粉' in x:\n",
" return '煤粉锅炉'\n",
" if x.startswith('循环流化床'):\n",
" return '循环流化床锅炉'\n",
" if '三废' in x:\n",
" return '三废炉'\n",
" if '直接空冷' in x:\n",
" return '直接空冷'\n",
" if '间接空冷' in x:\n",
" return '间接空冷'\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "fcc7c556-ae7b-4be1-9163-709ce1ca084c",
"metadata": {},
"outputs": [],
"source": [
"merge_data = total_data.merge(unit_data[['企业名称','机组编号','汽轮机类型', '压力参数', '冷却方式']], how='left', on=['企业名称', '机组编号'])"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "3af6ad2f-a881-4ee6-9a27-ecbe75c97b31",
"metadata": {},
"outputs": [],
"source": [
"merge_data['机组类型'] = merge_data.apply(lambda x: x['机组类型'] if pd.isna(x['汽轮机类型']) else x['汽轮机类型'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "dec103bc-c868-4557-ba83-9bbb02f8e9f8",
"metadata": {},
"outputs": [],
"source": [
"merge_data['参数分类'] = merge_data.apply(lambda x: x['参数分类'] if pd.isna(x['压力参数']) else x['压力参数'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "454273f0-51ab-4a75-9c44-9ae8b7cc2a79",
"metadata": {},
"outputs": [],
"source": [
"merge_data['冷凝器型式'] = merge_data.apply(lambda x: x['冷凝器型式'] if pd.isna(x['冷却方式']) else x['冷却方式'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "d3c9cb26-63b4-4c72-9c5b-d90a2c5867ca",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"水冷-闭式循环 2143\n",
"水冷 1166\n",
"水冷-开式循环 1101\n",
"空冷-直接空冷 492\n",
"直接空冷 241\n",
"空冷-间接空冷 154\n",
"间接空冷 74\n",
"空冷 19\n",
"其他 2\n",
"Name: 冷凝器型式, dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"merge_data['冷凝器型式'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "30b2d793-7b44-434a-96e3-c6ce15295881",
"metadata": {},
"outputs": [],
"source": [
"use_data = merge_data[merge_data.columns[:-3]].copy()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "fbdf13c0-6174-463b-9dd0-9ed736e6d126",
"metadata": {},
"outputs": [],
"source": [
"for col in ['机组类型', '参数分类', '冷凝器型式']:\n",
" use_data[col] = use_data[col].apply(change_type)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "9697f501-1fef-4f24-b9d9-bece28e2c867",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>企业名称</th>\n",
" <th>机组编号</th>\n",
" <th>铭牌容量 (MW)</th>\n",
" <th>机组类型</th>\n",
" <th>参数分类</th>\n",
" <th>冷凝器型式</th>\n",
" <th>入炉煤低位热值(kJ/kg)</th>\n",
" <th>燃煤挥发份Var(%)</th>\n",
" <th>燃煤灰份Aar(%)</th>\n",
" <th>煤种</th>\n",
" <th>所处地区</th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>altitude</th>\n",
" <th>发电碳排放因子(kg/kWh)</th>\n",
" <th>供热碳排放因子(kg/MJ)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>21602.05000</td>\n",
" <td>26.09</td>\n",
" <td>16.80</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.096620</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.586990</td>\n",
" <td>0.076843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>21926.81000</td>\n",
" <td>26.68</td>\n",
" <td>15.41</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.096620</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.632859</td>\n",
" <td>0.077676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>21261.93062</td>\n",
" <td>26.46</td>\n",
" <td>15.18</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.096620</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.609196</td>\n",
" <td>0.074823</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>20840.00000</td>\n",
" <td>26.43</td>\n",
" <td>14.55</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.096620</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.602178</td>\n",
" <td>0.081628</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>20706.00000</td>\n",
" <td>26.43</td>\n",
" <td>14.96</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.096620</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.590254</td>\n",
" <td>0.081103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5736</th>\n",
" <td>浙江浙能电力股份有限公司台州发电厂</td>\n",
" <td>8</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>21973.00000</td>\n",
" <td>37.43</td>\n",
" <td>17.12</td>\n",
" <td>烟煤</td>\n",
" <td>浙江省</td>\n",
" <td>121.465840</td>\n",
" <td>28.704623</td>\n",
" <td>73.0</td>\n",
" <td>0.628300</td>\n",
" <td>0.078776</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5737</th>\n",
" <td>浙江浙能电力股份有限公司台州发电厂</td>\n",
" <td>8</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>21372.00000</td>\n",
" <td>39.87</td>\n",
" <td>18.01</td>\n",
" <td>烟煤</td>\n",
" <td>浙江省</td>\n",
" <td>121.465840</td>\n",
" <td>28.704623</td>\n",
" <td>73.0</td>\n",
" <td>0.595019</td>\n",
" <td>0.076622</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5738</th>\n",
" <td>浙江浙能电力股份有限公司台州发电厂</td>\n",
" <td>8</td>\n",
" <td>350.0</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" <td>20856.00000</td>\n",
" <td>39.32</td>\n",
" <td>19.74</td>\n",
" <td>烟煤</td>\n",
" <td>浙江省</td>\n",
" <td>121.465840</td>\n",
" <td>28.704623</td>\n",
" <td>73.0</td>\n",
" <td>0.565718</td>\n",
" <td>0.074772</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5739</th>\n",
" <td>榆能榆神热电有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>抽凝式</td>\n",
" <td>超临界</td>\n",
" <td>间接空冷</td>\n",
" <td>25514.00000</td>\n",
" <td>38.84</td>\n",
" <td>7.28</td>\n",
" <td>烟煤</td>\n",
" <td>陕西省</td>\n",
" <td>109.820265</td>\n",
" <td>38.304383</td>\n",
" <td>1151.0</td>\n",
" <td>0.664456</td>\n",
" <td>0.091482</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5740</th>\n",
" <td>榆能榆神热电有限公司</td>\n",
" <td>2</td>\n",
" <td>350.0</td>\n",
" <td>抽凝式</td>\n",
" <td>超临界</td>\n",
" <td>间接空冷</td>\n",
" <td>25514.00000</td>\n",
" <td>38.84</td>\n",
" <td>7.28</td>\n",
" <td>烟煤</td>\n",
" <td>陕西省</td>\n",
" <td>109.820265</td>\n",
" <td>38.304383</td>\n",
" <td>1151.0</td>\n",
" <td>0.661759</td>\n",
" <td>0.091483</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5741 rows × 16 columns</p>\n",
"</div>"
],
"text/plain": [
" 企业名称 机组编号 铭牌容量 (MW) 机组类型 参数分类 冷凝器型式 入炉煤低位热值(kJ/kg) \\\n",
"0 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 21602.05000 \n",
"1 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 21926.81000 \n",
"2 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 21261.93062 \n",
"3 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 20840.00000 \n",
"4 江苏利港电力有限公司 1 350.0 凝气式 亚临界 水冷-开式循环 20706.00000 \n",
"... ... ... ... ... ... ... ... \n",
"5736 浙江浙能电力股份有限公司台州发电厂 8 350.0 凝气式 亚临界 水冷-开式循环 21973.00000 \n",
"5737 浙江浙能电力股份有限公司台州发电厂 8 350.0 凝气式 亚临界 水冷-开式循环 21372.00000 \n",
"5738 浙江浙能电力股份有限公司台州发电厂 8 350.0 凝气式 亚临界 水冷-开式循环 20856.00000 \n",
"5739 榆能榆神热电有限公司 1 350.0 抽凝式 超临界 间接空冷 25514.00000 \n",
"5740 榆能榆神热电有限公司 2 350.0 抽凝式 超临界 间接空冷 25514.00000 \n",
"\n",
" 燃煤挥发份Var(%) 燃煤灰份Aar(%) 煤种 所处地区 longitude latitude altitude \\\n",
"0 26.09 16.80 烟煤 江苏省 120.096620 31.942361 1.0 \n",
"1 26.68 15.41 烟煤 江苏省 120.096620 31.942361 1.0 \n",
"2 26.46 15.18 烟煤 江苏省 120.096620 31.942361 1.0 \n",
"3 26.43 14.55 烟煤 江苏省 120.096620 31.942361 1.0 \n",
"4 26.43 14.96 烟煤 江苏省 120.096620 31.942361 1.0 \n",
"... ... ... .. ... ... ... ... \n",
"5736 37.43 17.12 烟煤 浙江省 121.465840 28.704623 73.0 \n",
"5737 39.87 18.01 烟煤 浙江省 121.465840 28.704623 73.0 \n",
"5738 39.32 19.74 烟煤 浙江省 121.465840 28.704623 73.0 \n",
"5739 38.84 7.28 烟煤 陕西省 109.820265 38.304383 1151.0 \n",
"5740 38.84 7.28 烟煤 陕西省 109.820265 38.304383 1151.0 \n",
"\n",
" 发电碳排放因子(kg/kWh) 供热碳排放因子(kg/MJ) \n",
"0 0.586990 0.076843 \n",
"1 0.632859 0.077676 \n",
"2 0.609196 0.074823 \n",
"3 0.602178 0.081628 \n",
"4 0.590254 0.081103 \n",
"... ... ... \n",
"5736 0.628300 0.078776 \n",
"5737 0.595019 0.076622 \n",
"5738 0.565718 0.074772 \n",
"5739 0.664456 0.091482 \n",
"5740 0.661759 0.091483 \n",
"\n",
"[5741 rows x 16 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"use_data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ff803c5a-5e56-462b-81fc-639877395d69",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

892
data_extract.ipynb Normal file

File diff suppressed because one or more lines are too long

144
evaluation.ipynb Normal file
View File

@ -0,0 +1,144 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"outputs": [],
"source": [
"import pandas as pd"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [],
"source": [
"power_eva = pd.read_csv('./发电测试结果.csv')"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 4,
"outputs": [],
"source": [
"power_eva.columns = ['real', 'pred']\n",
"power_eva['error'] = (power_eva.pred - power_eva.real).apply(abs) / power_eva.real"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 15,
"outputs": [
{
"data": {
"text/plain": " real pred error\n222 0.517443 0.518051 0.001175\n54 0.701795 0.671254 0.043519\n201 0.539900 0.541033 0.002099\n30 0.532658 0.530621 0.003823\n124 0.410033 0.420981 0.026701\n37 0.390315 0.391309 0.002548\n7 0.571029 0.579793 0.015347\n232 0.580826 0.579876 0.001635\n165 0.352021 0.374194 0.062987\n139 0.584566 0.567410 0.029348",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>real</th>\n <th>pred</th>\n <th>error</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>222</th>\n <td>0.517443</td>\n <td>0.518051</td>\n <td>0.001175</td>\n </tr>\n <tr>\n <th>54</th>\n <td>0.701795</td>\n <td>0.671254</td>\n <td>0.043519</td>\n </tr>\n <tr>\n <th>201</th>\n <td>0.539900</td>\n <td>0.541033</td>\n <td>0.002099</td>\n </tr>\n <tr>\n <th>30</th>\n <td>0.532658</td>\n <td>0.530621</td>\n <td>0.003823</td>\n </tr>\n <tr>\n <th>124</th>\n <td>0.410033</td>\n <td>0.420981</td>\n <td>0.026701</td>\n </tr>\n <tr>\n <th>37</th>\n <td>0.390315</td>\n <td>0.391309</td>\n <td>0.002548</td>\n </tr>\n <tr>\n <th>7</th>\n <td>0.571029</td>\n <td>0.579793</td>\n <td>0.015347</td>\n </tr>\n <tr>\n <th>232</th>\n <td>0.580826</td>\n <td>0.579876</td>\n <td>0.001635</td>\n </tr>\n <tr>\n <th>165</th>\n <td>0.352021</td>\n <td>0.374194</td>\n <td>0.062987</td>\n </tr>\n <tr>\n <th>139</th>\n <td>0.584566</td>\n <td>0.567410</td>\n <td>0.029348</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"power_eva.sample(10)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 7,
"outputs": [],
"source": [
"heat_eva = pd.read_csv('./供热测试结果.csv')\n",
"heat_eva.columns = ['real', 'pred']\n",
"heat_eva['error'] = (heat_eva.pred - heat_eva.real).apply(abs) / heat_eva.real"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 9,
"outputs": [
{
"data": {
"text/plain": " real pred error\n131 0.071626 0.071494 0.001839\n256 0.076446 0.069821 0.086672\n141 0.067995 0.068865 0.012802\n71 0.071438 0.071276 0.002270\n284 0.072052 0.071835 0.003018\n294 0.075010 0.074507 0.006716\n77 0.052603 0.055783 0.060461\n96 0.062181 0.063483 0.020932\n176 0.077847 0.077317 0.006807\n164 0.082962 0.082844 0.001420",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>real</th>\n <th>pred</th>\n <th>error</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>131</th>\n <td>0.071626</td>\n <td>0.071494</td>\n <td>0.001839</td>\n </tr>\n <tr>\n <th>256</th>\n <td>0.076446</td>\n <td>0.069821</td>\n <td>0.086672</td>\n </tr>\n <tr>\n <th>141</th>\n <td>0.067995</td>\n <td>0.068865</td>\n <td>0.012802</td>\n </tr>\n <tr>\n <th>71</th>\n <td>0.071438</td>\n <td>0.071276</td>\n <td>0.002270</td>\n </tr>\n <tr>\n <th>284</th>\n <td>0.072052</td>\n <td>0.071835</td>\n <td>0.003018</td>\n </tr>\n <tr>\n <th>294</th>\n <td>0.075010</td>\n <td>0.074507</td>\n <td>0.006716</td>\n </tr>\n <tr>\n <th>77</th>\n <td>0.052603</td>\n <td>0.055783</td>\n <td>0.060461</td>\n </tr>\n <tr>\n <th>96</th>\n <td>0.062181</td>\n <td>0.063483</td>\n <td>0.020932</td>\n </tr>\n <tr>\n <th>176</th>\n <td>0.077847</td>\n <td>0.077317</td>\n <td>0.006807</td>\n </tr>\n <tr>\n <th>164</th>\n <td>0.082962</td>\n <td>0.082844</td>\n <td>0.001420</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"heat_eva.sample(10)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

149
extract_plant.ipynb Normal file
View File

@ -0,0 +1,149 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"outputs": [],
"source": [
"import pandas as pd"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [],
"source": [
"import os"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [],
"source": [
"files = [x for x in os.listdir('./火电20230313/火电20230313F/') if '经济性' in x]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 5,
"outputs": [],
"source": [
"plants = [x.split('-')[0].strip() for x in files]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 6,
"outputs": [
{
"data": {
"text/plain": " plant 经度 纬度\n0 万方发电厂(焦作爱依斯万方电力有限公司) 113.381649 35.255622\n1 三河发电有限责任公司 116.860260 39.953617\n2 上海上电漕泾发电有限公司 121.407593 30.765242\n3 上海吴泾发电有限责任公司 121.471140 31.065113\n4 上海吴泾第二发电有限责任公司 121.471340 31.062532",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>plant</th>\n <th>经度</th>\n <th>纬度</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n <td>113.381649</td>\n <td>35.255622</td>\n </tr>\n <tr>\n <th>1</th>\n <td>三河发电有限责任公司</td>\n <td>116.860260</td>\n <td>39.953617</td>\n </tr>\n <tr>\n <th>2</th>\n <td>上海上电漕泾发电有限公司</td>\n <td>121.407593</td>\n <td>30.765242</td>\n </tr>\n <tr>\n <th>3</th>\n <td>上海吴泾发电有限责任公司</td>\n <td>121.471140</td>\n <td>31.065113</td>\n </tr>\n <tr>\n <th>4</th>\n <td>上海吴泾第二发电有限责任公司</td>\n <td>121.471340</td>\n <td>31.062532</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"old_plants = pd.read_excel('./lat_lon.xlsx')\n",
"old_plants.head()"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 8,
"outputs": [],
"source": [
"new_plants = [x for x in plants if x not in old_plants.plant.values]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 9,
"outputs": [],
"source": [
"with open('./plant.txt', 'w', encoding='utf-8') as fw:\n",
" for plant in new_plants:\n",
" fw.write(plant)\n",
" fw.write('\\n')"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

291
get_altitude.ipynb Normal file
View File

@ -0,0 +1,291 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "888d089c-a9c8-4d2d-af74-dff1a8ccfefd",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"import json\n",
"import time\n",
"from typing import List\n",
"import requests\n",
"import pandas as pd\n",
"\n",
"\n",
"class GetElevation:\n",
"\n",
" @classmethod\n",
" def __SendQuery(cls, latLngString: str) -> json:\n",
" query = ('https://api.opentopodata.org/v1/mapzen?locations={}&interpolation=bilinear'.format(latLngString))\n",
" res = requests.get(query).json()\n",
" if res[\"status\"] != \"OK\":\n",
" raise Exception(res[\"error\"])\n",
" return res\n",
"\n",
" def GetSingleElevation(self, latitude: float, longitude: float) -> float:\n",
" \"\"\"\n",
" 获取单个高程输入经纬度格式为数值类型返回值为高程float类型\n",
" :param latitude: 纬度\n",
" :param longitude: 经度\n",
" :return: 高程\n",
" \"\"\"\n",
" if latitude < -90 or latitude > 90:\n",
" raise Exception(\"纬度的范围应在-90-90之间请检查数据源\")\n",
" latLngString = str(latitude) + \",\" + str(longitude)\n",
" res = self.__SendQuery(latLngString)\n",
" elevation = res[\"results\"][0][\"elevation\"]\n",
" return elevation\n",
"\n",
" def GetMultiElevation(self, latitude: List[float], longitude: List[float]) -> List[float]:\n",
" \"\"\"\n",
" 获取数组类型的高程,输入经纬度格式为经度数组和纬度数组,返回值为高程数组\n",
" :param latitude:纬度数组\n",
" :param longitude:经度数组\n",
" :return:高程数组\n",
" \"\"\"\n",
" if len(latitude) != len(longitude):\n",
" raise Exception(\"纬度数组和经度数组长度不一致!请检查数据源!\")\n",
" for lat in latitude:\n",
" if lat < -90 or lat > 90:\n",
" raise Exception(\"纬度的范围应在-90-90之间请检查数据源\")\n",
" elevationList = []\n",
" hundredNums = len(latitude) // 100\n",
" # 查询整百的高程\n",
" for i in range(hundredNums):\n",
" latLngString = \"\"\n",
" for idx in range(100 * i, 100 * (i + 1)):\n",
" latLngString += (str(latitude[idx]) + \",\" + str(longitude[idx]) + \"|\")\n",
" res = self.__SendQuery(latLngString)\n",
" for idx in range(100):\n",
" elevationList.append(res[\"results\"][idx][\"elevation\"])\n",
" time.sleep(1)\n",
" # 查询剩余的不到100的高程\n",
" latLngString = \"\"\n",
" for i in range(hundredNums * 100, len(latitude)):\n",
" latLngString += (str(latitude[i]) + \",\" + str(longitude[i]) + \"|\")\n",
" res = self.__SendQuery(latLngString)\n",
" for i in range(len(latitude) - hundredNums * 100):\n",
" elevationList.append(res[\"results\"][i][\"elevation\"])\n",
" return elevationList\n",
"\n",
" def ExportToXlsx(self, latLongDf: pd.DataFrame, elevationList: List[float], outputPath: str) -> None:\n",
" \"\"\"\n",
" 如果用户可以传入一个DataFrame数据可以将返回得到的高程拼接并输出\n",
" :param latLongDf: DataFrame数据\n",
" :param elevationList: 高程数组\n",
" :param outputPath: 输出路径\n",
" :return: 无返回值\n",
" \"\"\"\n",
" latLongDf[\"elevation\"] = elevationList\n",
" latLongDf.to_excel(outputPath, index=False)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2a226b08-0c92-483e-b590-29a39dce6298",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": " plant longitude latitude\n0 万方发电厂(焦作爱依斯万方电力有限公司) 113.381649 35.255622\n1 三河发电有限责任公司 116.860260 39.953617\n2 上海上电漕泾发电有限公司 121.407593 30.765242\n3 上海吴泾发电有限责任公司 121.471140 31.065113\n4 上海吴泾第二发电有限责任公司 121.471340 31.062532",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>plant</th>\n <th>longitude</th>\n <th>latitude</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n <td>113.381649</td>\n <td>35.255622</td>\n </tr>\n <tr>\n <th>1</th>\n <td>三河发电有限责任公司</td>\n <td>116.860260</td>\n <td>39.953617</td>\n </tr>\n <tr>\n <th>2</th>\n <td>上海上电漕泾发电有限公司</td>\n <td>121.407593</td>\n <td>30.765242</td>\n </tr>\n <tr>\n <th>3</th>\n <td>上海吴泾发电有限责任公司</td>\n <td>121.471140</td>\n <td>31.065113</td>\n </tr>\n <tr>\n <th>4</th>\n <td>上海吴泾第二发电有限责任公司</td>\n <td>121.471340</td>\n <td>31.062532</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_excel('./lat_lon.xlsx')\n",
"data.columns = ['plant', 'longitude', 'latitude']\n",
"data = data.groupby('plant').mean().reset_index()\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [],
"source": [
"ele = GetElevation()"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c1671bcd-bd33-40dd-82b5-a487801045c0",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on method GetMultiElevation in module __main__:\n",
"\n",
"GetMultiElevation(latitude: List[float], longitude: List[float]) -> List[float] method of __main__.GetElevation instance\n",
" 获取数组类型的高程,输入经纬度格式为经度数组和纬度数组,返回值为高程数组\n",
" :param latitude:纬度数组\n",
" :param longitude:经度数组\n",
" :return:高程数组\n",
"\n"
]
}
],
"source": [
"help(ele.GetMultiElevation)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "91afb581-1994-47c4-85ca-d3ea3e13e95d",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[88.0, 27.0, 4.0, 3.0, 4.0, 2.0, 8.0, -2.0, 5.0, 7.0, 3.0, 58.0, 55.0, 775.0, 594.0, -3.0, 1273.0, 145.0, 145.0, 548.0, 21.0, 28.0, 48.0, 1117.0, 14.0, 1172.0, 387.0, 124.0, 1391.0, 1708.0, 1278.0, 440.0, 135.0, 494.0, 1143.0, 1869.0, 1656.0, 1873.0, 124.0, 361.0, 30.0, 971.0, -3.0, 80.0, 475.0, 1622.0, 292.0, 1317.0, 1385.0, 247.0, 1312.0, 1106.0, 1225.0, 1006.0, 1237.0, 1151.0, 555.0, 1024.0, 694.0, 1226.0, 1050.0, 1162.0, 285.0, 1007.0, 1207.0, 1023.0, 178.0, 861.0, 1171.0, 1069.0, 1015.0, 90.0, 1.0, 83.0, 1037.0, 1037.0, 1114.0, 1069.0, 1107.0, 1076.0, 1054.0, 1165.0, 1255.0, 14.0, 52.0, 171.0, 351.0, 49.0, -5.0, 7.0, -2.0, 152.0, 2.0, -2.0, 5.0, 51.0, 51.0, 606.0, 270.0, 1031.0, 1017.0, 595.0, 65.0, 279.0, 1089.0, 218.0, 57.0, 777.0, 9.0, 84.0, 520.0, 622.0, 574.0, 724.0, 582.0, 1010.0, 505.0, 1010.0, 1.0, 1.0, 59.0, 72.0, 10.0, 65.0, 64.0, 75.0, 57.0, 80.0, 118.0, 151.0, 250.0, 0.0, 1459.0, 1036.0, 1884.0, 286.0, 27.0, 2.0, 13.0, 6.0, 65.0, 3.0, 1331.0, 675.0, 240.0, 2007.0, 1590.0, 1532.0, 1545.0, 36.0, 6.0, 7.0, 199.0, 38.0, 76.0, 0.0, 73.0, 4.0, 1.0, 22.0, -2.0, 40.0, 2.0, 148.0, -1.0, 7.0, 22.0, 1149.0, 154.0, 27.0, 24.0, 44.0, 1130.0, 1277.0, 34.0, 154.0, 718.0, 1504.0, 1034.0, 19.0, 5.0, 172.0, 160.0, 27.0, 26.0, 26.0, 206.0, 19.0, 507.0, 75.0, 177.0, 102.0, 6.0, 30.0, 93.0, 218.0, -34.0, 67.0, 131.0, 1544.0, 708.0, 199.0, 119.0, 99.0, 14.0, 6.0, 11.0, 5.0, 9.0, 8.0, 130.0, 133.0, 180.0, 26.0, 1048.0, 73.0, 326.0, 192.0, 175.0, 185.0, 151.0, 151.0, 18.0, 308.0, 404.0, 360.0, 296.0, 208.0, 45.0, 46.0, 136.0, 573.0, 144.0, 147.0, -4.0, 86.0, 68.0, 167.0, 1479.0, 123.0, 35.0, 55.0, 1.0, 112.0, 8.0, 16.0, 20.0, 6.0, 19.0, 47.0, 528.0, 17.0, 627.0, -3.0, -1.0, 1459.0, 81.0, 91.0, 1122.0, 7.0, 1087.0, 1174.0, 81.0, 1349.0, 788.0, 451.0, 361.0, 65.0, 147.0, 25.0, 545.0, 1466.0, 264.0, 223.0, 56.0, 1327.0, 45.0, 45.0, 1052.0, 5.0, 1052.0, 180.0, 35.0, 1087.0, 1.0, 32.0, 1405.0, 699.0, 699.0, 1266.0, 35.0, 18.0, 116.0, 221.0, 186.0, 184.0, 7.0, 132.0, 1165.0, 1118.0, 1252.0, 29.0, 0.0, 7.0, 1184.0, 93.0, 91.0, 32.0, 849.0, 58.0, 7.0, 1.0, -6.0, -5.0, 39.0, 16.0, 12.0, 13.0, 9.0, 0.0, 132.0, 52.0, 7.0, 25.0, 32.0, 83.0, 1787.0, 0.0, 69.0, 24.0, 1.0, 3.0, -2.0, 1096.0, 207.0, 375.0, -8.0, 33.0, 94.0, 45.0, 83.0, 253.0, 24.0, 119.0, 118.0, 563.0, 468.0, 233.0, 26.0, 687.0, 1067.0, 46.0, 35.0, 30.0, 83.0, 562.0, 718.0, 426.0, 212.0, 853.0, 452.0, 294.0, 148.0, 123.0, 117.0, 25.0, 30.0, 17.0, 85.0, 7.0, 49.0, 89.0, 972.0, 56.0, 352.0, 185.0, 1113.0, 261.0, 1877.0, 222.0, 692.0, 1112.0, 395.0, 412.0, 395.0, 394.0, 8.0, 183.0, 6.0, 34.0, 19.0, 454.0, 1.0, 6.0, 8.0, 38.0, 4.0, 3.0, 6.0, 4.0, 4.0, 786.0, 1247.0, 1157.0, 1318.0, 1339.0, 1151.0, 1329.0, 46.0, 30.0, 9.0, 30.0, 9.0, 16.0, 1987.0, 151.0, 35.0, 8.0, 1353.0, 480.0, 539.0, 1010.0, 819.0, 1061.0, 371.0, 803.0, 717.0, 916.0, 918.0, 696.0, 998.0, 878.0, 28.0, 95.0, 88.0, 16.0, 93.0, 0.0, 177.0, 1.0, 9.0, 192.0, 5.0, -2.0, 5.0, -1.0, -1.0, 10.0, 2.0, 5.0, 79.0, 98.0, 338.0, 41.0, 46.0, 3.0, 35.0, 42.0, 2.0, 78.0, 54.0, 798.0, 63.0, 1288.0, 1066.0, -53.0, 705.0, 757.0, 903.0, 547.0, 1267.0, 1267.0, 355.0, 401.0, 916.0, 233.0, 6.0, 1151.0, 937.0, 940.0, 23.0, 1.0, 9.0, 9.0, 11.0, 5.0, 4.0, 7.0, -3.0, 5.0, 22.0, 4.0, 27.0, 23.0, 29.0, 10.0, 51.0, 3.0, 8.0, 63.0, 122.0, 67.0, 32.0, 28.0, 714.0, 4.0, 7.0, 604.0, 115.0, 31.0, 938.0, 21.0, 121.0, 314.0, 55.0, 70.0, 186.0, 61.0, 76.0, 154.0, 117.0, 395.0, 255.0, 40.0, 37.0, 5.0, -7.0, 3.0, 45.0, 2.0, 4.0, 6.0, 8.0, 73.0, -3.0, 4.0, 4.0, 11.0, 637.0, 30.0, 28.0, 31.0, 21.0, 23.0, 8.0, 34.0, 32.0, 1007.0, 954.0, 31.0, 31.0, 39.0, 10.0, 137.0, 31.0, 56.0, 110.0, 1.0, 592.0, 401.0, 48.0, 140.0, 171.0, 1414.0, 1455.0, 1707.0, 1707.0, 564.0, 992.0, 342.0, 35.0, 61.0, 9.0, 57.0, 41.0, 1442.0, 699.0, 1064.0, 191.0, 251.0, -11.0, 181.0, 215.0, 302.0, 1.0, 2.0, 1376.0, 2.0, 9.0, 798.0, 335.0, 21.0, 11.0, 1049.0, 1002.0, 21.0, 33.0, 75.0, 152.0, 38.0, 1266.0, 360.0, 1029.0, 1477.0, 901.0, 899.0, 1284.0, 862.0, 1205.0, 905.0, 489.0, 1205.0, 160.0, 98.0, 74.0, -2.0, 44.0, 103.0, 121.0, 443.0, 57.0, 93.0, 179.0, 175.0, 178.0, 828.0, 75.0, 115.0, 1487.0, 393.0, 165.0, 347.0, 197.0, 264.0, 27.0, 905.0, 3.0, 2.0, 33.0, 54.0, 26.0, 196.0, 142.0, 30.0, 690.0, 81.0, 955.0, 49.0, 1210.0, 500.0, 654.0, 1180.0, 1155.0, 1057.0, 407.0, 1225.0, 1169.0, 45.0, 2266.0, 2674.0, 1201.0, 1495.0, 394.0, 9.0, 182.0, 145.0, 53.0, 147.0, 1265.0]\n"
]
}
],
"source": [
"multiEle = ele.GetMultiElevation(data[\"latitude\"], data[\"longitude\"])\n",
"print(multiEle)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "555559ea-7e35-4062-a21e-e5275b8da9cd",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": "669"
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(multiEle)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "74fced56-47e8-43cc-b412-af40fcb3eedd",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"data['altitude'] = multiEle"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "61704866-2b97-4bd0-ac0c-f2708ef52094",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": " plant longitude latitude altitude\n0 万方发电厂(焦作爱依斯万方电力有限公司) 113.381649 35.255622 88.0\n1 三河发电有限责任公司 116.860260 39.953617 27.0\n2 上海上电漕泾发电有限公司 121.407593 30.765242 4.0\n3 上海吴泾发电有限责任公司 121.471140 31.065113 3.0\n4 上海吴泾第二发电有限责任公司 121.471340 31.062532 4.0\n.. ... ... ... ...\n664 鹤壁丰鹤发电有限责任公司 114.192184 35.850766 182.0\n665 鹤壁同力发电有限责任公司 114.191246 35.860822 145.0\n666 黄冈大别山发电有限责任公司 114.915181 31.144568 53.0\n667 黑龙江华电齐齐哈尔热电有限公司 124.063322 47.387983 147.0\n668 黔桂发电有限责任公司 106.630029 26.607537 1265.0\n\n[669 rows x 4 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>plant</th>\n <th>longitude</th>\n <th>latitude</th>\n <th>altitude</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>万方发电厂(焦作爱依斯万方电力有限公司)</td>\n <td>113.381649</td>\n <td>35.255622</td>\n <td>88.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>三河发电有限责任公司</td>\n <td>116.860260</td>\n <td>39.953617</td>\n <td>27.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>上海上电漕泾发电有限公司</td>\n <td>121.407593</td>\n <td>30.765242</td>\n <td>4.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>上海吴泾发电有限责任公司</td>\n <td>121.471140</td>\n <td>31.065113</td>\n <td>3.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>上海吴泾第二发电有限责任公司</td>\n <td>121.471340</td>\n <td>31.062532</td>\n <td>4.0</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>664</th>\n <td>鹤壁丰鹤发电有限责任公司</td>\n <td>114.192184</td>\n <td>35.850766</td>\n <td>182.0</td>\n </tr>\n <tr>\n <th>665</th>\n <td>鹤壁同力发电有限责任公司</td>\n <td>114.191246</td>\n <td>35.860822</td>\n <td>145.0</td>\n </tr>\n <tr>\n <th>666</th>\n <td>黄冈大别山发电有限责任公司</td>\n <td>114.915181</td>\n <td>31.144568</td>\n <td>53.0</td>\n </tr>\n <tr>\n <th>667</th>\n <td>黑龙江华电齐齐哈尔热电有限公司</td>\n <td>124.063322</td>\n <td>47.387983</td>\n <td>147.0</td>\n </tr>\n <tr>\n <th>668</th>\n <td>黔桂发电有限责任公司</td>\n <td>106.630029</td>\n <td>26.607537</td>\n <td>1265.0</td>\n </tr>\n </tbody>\n</table>\n<p>669 rows × 4 columns</p>\n</div>"
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "code",
"execution_count": 14,
"outputs": [],
"source": [
"data.to_csv('./电厂机组地理信息.csv', encoding='utf-8-sig', index=False)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

1809
xgboost多任务回归.ipynb Normal file

File diff suppressed because one or more lines are too long

591
两张表特征对齐.ipynb Normal file
View File

@ -0,0 +1,591 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "8950aafd-80e8-4078-874c-966efdc4b0ac",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "50832980-f7e1-4a19-a5e0-b8a378ebd39b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>电厂名称</th>\n",
" <th>机组编号</th>\n",
" <th>铭牌容量 (MW)</th>\n",
" <th>机组类型</th>\n",
" <th>参数分类</th>\n",
" <th>冷凝器型式</th>\n",
" <th>入炉煤低位热值(kJ/kg)</th>\n",
" <th>燃煤挥发份Var(%)</th>\n",
" <th>燃煤灰份Aar(%)</th>\n",
" <th>煤种</th>\n",
" <th>所处地区</th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>altitude</th>\n",
" <th>发电碳排放因子(kg/kWh)</th>\n",
" <th>供热碳排放因子(kg/MJ)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>纯凝式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷</td>\n",
" <td>21602.05000</td>\n",
" <td>26.09</td>\n",
" <td>16.80</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.09662</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.586990</td>\n",
" <td>0.076843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>纯凝式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷</td>\n",
" <td>21926.81000</td>\n",
" <td>26.68</td>\n",
" <td>15.41</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.09662</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.632859</td>\n",
" <td>0.077676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>江苏利港电力有限公司</td>\n",
" <td>1</td>\n",
" <td>350.0</td>\n",
" <td>纯凝式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷</td>\n",
" <td>21261.93062</td>\n",
" <td>26.46</td>\n",
" <td>15.18</td>\n",
" <td>烟煤</td>\n",
" <td>江苏省</td>\n",
" <td>120.09662</td>\n",
" <td>31.942361</td>\n",
" <td>1.0</td>\n",
" <td>0.609196</td>\n",
" <td>0.074823</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 电厂名称 机组编号 铭牌容量 (MW) 机组类型 参数分类 冷凝器型式 入炉煤低位热值(kJ/kg) 燃煤挥发份Var(%) \\\n",
"0 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21602.05000 26.09 \n",
"1 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21926.81000 26.68 \n",
"2 江苏利港电力有限公司 1 350.0 纯凝式 亚临界 水冷 21261.93062 26.46 \n",
"\n",
" 燃煤灰份Aar(%) 煤种 所处地区 longitude latitude altitude 发电碳排放因子(kg/kWh) \\\n",
"0 16.80 烟煤 江苏省 120.09662 31.942361 1.0 0.586990 \n",
"1 15.41 烟煤 江苏省 120.09662 31.942361 1.0 0.632859 \n",
"2 15.18 烟煤 江苏省 120.09662 31.942361 1.0 0.609196 \n",
"\n",
" 供热碳排放因子(kg/MJ) \n",
"0 0.076843 \n",
"1 0.077676 \n",
"2 0.074823 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_data = pd.read_csv('train_data.csv')\n",
"total_data.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "499cac72-c6a3-4b86-8aed-6fc010b12693",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5741, 16)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_data.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7ab5d82e-19bd-4aa4-9cd6-d2004718b00d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>发电类型</th>\n",
" <th>地区</th>\n",
" <th>城市</th>\n",
" <th>企业名称</th>\n",
" <th>机组编号</th>\n",
" <th>机组状态</th>\n",
" <th>机组数量</th>\n",
" <th>单机容量MW</th>\n",
" <th>总容量MW</th>\n",
" <th>核心设备类型</th>\n",
" <th>汽轮机类型</th>\n",
" <th>压力参数</th>\n",
" <th>冷却方式</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>煤电</td>\n",
" <td>安徽省</td>\n",
" <td>安庆市</td>\n",
" <td>国能神皖安庆发电有限责任公司</td>\n",
" <td>1</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>320.0</td>\n",
" <td>320.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>煤电</td>\n",
" <td>安徽省</td>\n",
" <td>安庆市</td>\n",
" <td>国能神皖安庆发电有限责任公司</td>\n",
" <td>2</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>320.0</td>\n",
" <td>320.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>亚临界</td>\n",
" <td>水冷-开式循环</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>煤电</td>\n",
" <td>安徽省</td>\n",
" <td>安庆市</td>\n",
" <td>国能神皖安庆发电有限责任公司</td>\n",
" <td>3</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>1000.0</td>\n",
" <td>1000.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>超超临界</td>\n",
" <td>水冷-闭式循环</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 发电类型 地区 城市 企业名称 机组编号 机组状态 机组数量 单机容量MW 总容量MW 核心设备类型 \\\n",
"0 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 1 在役 1 320.0 320.0 煤粉锅炉 \n",
"1 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 2 在役 1 320.0 320.0 煤粉锅炉 \n",
"2 煤电 安徽省 安庆市 国能神皖安庆发电有限责任公司 3 在役 1 1000.0 1000.0 煤粉锅炉 \n",
"\n",
" 汽轮机类型 压力参数 冷却方式 \n",
"0 凝气式 亚临界 水冷-开式循环 \n",
"1 凝气式 亚临界 水冷-开式循环 \n",
"2 凝气式 超超临界 水冷-闭式循环 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unit_data = pd.read_excel('./data/煤电机组情况(含企业名称).xlsx')\n",
"unit_data.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c4d54203-5343-43df-b594-f6a13e6f47a1",
"metadata": {},
"outputs": [],
"source": [
"total_data.rename(columns={'电厂名称':'企业名称'}, inplace=True)\n",
"total_data['机组编号'] = total_data['机组编号'].astype('str')\n",
"unit_data['机组编号'] = unit_data['机组编号'].astype('str')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "757e26c3-cd1b-48a3-9668-78e13f40436f",
"metadata": {},
"outputs": [],
"source": [
"def change_type(x:str):\n",
" if pd.isna(x):\n",
" return x\n",
" x = x.strip()\n",
" if '纯凝' in x:\n",
" return '纯凝式'\n",
" if '供热' in x:\n",
" return '供热式'\n",
" if '煤粉' in x:\n",
" return '煤粉锅炉'\n",
" if x.startswith('循环流化床'):\n",
" return '循环流化床锅炉'\n",
" if '三废' in x:\n",
" return '三废炉'\n",
" if '直接空冷' in x:\n",
" return '直接空冷'\n",
" if '间接空冷' in x:\n",
" return '间接空冷'\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "fcc7c556-ae7b-4be1-9163-709ce1ca084c",
"metadata": {},
"outputs": [],
"source": [
"merge_data = total_data.merge(unit_data[['企业名称','机组编号','汽轮机类型', '压力参数', '冷却方式']], how='left', on=['企业名称', '机组编号'])"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "3af6ad2f-a881-4ee6-9a27-ecbe75c97b31",
"metadata": {},
"outputs": [],
"source": [
"merge_data['机组类型'] = merge_data.apply(lambda x: x['机组类型'] if pd.isna(x['汽轮机类型']) else x['汽轮机类型'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "dec103bc-c868-4557-ba83-9bbb02f8e9f8",
"metadata": {},
"outputs": [],
"source": [
"merge_data['参数分类'] = merge_data.apply(lambda x: x['参数分类'] if pd.isna(x['压力参数']) else x['压力参数'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "454273f0-51ab-4a75-9c44-9ae8b7cc2a79",
"metadata": {},
"outputs": [],
"source": [
"merge_data['冷凝器型式'] = merge_data.apply(lambda x: x['冷凝器型式'] if pd.isna(x['冷却方式']) else x['冷却方式'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "d3c9cb26-63b4-4c72-9c5b-d90a2c5867ca",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"水冷-闭式循环 2143\n",
"水冷 1166\n",
"水冷-开式循环 1101\n",
"空冷-直接空冷 492\n",
"直接空冷 241\n",
"空冷-间接空冷 154\n",
"间接空冷 74\n",
"空冷 19\n",
"其他 2\n",
"Name: 冷凝器型式, dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"merge_data['冷凝器型式'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "30b2d793-7b44-434a-96e3-c6ce15295881",
"metadata": {},
"outputs": [],
"source": [
"use_data = merge_data[merge_data.columns[:-3]].copy()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "fbdf13c0-6174-463b-9dd0-9ed736e6d126",
"metadata": {},
"outputs": [],
"source": [
"for col in ['机组类型', '参数分类', '冷凝器型式']:\n",
" use_data[col] = use_data[col].apply(change_type)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "ff803c5a-5e56-462b-81fc-639877395d69",
"metadata": {},
"outputs": [],
"source": [
"use_data.to_excel('train_data.xlsx', index=False)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "28d8d579-d816-4117-8c49-a755fdffe1a1",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>发电类型</th>\n",
" <th>地区</th>\n",
" <th>城市</th>\n",
" <th>企业名称</th>\n",
" <th>机组编号</th>\n",
" <th>机组状态</th>\n",
" <th>机组数量</th>\n",
" <th>单机容量MW</th>\n",
" <th>总容量MW</th>\n",
" <th>核心设备类型</th>\n",
" <th>汽轮机类型</th>\n",
" <th>压力参数</th>\n",
" <th>冷却方式</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4026</th>\n",
" <td>煤电</td>\n",
" <td>山西省</td>\n",
" <td>临汾市</td>\n",
" <td>国家能源集团华北电力有限公司霍州发电厂</td>\n",
" <td>1</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>600.0</td>\n",
" <td>600.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>超临界</td>\n",
" <td>空冷-直接空冷</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4027</th>\n",
" <td>煤电</td>\n",
" <td>山西省</td>\n",
" <td>临汾市</td>\n",
" <td>国家能源集团华北电力有限公司霍州发电厂</td>\n",
" <td>2</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>600.0</td>\n",
" <td>600.0</td>\n",
" <td>煤粉锅炉</td>\n",
" <td>凝气式</td>\n",
" <td>超临界</td>\n",
" <td>空冷-直接空冷</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4056</th>\n",
" <td>煤电</td>\n",
" <td>山西省</td>\n",
" <td>吕梁市</td>\n",
" <td>霍州煤电集团吕梁山煤电有限公司方山发电厂</td>\n",
" <td>1</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>60.0</td>\n",
" <td>60.0</td>\n",
" <td>循环流化床锅炉</td>\n",
" <td>抽凝式</td>\n",
" <td>高压</td>\n",
" <td>空冷-直接空冷</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4057</th>\n",
" <td>煤电</td>\n",
" <td>山西省</td>\n",
" <td>吕梁市</td>\n",
" <td>霍州煤电集团吕梁山煤电有限公司方山发电厂</td>\n",
" <td>2</td>\n",
" <td>在役</td>\n",
" <td>1</td>\n",
" <td>60.0</td>\n",
" <td>60.0</td>\n",
" <td>循环流化床锅炉</td>\n",
" <td>抽凝式</td>\n",
" <td>高压</td>\n",
" <td>空冷-直接空冷</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 发电类型 地区 城市 企业名称 机组编号 机组状态 机组数量 单机容量MW 总容量MW \\\n",
"4026 煤电 山西省 临汾市 国家能源集团华北电力有限公司霍州发电厂 1 在役 1 600.0 600.0 \n",
"4027 煤电 山西省 临汾市 国家能源集团华北电力有限公司霍州发电厂 2 在役 1 600.0 600.0 \n",
"4056 煤电 山西省 吕梁市 霍州煤电集团吕梁山煤电有限公司方山发电厂 1 在役 1 60.0 60.0 \n",
"4057 煤电 山西省 吕梁市 霍州煤电集团吕梁山煤电有限公司方山发电厂 2 在役 1 60.0 60.0 \n",
"\n",
" 核心设备类型 汽轮机类型 压力参数 冷却方式 \n",
"4026 煤粉锅炉 凝气式 超临界 空冷-直接空冷 \n",
"4027 煤粉锅炉 凝气式 超临界 空冷-直接空冷 \n",
"4056 循环流化床锅炉 抽凝式 高压 空冷-直接空冷 \n",
"4057 循环流化床锅炉 抽凝式 高压 空冷-直接空冷 "
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unit_data[unit_data['企业名称'].str.contains('霍州')]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "20c531d0-62eb-4475-ab3a-3c8477f36a55",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

235
省际测试.ipynb Normal file
View File

@ -0,0 +1,235 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"outputs": [],
"source": [
"import pandas as pd"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [],
"source": [
"data = pd.read_csv('./供热测试结果.csv')"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [
{
"data": {
"text/plain": " 0 1\n0 0.072858 0.072700\n1 0.073347 0.075045\n2 0.082159 0.080671\n3 0.084120 0.081944\n4 0.065845 0.066739\n.. ... ...\n408 0.066066 0.066927\n409 0.084331 0.082709\n410 0.069216 0.069256\n411 0.065259 0.066203\n412 0.069608 0.071754\n\n[413 rows x 2 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>0</th>\n <th>1</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0.072858</td>\n <td>0.072700</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0.073347</td>\n <td>0.075045</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0.082159</td>\n <td>0.080671</td>\n </tr>\n <tr>\n <th>3</th>\n <td>0.084120</td>\n <td>0.081944</td>\n </tr>\n <tr>\n <th>4</th>\n <td>0.065845</td>\n <td>0.066739</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>408</th>\n <td>0.066066</td>\n <td>0.066927</td>\n </tr>\n <tr>\n <th>409</th>\n <td>0.084331</td>\n <td>0.082709</td>\n </tr>\n <tr>\n <th>410</th>\n <td>0.069216</td>\n <td>0.069256</td>\n </tr>\n <tr>\n <th>411</th>\n <td>0.065259</td>\n <td>0.066203</td>\n </tr>\n <tr>\n <th>412</th>\n <td>0.069608</td>\n <td>0.071754</td>\n </tr>\n </tbody>\n</table>\n<p>413 rows × 2 columns</p>\n</div>"
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 4,
"outputs": [],
"source": [
"from sklearn.metrics import r2_score"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 7,
"outputs": [
{
"data": {
"text/plain": "0.8483477508497194"
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2_score(data.values[:,1], data.values[:,0])"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 8,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on function r2_score in module sklearn.metrics._regression:\n",
"\n",
"r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')\n",
" :math:`R^2` (coefficient of determination) regression score function.\n",
" \n",
" Best possible score is 1.0 and it can be negative (because the\n",
" model can be arbitrarily worse). A constant model that always\n",
" predicts the expected value of y, disregarding the input features,\n",
" would get a :math:`R^2` score of 0.0.\n",
" \n",
" Read more in the :ref:`User Guide <r2_score>`.\n",
" \n",
" Parameters\n",
" ----------\n",
" y_true : array-like of shape (n_samples,) or (n_samples, n_outputs)\n",
" Ground truth (correct) target values.\n",
" \n",
" y_pred : array-like of shape (n_samples,) or (n_samples, n_outputs)\n",
" Estimated target values.\n",
" \n",
" sample_weight : array-like of shape (n_samples,), default=None\n",
" Sample weights.\n",
" \n",
" multioutput : {'raw_values', 'uniform_average', 'variance_weighted'}, array-like of shape (n_outputs,) or None, default='uniform_average'\n",
" \n",
" Defines aggregating of multiple output scores.\n",
" Array-like value defines weights used to average scores.\n",
" Default is \"uniform_average\".\n",
" \n",
" 'raw_values' :\n",
" Returns a full set of scores in case of multioutput input.\n",
" \n",
" 'uniform_average' :\n",
" Scores of all outputs are averaged with uniform weight.\n",
" \n",
" 'variance_weighted' :\n",
" Scores of all outputs are averaged, weighted by the variances\n",
" of each individual output.\n",
" \n",
" .. versionchanged:: 0.19\n",
" Default value of multioutput is 'uniform_average'.\n",
" \n",
" Returns\n",
" -------\n",
" z : float or ndarray of floats\n",
" The :math:`R^2` score or ndarray of scores if 'multioutput' is\n",
" 'raw_values'.\n",
" \n",
" Notes\n",
" -----\n",
" This is not a symmetric function.\n",
" \n",
" Unlike most other scores, :math:`R^2` score may be negative (it need not\n",
" actually be the square of a quantity R).\n",
" \n",
" This metric is not well-defined for single samples and will return a NaN\n",
" value if n_samples is less than two.\n",
" \n",
" References\n",
" ----------\n",
" .. [1] `Wikipedia entry on the Coefficient of determination\n",
" <https://en.wikipedia.org/wiki/Coefficient_of_determination>`_\n",
" \n",
" Examples\n",
" --------\n",
" >>> from sklearn.metrics import r2_score\n",
" >>> y_true = [3, -0.5, 2, 7]\n",
" >>> y_pred = [2.5, 0.0, 2, 8]\n",
" >>> r2_score(y_true, y_pred)\n",
" 0.948...\n",
" >>> y_true = [[0.5, 1], [-1, 1], [7, -6]]\n",
" >>> y_pred = [[0, 2], [-1, 2], [8, -5]]\n",
" >>> r2_score(y_true, y_pred,\n",
" ... multioutput='variance_weighted')\n",
" 0.938...\n",
" >>> y_true = [1, 2, 3]\n",
" >>> y_pred = [1, 2, 3]\n",
" >>> r2_score(y_true, y_pred)\n",
" 1.0\n",
" >>> y_true = [1, 2, 3]\n",
" >>> y_pred = [2, 2, 2]\n",
" >>> r2_score(y_true, y_pred)\n",
" 0.0\n",
" >>> y_true = [1, 2, 3]\n",
" >>> y_pred = [3, 2, 1]\n",
" >>> r2_score(y_true, y_pred)\n",
" -3.0\n",
"\n"
]
}
],
"source": [
"help(r2_score)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

701
计算碳排放.ipynb Normal file

File diff suppressed because one or more lines are too long