Código fonte de visual_bea

import pandas as pd
import matplotlib.pyplot as plt



[documentos] def frequencia_estado(df, coluna_estado, titulo): ''' Cria gráfico de barras com todos os estados do Brasil com sua frequencia no DataFrame Parameters ---------- df : pd.DataFrame coluna_estado : str Nome da coluna com os estados. titulo : str Título do gráfico. Returns ------- None. ''' # Contagem da frequência dos estados frequencia_estados = df[coluna_estado].value_counts() # Crie o gráfico de barras plt.figure(figsize=(10, 6)) frequencia_estados.plot(kind='bar', color='skyblue') plt.title(titulo) plt.xlabel('Estado') plt.ylabel('Frequência') plt.xticks(rotation=0) # Para não girar os rótulos dos estados # Exibir o gráfico plt.show()
# Exemplo de uso data = {'Estado': ['SP', 'RJ', 'MG', 'SP', 'MG', 'SP', 'RJ', 'MG', 'RJ']} df = pd.DataFrame(data) frequencia_estado(df, 'Estado', 'Frequência dos Estados do Brasil')
[documentos] def grafico_linha(dataframe, column_names, x_axis_label, y_axis_label, title): ''' Parameters ---------- dataframe : pd.DataFrame column_names : list lista com as colunas que você quer usar. x_axis_label : str nome para eixo x. y_axis_label : str nome para eixo y. title : str Returns ------- None. ''' for column_name in column_names: plt.plot(dataframe[x_axis_label], dataframe[column_name], marker='o', label=column_name) plt.xlabel(x_axis_label) plt.ylabel(y_axis_label) plt.title(title) plt.legend() plt.grid(True) plt.show()
[documentos] def grafico_barra(df, coluna_x, coluna_y, titulo, xlabel, ylabel): ''' Cria um gráfico de barras a partir de um DataFrame. Parameters ---------- df : pd.DataFrame coluna_x : str Nome da coluna para o eixo x coluna_y : str Nome da coluna para o eixo y. titulo : str xlabel : str Nome do eixo x. ylabel : str Nome do eixo y. Raises ------ ValueError DESCRIPTION. KeyError DESCRIPTION. Returns ------- None. ''' try: # Verifica se o DataFrame não é nulo (None) if df is None: raise ValueError("O DataFrame 'df' não pode ser nulo.") # Verifica se as colunas especificadas existem no DataFrame if coluna_x not in df.columns or coluna_y not in df.columns: raise KeyError("As colunas especificadas não existem no DataFrame.") # Extração dos dados do DataFrame x_data = df[coluna_x] y_data = df[coluna_y] # Detalhes do gráfico de barras plt.figure(figsize=(10, 6)) plt.bar(x_data, y_data, color='skyblue') plt.title(titulo) plt.xlabel(xlabel) plt.ylabel(ylabel) # Rotaciona os rótulos do eixo x para melhor legibilidade, se necessário plt.xticks(rotation=45) # Exibe o gráfico plt.tight_layout() plt.show() except ValueError as e: print(f"Erro ao criar o gráfico de barras: {str(e)}") except KeyError as e: print(f"Erro ao criar o gráfico de barras: {str(e)}") ''' Cria um gráfico que combina gráfico de linha com gráfico de barras a partir de um DataFrame. Parameters: df (pd.DataFrame): O DataFrame de onde os dados serão extraídos. x_col (str): Nome da coluna para o eixo x. y_linha (str): Nome da coluna para o eixo y do gráfico de linha. y_col (str): Nome da coluna para o eixo y do gráfico de barras. titulo (str): Título do gráfico. Raises: KeyError: Se uma ou mais colunas não forem encontradas no DataFrame. Returns: None. Example: >>> data = {'Ano': [2010, 2011, 2012, 2013, 2014], ... 'Vendas': [100, 120, 150, 140, 180], ... 'Lucro': [20, 30, 35, 25, 40]} >>> df = pd.DataFrame(data) >>> x_col = 'Ano' >>> y_linha = 'Vendas' >>> y_col = 'Lucro' >>> titulo = 'Vendas e Lucro Anuais' >>> grafico_linha_barra(df, x_col, y_linha, y_col, titulo) # Este comando deve exibir o gráfico ''' try: # Verifica se as colunas especificadas existem no DataFrame if not all(coluna in df.columns for coluna in [x_col, y_linha, y_col]): raise KeyError("Uma ou mais colunas não foram encontradas no DataFrame.") # Cria um gráfico de linha plt.figure(figsize=(10, 5)) plt.plot(df[x_col], df[y_linha], marker='o', color='b', label=y_linha) # Cria um gráfico de barras plt.bar(df[x_col], df[y_col], color='g', alpha=0.5, label=y_col) # Configurações do gráfico plt.title(titulo) plt.xlabel(x_col) plt.ylabel("Valores") plt.legend(loc='best') plt.grid(True) # Exibe o gráfico plt.show() except KeyError as e: print(f"Erro ao criar o gráfico combinado: {str(e)}")
[documentos] def grafico_pizza(df, coluna, titulo): ''' Cria um gráfico de pizza que mostra a distribuição das frequências dos elementos na coluna. Parameters ---------- df : pd.DataFrame coluna : str Nome da coluna específica a ser usada para o gráfico de pizza titulo : str Raises ------ KeyError DESCRIPTION. Returns ------- None. ''' try: # Verifica se a coluna selecionada existe no DataFrame if coluna not in df.columns: raise KeyError("A coluna não foi encontrada no DataFrame.") # Conta as frequências dos estados na coluna frequencias = df[coluna].value_counts() # Cria um gráfico de pizza com base nas frequências plt.figure(figsize=(6, 6)) plt.pie(frequencias, labels=frequencias.index, autopct='%1.1f%%', startangle=90) plt.title(titulo) plt.axis('equal') # Aspecto igual para que o gráfico seja uma pizza # Exibe o gráfico plt.show() except KeyError as e: print(f"Erro ao criar o gráfico de pizza: {str(e)}")
# colunas específicas
[documentos] def grafico_colunas_duplas(df_renda, df_notas): ''' Gera um gráfico de colunas duplas com as médias unificadas de renda e notas por estado. Parameters ---------- df_renda : pd.DataFrame DataFrame contendo as médias unificadas de renda por estado e a coluna 'CO_UF_PROVA'. df_notas : pd.DataFrame DataFrame contendo as médias unificadas de notas por estado e a coluna 'CO_UF_PROVA'. Raises ------ ValueError Se as colunas 'CO_UF_PROVA' não existirem nos DataFrames.. Returns ------- None. ''' try: # Verifica se as colunas 'CO_UF_PROVA' existem nos DataFrames if 'CO_UF_PROVA' not in df_renda.columns or 'CO_UF_PROVA' not in df_notas.columns: raise ValueError("As colunas 'CO_UF_PROVA' não existem nos DataFrames.") # Mesclar os DataFrames com base na coluna 'CO_UF_PROVA' independentemente da ordem df_merged = df_renda.merge(df_notas, on='CO_UF_PROVA', how='outer') # Configurar as posições das barras no gráfico posicoes = range(len(df_merged['CO_UF_PROVA'])) # Largura das barras largura = 0.4 # Criar o gráfico de colunas duplas plt.bar(posicoes, df_merged['Renda_unificada'], largura, label='Renda unificada') plt.bar([pos + largura for pos in posicoes], df_merged['Nota_unificada'], largura, label='Nota unificada') # Configurar rótulos dos estados no eixo x plt.xticks([pos + largura / 2 for pos in posicoes], df_merged['CO_UF_PROVA']) # Rotular os eixos plt.xlabel('Estados') plt.ylabel('Valores') # Adicionar legenda plt.legend() # Mostrar o gráfico plt.show() except ValueError as e: print(f"Erro ao gerar o gráfico: {str(e)}")