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'.