Faça um programa para processar o arquivo plant_health_data.csv. O programa deve perguntar ao usuário se ele quer obter as informações de um sensor, de uma planta ou de uma medição. Se o usuário escolher o sensor, ele deve indicar o horário em que o sensor foi acionado (primeira coluna). Neste caso, o programa deve mostrar todas as informações dessa linha do arquivo. Caso o usuário escolha a planta (informando seu id), o programa deve mostrar o menor valor, o maior valor, a média e o desvio padrão de cada atributo dessa planta (da terceira coluna até a penúltima). Caso o usuário escolha uma medição (da terceira coluna até a penúltima), o programa deve mostrar o menor valor, o maior valor e a média dos valores da medição escolhida, por planta.

Passo 1

Beleza, vamos dar uma olhada no que o exercício está pedindo. A gente precisa criar um programa que processe um arquivo chamado plant_health_data.csv. O programa vai perguntar pro usuário se ele quer informações sobre um sensor, uma planta ou uma medição. Dependendo da escolha, o programa vai mostrar diferentes tipos de informações. Vamos precisar usar conceitos de leitura de arquivos CSV, manipulação de dados e cálculos estatísticos como mínimo, máximo, média e desvio padrão.

Passo 2

Primeiro, vamos pensar em como ler o arquivo CSV. No Python, uma maneira fácil de fazer isso é usando a biblioteca csv. Ela permite que a gente leia o arquivo linha por linha e acesse os valores de cada coluna.

Passo 3

Depois de ler o arquivo, o programa precisa perguntar pro usuário o que ele quer fazer: obter informações de um sensor, de uma planta ou de uma medição. Isso pode ser feito usando a função input() para receber a escolha do usuário.

Passo 4

Se o usuário escolher “sensor”, ele vai precisar informar o horário em que o sensor foi acionado. Esse horário está na primeira coluna do arquivo. Então, a gente vai procurar a linha que corresponde a esse horário e mostrar todas as informações dessa linha.

Passo 5

Caso o usuário escolha “planta”, ele vai precisar informar o ID da planta. Com esse ID, o programa vai filtrar todas as entradas dessa planta e calcular o menor valor, o maior valor, a média e o desvio padrão para cada atributo dessa planta, que vão da terceira coluna até a penúltima.

Passo 6

Se a escolha for “medição”, o usuário vai informar qual medição deseja analisar, que também está entre a terceira e a penúltima coluna. O programa vai então calcular o menor valor, o maior valor e a média dessa medição para cada planta.

Passo 7

Para calcular a média, a gente soma todos os valores e divide pela quantidade de elementos. O desvio padrão mede o quanto os valores estão espalhados em relação à média. No Python, a biblioteca statistics pode ajudar a calcular esses valores facilmente.

Passo 8

Vamos agora juntar tudo isso em um código. Vamos importar as bibliotecas necessárias, ler o arquivo CSV, perguntar a escolha do usuário e processar os dados conforme a seleção feita.

Resposta

Aqui está um exemplo de como você pode implementar esse programa em Python:
import csv
import statistics

def ler_csv(nome_arquivo):
    with open(nome_arquivo, 'r') as arquivo:
        leitor = csv.reader(arquivo)
        dados = list(leitor)
    return dados

def informar_sensor(dados):
    horario = input("Digite o horário que o sensor foi acionado: ")
    for linha in dados:
        if linha[0] == horario:
            print("Informações do sensor acionado nesse horário:")
            print(linha)
            return
    print("Horário não encontrado.")

def informar_planta(dados):
    id_planta = input("Digite o ID da planta: ")
    atributos = list(zip(*dados))[2:-1]  # Da terceira até a penúltima coluna
    valores_por_atributo = [[] for _ in atributos]
    
    for linha in dados:
        if linha[1] == id_planta:
            for i, valor in enumerate(linha[2:-1]):
                valores_por_atributo[i].append(float(valor))
    
    if not any(valores_por_atributo):
        print("ID da planta não encontrada.")
        return

    for i, valores in enumerate(valores_por_atributo):
        minimo = min(valores)
        maximo = max(valores)
        media = statistics.mean(valores)
        desvio = statistics.stdev(valores) if len(valores) > 1 else 0
        print(f"Atributo {i+1}: Mínimo={minimo}, Máximo={maximo}, Média={media:.2f}, Desvio Padrão={desvio:.2f}")

def informar_medicao(dados):
    medicao = input("Digite a medição que deseja analisar: ")
    indice_medicao = -1
    cabeçalho = dados[0]
    try:
        indice_medicao = cabeçalho.index(medicao)
    except ValueError:
        print("Medição não encontrada.")
        return
    
    plantas = {}
    for linha in dados[1:]:
        id_planta = linha[1]
        valor = float(linha[indice_medicao])
        if id_planta not in plantas:
            plantas[id_planta] = []
        plantas[id_planta].append(valor)
    
    for planta, valores in plantas.items():
        minimo = min(valores)
        maximo = max(valores)
        media = statistics.mean(valores)
        print(f"Planta {planta}: Mínimo={minimo}, Máximo={maximo}, Média={media:.2f}")

def main():
    dados = ler_csv('plant_health_data.csv')
    escolha = input("O que você deseja obter? (sensor/planta/medição): ").lower()
    if escolha == 'sensor':
        informar_sensor(dados)
    elif escolha == 'planta':
        informar_planta(dados)
    elif escolha == 'medição':
        informar_medicao(dados)
    else:
        print("Opção inválida.")

if __name__ == "__main__":
    main()
Explicação Rápida:
  • Leitura do CSV: A função ler_csv lê o arquivo e armazena os dados em uma lista.
  • Informar Sensor: Procura a linha com o horário indicado e exibe todas as informações.
  • Informar Planta: Filtra os dados pela planta selecionada e calcula os valores estatísticos para cada atributo.
  • Informar Medição: Encontra a coluna da medição escolhida e calcula os valores estatísticos para cada planta.
  • Main: Controla o fluxo do programa perguntando ao usuário o que ele deseja fazer e chamando a função apropriada.
Esse programa cobre todas as funcionalidades que o exercício pede de forma organizada e fácil de entender. Você pode rodar esse código no seu ambiente Python, certificando-se de que o arquivo plant_health_data.csv está no mesmo diretório.

Exercícios relacionados