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.