Python 温度数据处理与可视化全流程:从读取到保存1.1

2 阅读1分钟

1. 数据读取阶段

使用np.loadtxt读取 CSV 文件,关键参数说明:

  • delimiter=",":指定逗号为分隔符
  • dtype=bytes:先以字节类型读取,避免编码问题
  • skiprows=1:跳过标题行
  • usecols=(1):只读取第二列的温度数据
import numpy as np
# 1. 读取温度数据
temperature_str = np.loadtxt(
    "ug_detect.csv",
    delimiter=",",  # 分隔符
    dtype=bytes,    # 数据类型 字节类型
    skiprows=1,     # 跳过第一行标题
    usecols=(1)     # 只读取第二列数据
)
print("读取出来的温度原始数据:", temperature_str)

2. 数据转换与清洗

这一步主要完成:

  • 将字节类型转换为浮点数
  • 处理空值:将空字符串转换为 None(在 numpy 中会变为 nan)
  • 处理异常值:将高于 50°C 的温度值视为异常,同样转换为 None
# 2. 类型转换+缺失值与异常值处理
temperature = np.zeros(len(temperature_str))
print("初始化的数组temperature:", temperature)

for i in range(len(temperature_str)):
    item = temperature_str[i]  # 取出当前元素
    if item != b"":  # 如果当前元素非空
        item = float(item)  # 字符串转浮点数
        if item >= 50.0:    # 温度高于50°视为异常值
            item = None
    else:  # 空值处理
        item = None
    temperature[i] = item  # 赋值给新数组

3. 缺失值填充

采用邻近值填充法处理 nan 值:

  • 第一个元素缺失:用第二个元素填充
  • 最后一个元素缺失:用倒数第二个元素填充
  • 中间元素缺失:用前后两个元素的平均值填充
# 3. 处理nan值
for i in range(len(temperature)):
    if np.isnan(temperature[i]):  # 判断是否为nan值
        if i == 0:  # 第一个元素
            temperature[i] = temperature[i+1]
        elif i == len(temperature) - 1:  # 最后一个元素
            temperature[i] = temperature[i-1]
        else:  # 中间元素
            temperature[i] = 0.5 * (temperature[i-1] + temperature[i+1])

print("nan处理之后的数组temperature:", temperature)