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

Python

Análise de dados

Programação

04/02/2023

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

Curtidas 0

Respostas

Leticia Lima

Leticia Lima

04/02/2023

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.
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

04/02/2023

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

GOSTEI 0
POSTAR