Calcular média,desvio padrão de dados semestrais de uma base de dados
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!!!
Queria saber como faço para pegar dados semestrais de uma base de dados,ficaria muito grato se alguém me ajudasse!!!
Joao Alves
Curtidas 0
Respostas
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.
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.
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
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:
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'.
E por fim, agrupa tudo:
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