Gráfico de séries temporais em python

Segue um esquema “canivete suíço” simples e direto para plotar uma série temporal usando python. O script a seguir lê os dados de um arquivo CSV (comentado) ou de um banco de dados PostgreSQL e faz um gráfico impresso na tela ou em figura (comentado):

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Script para plotar gráficos de série temporal (BD ou CSV)

import os
import sys
# Busca no Postgresql
import psycopg2
import psycopg2.extras
# Grafico
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as md
import dateutil
from datetime import datetime

# Opção para ler dados de arquivo CSV
#cor = pd.read_csv('filename.csv', delimiter=',')

table_name = 'schema.table_name'
data_coluna = 'dt_horario'
var_coluna = 'variavel'

data_ini = '2017-08-12 17:00:00'
data_fim = '2017-08-12 17:10:00'

conn = psycopg2.connect(host = "hostname.com.br", database = "nome_db", user="usuario")
cursor = conn.cursor()
query = "SELECT %s,%s FROM %s WHERE %s BETWEEN '%s' AND '%s' ORDER BY %s;" % (data_coluna,var_coluna,table_name,data_coluna,data_ini,data_fim,data_coluna)
cursor.execute(query)
lst = cursor.fetchall()
# Fechar ponteiro e conexão
cursor.close()
conn.close()
x = [item[0] for item in lst]
y = [item[1] for item in lst]

plt.plot(x,y, marker='.', linestyle='')
plt.show()
# Opção para salvar grafico em figura PNG
#plt.savefig("plot.png")

Mais opções no post Gráficos em python. O repositório viniroger/ts_means contém mais códigos para cálculo de médias (mensais e padrão diurno) e confecção de gráficos.

One comment

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.