井下环境监测数据处理(python )1.0

26 阅读1分钟

情景描述

有一家专业从事煤矿安全监控和预防的公司。最近该公司承接了某煤井的井下监控工作,需要通过采集井下温度,井下湿度以及气体涌出量来评估和监控井下的环境和状况。

任务实施

1.读取数据

python
import numpy as np
temperature_str = np.loadtxt(
    "ug_detect.csv",
    delimiter=",",
    skiprows=1,
    usecols=(1),
    dtype=bytes
)

humidity_str = np.loadtxt(
    "ug_detect.csv",
    delimiter=",",
    skiprows=1,
    usecols=(2),
    dtype=bytes
)

gas_str = np.loadtxt(
    "ug_detect.csv",
    delimiter=",",
    skiprows=1,
    usecols=(3),
    dtype=bytes
)

co_str = np.loadtxt(
    "ug_detect.csv",
    delimiter=",",
    skiprows=1,
    usecols=(4),
    dtype=bytes
)
print(temperature_str)
print(humidity_str)
print(gas_str)
print(co_str)

2.缺失值和异常值处理

缺失值处理

python
def conver_data(array_str,flag):
    array = np.zeros(len(array_str))
    # 类型转换+缺失值处理
    for i in range(len(array_str)):
        item = array_str[i]
        if item != b'':  # 如果当前元素为空
            item = float(item)
            if flag == 1:
                if item > 50:
                    item = None
            elif flag == 2:
                if item > 200:
                    item = None
            elif flag == 3 or flag == 4:
                if item > 100:
                    item = None
        else:   # 如果为空
            item = None  # 将缺失值填充为无效值
        array[i] = item
    return array
temperature = conver_data(temperature_str,1)
humidity = conver_data(humidity_str,2)
gas = conver_data(gas_str,3)
co = conver_data(co_str,4)

处理nan值

python
def bisec(array):
    for i in range(len(array)):
        if np.isnan(array[i]):
            if i == len(array) - 1:  #最后一个元素
                array[i] =array[i - 1]
            elif i == 0:  # 第一个元素
                array[i] = array[i + 1]
            else:
                array[i] = (array[i - 1] + array[i + 1]) / 2
    return array
temperature = bisec(temperature)
humidity = bisec(humidity)
gas = bisec(gas)
co = bisec(co)