1.1.2 智能农业系统中的业务数据采集和处理流程设计

某农业公司计划引入智能农业系统,通过安装在农田中的各种传感器(如温度传感器、湿度传感器、土壤传感器等)实时监控农田环境,收集数据并进行分析,以优化作物管理和提高产量。

传感器数据集(sensor_data.csv),包含以下字段:

SensorID: 传感器ID

Timestamp: 时间戳

SensorType: 传感器类型(Temperature温度, Humidity湿度, SoilMoisture土壤水分, SoilPH土壤酸碱度, Light光传感器)

Value: 传感器读数

Location: 传感器安装位置:

  1. 分别统计每种传感器的数据数量和平均值。将上述统计结果截图以jpg的格式保存,命名为“1.1.2-1”。
  2. 统计每个位置的温度和湿度传感器数据的平均值。将上述统计结果截图以jpg的格式保存,命名为“1.1.2-2”。
  3. 对数据进行清洗,处理异常值。具体要求如下:
    • 将明显异常的温度(< -10 或 > 50)和湿度(< 0 或 > 100)数据进行标记并统计。
    • 对缺失值使用前面数据的值(如果前面值没有采用后面数据的值)进行填补。
    • 将清洗后的数据保存为新文件cleaned_sensor_data.csv。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据集 2分
data = pd.read_csv('sensor_data.csv')

# 1. 传感器数据统计
# 对传感器类型进行分组,并计算每个组的数据数量和平均值 3分
sensor_stats = data.groupby('SensorType')['Value'].agg(['count', 'mean'])
# 输出结果
print("传感器数据数量和平均值:")
print(sensor_stats)

# 2. 按位置统计温度和湿度数据
# 筛选出温度和湿度数据,然后按位置和传感器类型分组,计算每个组的平均值 2分
location_stats = data[data['SensorType'].isin(['Temperature','Humidity'])].groupby(['Location', 'SensorType'])['Value'].mean().unstack()
# 输出结果
print("每个位置的温度和湿度数据平均值:")
print(location_stats)

# 3. 数据清洗和异常值处理
# 标记异常值 3分
data['is_abnormal'] = np.where(
    ((data['SensorType'] == 'Temperature') & ((data['Value'] < -10) | (data['Value'] > 50))) |
    ((data['SensorType'] == 'Humidity') & ((data['Value'] < 0) | (data['Value'] > 100))),
    True, False
)
# 输出异常值数量 2分
print("异常值数量:", data['is_abnormal'].sum())
# 填补缺失值
# 使用前向填充和后向填充的方法填补缺失值 4分
data['Value'].ffill(limit=1, inplace=True)
data['Value'].bfill(limit=1, inplace=True)
# 保存清洗后的数据
# 删除用于标记异常值的列,并将清洗后的数据保存到新的CSV文件中 4分
cleaned_data = data.drop(columns=['is_abnormal'])
cleaned_data.to_csv('cleaned_sensor_data.csv', index=False)
print("数据清洗完成,已保存为 'cleaned_sensor_data.csv'")

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注