Calcular média,desvio padrão de dados semestrais de uma base de dados

04/02/2023

0

Boa tarde gente!!
Queria saber como faço para pegar dados semestrais de uma base de dados,ficaria muito grato se alguém me ajudasse!!!
Joao Alves

Joao Alves

Responder

Posts

07/12/2023

Leticia Lima

Vou te passar um exemplo.

A biblioteca pandas é excelente pra quem ta começando a fazer tratamento de dados. Super recomendo. E voce pode criar um script para tratar esses dados do jeito que voce precisa. E criar uma tarefa no servidor para que ela seja executada a hora que voce quiser.

import pandas as pd

# Suponha que você tenha um arquivo CSV chamado 'dados.csv' com colunas 'Data' e 'Valor'
# Substitua isso pelo caminho do seu arquivo CSV e pelos nomes reais das colunas
caminho_arquivo = 'caminho/do/seu/arquivo/dados.csv'
coluna_data = 'Data'
coluna_valor = 'Valor'

# Carregue os dados do arquivo CSV
dados = pd.read_csv(caminho_arquivo, parse_dates=[coluna_data])

# Agrupe os dados por semestre e calcule a média, soma ou outra métrica desejada
dados_semes = dados.resample('6M', on=coluna_data).sum()  # Pode usar 'mean', 'sum', etc.

# Exiba os dados
print(dados_semes)


Neste exemplo, a função resample do Pandas é usada para agrupar os dados por semestre. Você pode ajustar o método (sum, mean, etc.) de acordo com a métrica que deseja aplicar aos dados agrupados.

Se sua base de dados já possui uma coluna de data, a abordagem acima deve funcionar bem. No entanto, se não tiver, você precisará ajustar o código de acordo com a estrutura específica dos seus dados.
Responder

07/12/2023

Arthur Heinrich

Imagino que você já saiba escrever um select. Então, vou me atentar para a sua funcionalidade desejada.

A maioria dos bancos, senão todos, não possui funções que retornem o semestre de uma data. Portanto, você precisará construir isso.

Se estamos falando de banco de dados relacional, imagino que você tenha funções que extraem o dia, mês e ano de uma data. Você não informou que tipo de banco está utilizando. Então, exemplificadamente, vou supor que existam as funções MES(<data>) e ANO(<data>).

Você começa sua análise montando a query que retorna o conjunto de dados desejado:

  select data, valor1, valor2, valor3
  from tabela
  where
    filtro1 and
    ...


Agora, você precisa transformar a coluna "data" em um semestre, que pode ser composto de (ano, semestre), onde "semestre" representa '1º semestre' ou '2º semestre'.

  select
    ANO(data) ano, case MES(data)<=6 then '1º semestre' else '2º semestre' end semestre,
    valor1, valor2, valor3
  from tabela
  where
    filtro1 and
    ...


E por fim, agrupa tudo:

  select ano, semestre, avg(valor1) media_valor1, stddev(valor1) desvio_padrao_valor1, ...
  from
   (select
      ANO(data) ano, case MES(data)<=6 then '1º semestre' else '2º semestre' end semestre,
      valor1, valor2, valor3
    from tabela
    where
      filtro1 and
      ...) dados
  group by ano, semestre
  order by ano, semestre

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar