Código fonte para functions.Leonardo_vis

"""
Módulo para a criação da visualização do integrante Leonardo. 
As funções desse módulo são utilizadas para a análise exploratória da base de dados e a elaboração da
visualização baseada nas vendas anuais do remédio Hemitartarato de Zolpidem.
"""

import sys, os
esse_caminho = os.path.dirname(os.path.abspath(__file__))
sys.path.append(esse_caminho)

import pandas as pd 
import matplotlib.pyplot as plt 
import utils 
import doctest

[documentos] def dataframe_de_zolpidem(dataframe_selecionado: pd.DataFrame) -> pd.DataFrame: """ A função recebe um dataframe que contém registros de venda do Hemitartarato de Zolpidem dentro de um intervalo de tempo e retorna um dataframe que contém a quantidade de vendas do remédio por ano. Parameters ---------- dataframe_selecionado: pd.DataFrame Dataframe referente ao remédio Zolpidem. Returns ---------- df_venda_por_ano: pd.DataFrame Dataframe das quantidades vendidas por ano. Examples ---------- # >>> dataframe_de_zolpidem(utils.concat_data_by_dates("2014/01", "2020/12", filtered_columns = ["ANO_VENDA", "PRINCIPIO_ATIVO"])) Tests ---------- >>> dataframe_de_zolpidem(2023) Parâmetro inválido. >>> dataframe_de_zolpidem(pd.DataFrame()) O dataframe não contém a coluna PRINCIPIO_ATIVO. """ # Validação do dataframe try: if type(dataframe_selecionado) != pd.DataFrame: raise TypeError except TypeError: print("Parâmetro inválido.") else: try: df_hemitartarato_de_zolpidem = (dataframe_selecionado[dataframe_selecionado["PRINCIPIO_ATIVO"] == "HEMITARTARATO DE ZOLPIDEM"]).reset_index(drop=True) df_zolpidem = (dataframe_selecionado[dataframe_selecionado["PRINCIPIO_ATIVO"] == "ZOLPIDEM"]).reset_index(drop=True) except KeyError: print("O dataframe não contém a coluna PRINCIPIO_ATIVO.") except BaseException as err: print("Outro erro encontrado!", err) else: # Gerando o dataframe que contém apenas o Zolpidem df = pd.concat([df_hemitartarato_de_zolpidem, df_zolpidem]).reset_index() # Contagem por ano df["REMÉDIO_VENDIDO"] = df["PRINCIPIO_ATIVO"].replace({"HEMITARTARATO DE ZOLPIDEM": 1, "ZOLPIDEM": 1}) df_venda_por_ano = df.groupby("ANO_VENDA")["REMÉDIO_VENDIDO"].sum().sort_values(ascending = False).reset_index() return df_venda_por_ano
[documentos] def visualizacao_leonardo(dataframe_de_vendas_anuais: pd.DataFrame, caminho_pasta: str) -> pd.DataFrame: """ A função recebe um dataframe que possui a quantidade de vendas do remédio Zolpidem por ano e retorna um gráfico de linhas baseado no dataframe. Parameters ---------- dataframe_de_vendas_anuais: pd.DataFrame Dataframe que contém o total de vendas anuais do remédio Hemitartarato de Zolpidem. caminho_pasta: str Caminho da pasta onde o arquivo de imagem da visualização será salvo. Returns ------- "Visualização finalizada": str Mensagem de conclusão da visualização. """ df_venda_por_ano = dataframe_de_zolpidem(dataframe_de_vendas_anuais) # Construção do gráfico plt.scatter(df_venda_por_ano["ANO_VENDA"], df_venda_por_ano["REMÉDIO_VENDIDO"], marker="*", c = "Black") plt.plot(df_venda_por_ano["ANO_VENDA"], df_venda_por_ano["REMÉDIO_VENDIDO"], c = "Gray") plt.suptitle("Venda de Zolpidem ao Longo dos Anos", fontweight = "bold") plt.xlabel("Anos", fontweight = "bold") plt.ylabel("Vendas", fontweight = "bold") plt.gca().set_facecolor("Beige") plt.savefig(f"{caminho_pasta}\zolpidem.png") plt.show() return "Visualização finalizada!"
if __name__ == "__main__": doctest.testmod(verbose = True)