By FelderWang, whydf@outlook.com

总体介绍

这是分析的1.0版本,基本功能都已经完成了。还有一些代码整理的工作,以及部分辅助功能待实现。

version 4.1(2021.07.18)

修改了原先先插值后填补时间的BUG,改为先填补时间后插值。

version 4.0 (2021.07.10)

1.异常值,0,VALUE,NUFF,负值等,先归0 2.流量筛选,每个月95%(不包括异常值),线性内插填补(先去异常值,筛了后补) 3.浓度筛选,满足两个条件:每个月95%和上下浓度范围(不包括异常值),线性内插填补(两部分取交集的元素删除) 4.输出每个工厂两个筛除比例:①(上下浓度范围+异常值)/全部数据;②(每个月95%和上下浓度范围+异常值)/全部数据(筛选按照月度筛,输出月度和年度比例) 5.输出求和(每个工厂输出表格最下方,总表格),工厂输出月份 (排放量按年度求和,每个工厂最后一行算一下,再弄一个表分别把求和结果放里面)(每个工厂输出几个月份,因为有缺的)

2017年电厂数据说明书

包含两个文件夹:2017_1_0_u2017_1_0_n

每个文件夹下包含各个厂处理后的数据,以及 month_filter*.xlsxyear_filter*.xlsxtotal_sum*.xlsx三个文件。

filter文件:记录筛选比例

其中 filter文件表示的是每种排放物被筛选掉的比例。e1 表示只用95%筛掉的比例(一般都是0.05,由于除数的关系会不严格等于0.05),e2表示同时用95%和上下限筛掉的比例。use_limit表示该厂是否提供了上下限,对于提供了上下限的,使用方法2筛选;对于没有提供上下限的,使用方法1筛选。

total_sum文件:记录总的排放量

由于数据存在整月缺失情况,missing_month记录了缺了哪几个月。

这里要注意的是两个文件夹,u后缀文件夹中的文件,包含 use_empty后缀,意思是将缺失的整月按线性插值将数据补全。这样可以得到全年不缺失的数据,用于后续分析。但是由于补全了,total_sum*use_empty.xlsx中的 missing_month不准确。

n后缀文件夹中的文件,包含 no_empty后缀,意思是缺失的整月不补全。这样生成的数据同样存在整月缺失。而 total_sum*no_empty.xlsx中的 missing_month是准确的

举例:**石油化工股份有限公司金陵分公司(热电),缺少8-10月数据。那么 2017_1_0_u中,该公司数据被补全,在 month_filter_use_limit1_0use_empty.xlsx中,有该公司每个月的数据,total_sum_use_limit1_0use_empty.xlsxmissing_month也没有信息。该公司最终生成处理后的文件,包含全年数据。

而在 2017_1_0_n,该公司数据不被补全,在 month_filter_use_limit1_0no_empty.xlsx中,缺少8-10月数据,total_sum_use_limit1_0use_empty.xlsx中,missing_month显示缺少8-10月。该公司最终生成处理后的文件,不包含缺失月份。

当然也存在缺失过多,如徐州垞城电力有限责任公司,10-12月全部数据都缺失,补齐意义不大。

version 3.0 (2021.05.10)

输入文件分为两部分, 一个是工厂排放量,另一个是工厂的年燃量、理论烟气量及燃料类型,非常简单。

结构说明

处理脚本为 dealer.py

所需的一些数据在 datas.json中,其具体含义见下。

具体操作详见脚本中注释。目前的版本不进行筛选,对于 0数值使用线性插值的办法填补。

处理所需的数据存放在 datas.json 中,其中各字段含义为:

  • "company_name_list":需要处理的公司列表。公司列表可使用 company_list_creater.py 生成,之后放到 json 文件中即可。
  • "file_list": 需要处理的源文件路径列表。
  • "table_column_dict":源文件列名的映射。由于不同源文件列名可能会不一样,因此要改的话改这个映射即可,无需在 dealer.py 源码中修改
  • "burn_type_dict":最后计算时候需要再乘一个的系数。
  • "flow_exception_name_list":在给的 9-12.xlsx 中,流量该列,有的值是 ,需要先将其转换为 0。当然也可以直接改源 excel 文件中的值。

运行方法

先将所需数据在 datas.json中修改好。然后执行:

python dealer.py

Requirement

建议使用 anaconda 管理 Python

以下为所需包,具体视平台而定

  • pandas
  • numpy
  • scipy
  • matplotlib