functions.get_data module

Módulo que coleta os dados de Venda de Medicamentos Controlados e Antimicrobianos (Medicamentos Manipulados) do site “dados.gov.br”, dados disponíveis de Janeiro de 2014 até Novembro de 2021. Para a plena execução deste módulo, é necessário ter certeza de que o domínio https://dados.gov.br/dados/conjuntos-dados/venda-de-medicamentos-controlados-e-antimicrobianos—medicamentos-manipulados se encontra em pleno funcionamente e não está fora do ar, além disso, não houve alteração na forma como os dados são armazenados.

functions.get_data.download_csv_by_dates(data_inicial: str, data_final: str = None, output_file: str = None) DataFrame[código fonte]

Função para baixar os dados da base de dados pelas datas selecionadas.

Como todos os dados da base de dados em csv podem ser baixados a partir dos links: “https://dados.anvisa.gov.br/dados/SNGPC/Manipulados/EDA_Manipulados_{data}.csv”, onde a data se encontra no formato “AAAAmm” (ex: “201401”, ou seja, Janeiro de 2014), essa função baixa esses dados através do pandas e os retorna como um dataframe, podendo escolher entre apenas uma data ou todos os dados entre duas datas, é possível também transformá-los em arquivos de saída definindo o output_file, com o caminho e nome do arquivo desejado, o arquivo deve conter “.csv” no final, a base de dados contém registros desde Janeiro de 2014 até Novembro de 2021, por isso, é feita uma validação de datas através da função validacao_datas, e nem sempre o servidor possui resposta.

Parameters

data_inicialstr

A data do primeiro registro buscado.

data_finalstr, optional

A data do último registro buscado, by default None

output_filestr, optional

O caminho e nome do arquivo de saída, by default None

Returns

pd.DataFrame

O dataframe dos registros da base de dados da data ou datas inseridas.

Raises

ValueError

O arquivo de saída não é uma string ou não acaba em .csv

Test

>>> download_csv_by_dates(2021)
Tipo das datas inserido está incorreto, tente inserir a data como uma string, ex: '2015/05'
>>> download_csv_by_dates("2021/01", "2028/12")
Problemas com a segunda data inserida: 2028/12
Formato da data está incorreto ou ela não está entre Janeiro de 2014 e Novembro de 2021, tente inserir como ANO/mês, ex: '2015/05'.
>>> download_csv_by_dates("2021/01", output_file=3)
O arquivo de saída deve ser uma string e terminar em .csv, ex: 'caminho/meu_arquivo.csv'
>>> download_csv_by_dates("2021/01", output_file="caminho/test.txt")
O arquivo de saída deve ser uma string e terminar em .csv, ex: 'caminho/meu_arquivo.csv'
functions.get_data.download_data_sep_by_months(data_incial: str, data_final: str, caminho: str) None[código fonte]

Baixa arquivos da base de dados separadamente por meses

Devido as limitações do github para arquivos de tamanhos grandes, essa função baixa os arquivos separadamente por mês e ano, os salvando da forma “Manipulados_AAAA_mm.csv”, ex: Manipulados_2014_01.csv. Os dados de medicamentos manipulados de Janeiro de 2014. as validações de datas são feitas seguindo a função “validacao_datas”. A função está também limitada ao pleno funcionamento do site https://dados.gov.br/dados/conjuntos-dados/venda-de-medicamentos-controlados-e-antimicrobianos—medicamentos-manipulados

Parameters

data_incialstr

A data do primeiro registro a ser baixado.

data_finalstr

A data do último registro a ser baixado.

caminhostr

O caminho em que os arquivos serão baixados.

Test

>>> download_data_sep_by_months("2014/01", "201401", 3)
Caminho deve ser uma string, tente iserir outro caminho.
>>> download_data_sep_by_months("2013/01", "2015/01", 3)
Problemas com a primeira data inserida: 2013/01
Formato da data está incorreto ou ela não está entre Janeiro de 2014 e Novembro de 2021, tente inserir como ANO/mês, ex: '2015/05'.
functions.get_data.get_dates_between_dates(data_inicial: str, data_final: str) list[código fonte]

Recebe duas datas e retorna uma lista com todas as datas entre essas duas datas.

A segunda data deve ser posterior a primeira, e do formato “AAAA/mm”, além disso, as datas devem estar entre Janeiro de 2014 e Novembro de 2021. Possui as mesmas exceções da função “validacao_datas”.

Parameters

data_inicialstr

A primeira data a ser validada.

data_finalstr

A segunda data a ser validada, esta data deve ser posterior a primeira.

Returns

lista_dataslist

Uma lista com todas as datas entre a data inicial e a data final, as datas estão no formato de string “AAAAmm”. Caso as datas não sejam válidas, retorna uma lista vazia.

Test

>>> get_dates_between_dates("2014/01", "2014/01")
['201401']
>>> get_dates_between_dates("2021/08", "2021/11")
['202108', '202109', '202110', '202111']
>>> get_dates_between_dates("2014/01", "2030/06")
Problemas com a segunda data inserida: 2030/06
Formato da data está incorreto ou ela não está entre Janeiro de 2014 e Novembro de 2021, tente inserir como ANO/mês, ex: '2015/05'.
[]
>>> get_dates_between_dates("2015/01", "2014/06")
A segunda data deve ser maior ou igual a primeira, ex: ('2014/01', '2014/01') ou ('2014/01', '2016/02')
[]
functions.get_data.validacao_datas(data_inicial: str, data_final: str) True[código fonte]

Recebe duas datas e as valida para o formato desejado.

Duas strings de datas, sendo que os primeiros 4 dígitos devem ser do ano e os últimos 2 do mês, a primeira data é a data inicial e a segunda a data final, a data final deve ser maior ou igual a data inicial, as duas datas devem estar entre Janeiro de 2014 (2014/01) e Novembro de 2021 (2021/11).

Parameters

data_inicialstr

A primeira data a ser validada.

data_finalstr

A segunda data a ser validada, esta data deve ser posterior a primeira.

Returns

True

Caso nenhum erro seja encontrado, ou seja, as datas sejam válidas

Raises

TypeError

Tipo icorreto de datas.

NameError

Formato icorreto de datas.

ValueError

Problemas com os valores das datas, não estão entre Janeiro de 2014 e Novembro de 2021.

IndexError

A segunda data (data final) é menor do que a primeira data (data inicial).

Test

>>> validacao_datas("2014/01", "2014/01")
True
>>> validacao_datas("2014/01", "2021/06")
True
>>> validacao_datas(2014/1, "2014/01")
Tipo das datas inserido está incorreto, tente inserir a data como uma string, ex: '2015/05'
>>> validacao_datas("2021", "2021/01")
Formato das datas inserido está incorreto, revise novamente e tente inserir como ANO/mês, ex: '2015/05'.
>>> validacao_datas("incorreto", "2021/01")
Problemas com a primeira data inserida: inco/to
Formato da data está incorreto ou ela não está entre Janeiro de 2014 e Novembro de 2021, tente inserir como ANO/mês, ex: '2015/05'.
>>> validacao_datas("2014/01", "2022/01")
Problemas com a segunda data inserida: 2022/01
Formato da data está incorreto ou ela não está entre Janeiro de 2014 e Novembro de 2021, tente inserir como ANO/mês, ex: '2015/05'.