├── Arquivos ├── pedidos.txt ├── vendas_1.xlsx ├── vendas_2.xlsx └── tratamentodedados_pandas.py ├── Relatório Final.xlsx ├── Desafio ├── Relatório final.xlsx ├── Arquivos │ ├── detalhamento.xlsx │ ├── Estória do Usuário.xlsx │ └── projeto_desafiofinal.py └── Projeto_DesafioFinal.ipynb ├── Etapas_TratamentoDeDados.jpg ├── README.md └── TratamentoDeDados_Pandas.ipynb /Arquivos/pedidos.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Arquivos/pedidos.txt -------------------------------------------------------------------------------- /Relatório Final.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Relatório Final.xlsx -------------------------------------------------------------------------------- /Arquivos/vendas_1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Arquivos/vendas_1.xlsx -------------------------------------------------------------------------------- /Arquivos/vendas_2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Arquivos/vendas_2.xlsx -------------------------------------------------------------------------------- /Desafio/Relatório final.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Desafio/Relatório final.xlsx -------------------------------------------------------------------------------- /Etapas_TratamentoDeDados.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Etapas_TratamentoDeDados.jpg -------------------------------------------------------------------------------- /Desafio/Arquivos/detalhamento.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Desafio/Arquivos/detalhamento.xlsx -------------------------------------------------------------------------------- /Desafio/Arquivos/Estória do Usuário.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luislauriano/Manipulacao_Tratamento_De_Dados/master/Desafio/Arquivos/Estória do Usuário.xlsx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Manipulação e Tratamento de Dados 2 | 3 | O objetivo do curso foi através da manipulação dos dados, preparar e tratar os dados de arquivos em excel e csv da empresa, como vendas e materiais. Para gerar um único arquivo, conjunto de dados no formato excel que irá servir como relatório, indicador para a empresa. Se os arquivos que foram tratados e preparados para gerar o relatório forem alterados, o executável estará pronto para gerar um novo relatório, um conjunto de dados atualizado. Para receber o certificado do curso foi preciso realizar um desafio com os mesmos objetivos. 4 | 5 | * **Notebook do curso:** http://abre.ai/tratamento_de_dados 6 | * **Relatório final em excel:** http://abre.ai/relatorio_final 7 | * **Notebook do projeto:** http://abre.ai/projeto_de_tratamento_de_dados 8 | -------------------------------------------------------------------------------- /Desafio/Arquivos/projeto_desafiofinal.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """Projeto_DesafioFinal.ipynb 3 | 4 | Automatically generated by Colaboratory. 5 | 6 | Original file is located at 7 | https://colab.research.google.com/drive/1VKcaKOqrIxvrhdA_w9QnH7eE1p0kYc6e 8 | 9 | # **Atividades** 10 | * 1. Leitura de arquivos 11 | * 2. Tratamento de dados 12 | * 2.1. Renomear colunas 13 | * 2.2. Verificar tipos 14 | * 2.3. Deletar dados 15 | * 3. Concatenar Tabelas 16 | * 4. Correlação de Tabelas 17 | * 5. Regra de Negócio 18 | * 6. Exportar Dados 19 | 20 | Ojetivo: Através da manipulação dos dados, preparar e tratar os dados dos conjunto de dados de vendas e detalhamento. Para gerar uma unica base de dados, que irá servir como relatório, indicador. 21 | 22 | # **Importar biblioteca** 23 | """ 24 | 25 | import pandas as pd 26 | 27 | """# **Leitura de arquivos** 28 | 29 | # Arquivos CSV 30 | """ 31 | 32 | df_vendas = pd.read_csv('vendas.csv', sep ='|') 33 | 34 | """# Arquivos XLSX""" 35 | 36 | df_detalhamentoAM = pd.read_excel('detalhamento.xlsx', sheet_name='AM', skiprows=1 ) 37 | df_detalhamentoRR = pd.read_excel('detalhamento.xlsx', sheet_name='RR', skiprows=1 ) 38 | df_detalhamentoRO = pd.read_excel('detalhamento.xlsx', sheet_name='RO', skiprows=1 ) 39 | df_detalhamentoAC = pd.read_excel('detalhamento.xlsx', sheet_name='AC', skiprows=1 ) 40 | 41 | """# **Tratamento de Dados** 42 | 43 | ## Renomeando colunas 44 | """ 45 | 46 | df_vendas.columns = ['escritorio', 'operadora', 'material', 'data', 'valor_liquido'] 47 | df_vendas.head(3) 48 | 49 | df_detalhamentoAM.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto'] 50 | df_detalhamentoAM.head(3) 51 | 52 | df_detalhamentoRR.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto'] 53 | df_detalhamentoRR.head(3) 54 | 55 | df_detalhamentoRO.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto'] 56 | df_detalhamentoRO.head(3) 57 | 58 | df_detalhamentoAC.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto'] 59 | df_detalhamentoAC.head(3) 60 | 61 | """## Verificar tipos de dados 62 | 63 | ### Verificar tipos 64 | """ 65 | 66 | df_vendas.dtypes 67 | 68 | df_detalhamentoAM.dtypes 69 | 70 | df_detalhamentoRR.dtypes 71 | 72 | df_detalhamentoRO.dtypes 73 | 74 | df_detalhamentoAC.dtypes 75 | 76 | """### Alterando tipo de uma coluna""" 77 | 78 | df_vendas['valor_liquido'] = df_vendas['valor_liquido'].astype(int) 79 | 80 | """## Deletar dados""" 81 | 82 | df_vendas = df_vendas[['escritorio', 'operadora', 'valor_liquido']].copy() 83 | 84 | df_detalhamentoAM = df_detalhamentoAM[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy() 85 | df_detalhamentoRR = df_detalhamentoRR[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy() 86 | df_detalhamentoRO = df_detalhamentoRO[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy() 87 | df_detalhamentoAC = df_detalhamentoAC[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy() 88 | 89 | """# Concatenar tabelas (Juntar tabelas)""" 90 | 91 | print('Amazonas(AM): ') 92 | print(f'Linhas: {df_detalhamentoAM.shape[0]}') 93 | print(f'Colunas {df_detalhamentoAM.shape[1]}') 94 | 95 | print('Roraima(RR): ') 96 | print(f'Linhas: {df_detalhamentoRR.shape[0]}') 97 | print(f'Colunas {df_detalhamentoRR.shape[1]}') 98 | 99 | print('Rondônia(RO): ') 100 | print(f'Linhas: {df_detalhamentoRO.shape[0]}') 101 | print(f'Colunas {df_detalhamentoRO.shape[1]}') 102 | 103 | print('Acre(AC): ') 104 | print(f'Linhas: {df_detalhamentoAC.shape[0]}') 105 | print(f'Colunas {df_detalhamentoAC.shape[1]}') 106 | 107 | """Agora vamos unificar todos esses conjuntos de dados em um único DF""" 108 | 109 | df_detalhamento = pd.concat([df_detalhamentoAM,df_detalhamentoRR, df_detalhamentoRO, df_detalhamentoAC]) 110 | 111 | df_detalhamento = df_detalhamento.reset_index(drop=True) 112 | df_detalhamento 113 | 114 | """# **Correlação de Tabelas** 115 | 116 | ## Agrupamento de dados 117 | """ 118 | 119 | df_vendas = df_vendas.groupby(['operadora', 'escritorio']).agg({'valor_liquido':'sum'}) 120 | df_vendas.sort_values(ascending=False, by='valor_liquido').reset_index() 121 | 122 | df_detalhamento = df_detalhamento.groupby(['loja', 'operadora', 'escritorio']).agg({'valor_bruto':'sum'}).reset_index() 123 | df_detalhamento.sort_values(ascending=False, by='valor_bruto').reset_index() 124 | 125 | """## Merge de tabelas""" 126 | 127 | df_relatorio = pd.merge(df_detalhamento, df_vendas, on=['operadora', 'escritorio'], how='right') 128 | 129 | df_relatorio.head(5) 130 | 131 | """### Tratando o pós merge 132 | 133 | Na minha análise não encontrei valores faltantes. Mas mesmo assim vou utilizar o fillna para substituir os mesmos por 0 se houver. 134 | """ 135 | 136 | df_relatorio = df_relatorio.fillna(0) 137 | 138 | """# **Regra de Negócio**""" 139 | 140 | def status(valor_liquido, valor_bruto): 141 | if (valor_liquido != valor_bruto): 142 | return 'alerta' 143 | else: 144 | return '' 145 | 146 | df_relatorio['status'] = df_relatorio.apply(lambda row: status(row['valor_liquido'], row['valor_bruto']), axis='columns') 147 | 148 | df_relatorio 149 | 150 | """# **Exportanto Dados**""" 151 | 152 | writer = pd.ExcelWriter('Relatório final.xlsx') 153 | 154 | df_relatorio.to_excel(writer, sheet_name='relatorio', index=False) 155 | 156 | writer.save() -------------------------------------------------------------------------------- /Arquivos/tratamentodedados_pandas.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """TratamentoDeDados_Pandas.ipynb 3 | 4 | Automatically generated by Colaboratory. 5 | 6 | Original file is located at 7 | https://colab.research.google.com/drive/1WWTXf7I0KPJRbxMKQcIojnvYIbBktkhS 8 | """ 9 | 10 | import pandas as pd 11 | 12 | """# **Leitura de Arquivos** 13 | 14 | ## Arquivos CSV e TXT 15 | 16 | pd.read_csv('nome_do_arquivo.extensao', sep = 'caracter que sepada os dados', skiprows = numero de linhas a serem puladas) 17 | """ 18 | 19 | df_materiais = pd.read_csv('materiais.csv',sep=';') 20 | 21 | df_pedidos = pd.read_csv('pedidos.txt',sep='|',skiprows=2, encoding = 'latin-1') 22 | 23 | """## Arquivos XLSX 24 | 25 | pd.read_excel('nome_do_arquivo.extensao', sheet_name='nome da aba', skiprows = numero de linhas a serem puladas) 26 | """ 27 | 28 | df_vendas1 = pd.read_excel('vendas_1.xlsx',sheet_name='vendas') 29 | 30 | df_vendas2 = pd.read_excel('vendas_2.xlsx',sheet_name='vendas') 31 | 32 | """# **Tratamento de Dados** 33 | 34 | ## Renomeando colunas 35 | 36 | df.rename(columns={'coluna_antiga':'coluna_nova', 'coluna_antiga2': 'coluna_nova2'}) 37 | """ 38 | 39 | df_materiais = df_materiais.rename(columns = {'Material':'material','Texto breve material':'texto_breve'}) 40 | 41 | """df.columns = ['coluna_nova','coluna_nova2',...]""" 42 | 43 | df_pedidos.columns = ['fornecedor','material','qtd_pedido','texto_breve','qtd_estoque'] 44 | 45 | df_vendas1.columns = ['data','material','qtd_vendas'] 46 | 47 | df_vendas2.columns = ['data','material','qtd_vendas'] 48 | 49 | """## Verificar tipos de dados 50 | 51 | ### Verificar tipos 52 | 53 | df.dtypes 54 | | df['coluna'].dtype 55 | """ 56 | 57 | df_materiais.dtypes 58 | 59 | df_pedidos.dtypes 60 | 61 | df_vendas1.dtypes 62 | 63 | df_vendas2.dtypes 64 | 65 | """### Alterando tipode de uma coluna 66 | 67 | df['coluna'].astype() (int ou float ou str) 68 | """ 69 | 70 | df_pedidos['qtd_pedido'] = df_pedidos['qtd_pedido'].astype(int) 71 | 72 | """## Eliminando Dados 73 | 74 | df.drop(['coluna2','coluna3'],axis='columns') 75 | 76 | df.drop([1,2],axis='index') 77 | """ 78 | 79 | df_materiais = df_materiais.drop(['texto_breve'],axis='columns') 80 | 81 | """df[['coluna2','coluna1']].copy()""" 82 | 83 | df_pedidos = df_pedidos[['material','qtd_pedido','qtd_estoque']].copy() 84 | 85 | df_vendas1 = df_vendas1[['material','qtd_vendas']].copy() 86 | 87 | df_vendas2 = df_vendas2[['material','qtd_vendas']].copy() 88 | 89 | """# Concatenar tabelas (Juntar tabelas)""" 90 | 91 | df_vendas1.dtypes 92 | 93 | df_vendas2.dtypes 94 | 95 | """pd.concat([df_vendas1,df_vendas2])""" 96 | 97 | df_vendas1.shape 98 | 99 | df_vendas2.shape 100 | 101 | df_vendas = pd.concat([df_vendas1,df_vendas2]) 102 | 103 | df_vendas = df_vendas.reset_index(drop=True) 104 | 105 | """# **Correlação de Tabelas** 106 | 107 | ## Agrupamento de dados 108 | 109 | df.groupby(['colunas a serem agrupadas']).agg({'coluna1':'sum','coluna2':'mean','coluna3':'max', 'coluna4':'min','coluna5':'first'}).reset_index() 110 | 111 | 1. lista = [colunas a serem agrupadas] 112 | 2. dict = {'coluna_x':'funcao'} 113 | 114 | Agora para aqueles materiais(linhas) iguais que estao se repetindo após a concatenação, vamos somar os seus valores e tranformar em unico registro (linha). 115 | 116 | Vamos usar o **groupby** para agrupar e **sum** para somar 117 | """ 118 | 119 | df_pedidos = df_pedidos.groupby(['material']).agg({'qtd_pedido':'sum','qtd_estoque':'sum'}).reset_index() 120 | 121 | df_vendas = df_vendas.groupby(['material']).agg({'qtd_vendas':'sum'}).reset_index() 122 | 123 | df_vendas.head() 124 | 125 | """## Merge de tabelas 126 | 127 | Utilizado para unir duas tabelas através de uma ou 128 | mais colunas em comum 129 | 130 | pd.merge(df_tabela_esquerda,df_tabela_direita, on=['colunas em comum'], how='método de correlação (priorização') 131 | 132 | how poder ser: left (esquerda), rigth (direita), inner (apenas itens em comum), outer (todos os itens) 133 | """ 134 | 135 | df_relatorio = pd.merge(df_materiais,df_pedidos, on=['material'], how='left') 136 | 137 | df_relatorio = pd.merge(df_relatorio,df_vendas, on=['material'], how='left') 138 | 139 | """### Tratando o pós merge 140 | 141 | df.fillna(qualquer valor para substituir os NaN) 142 | 143 | df['coluna'] = df['coluna'].fillna(qualquer valor para substituir os NaN) 144 | """ 145 | 146 | df_relatorio.head(3) 147 | 148 | df_relatorio = df_relatorio.fillna(0) 149 | 150 | df_relatorio.head(2) 151 | 152 | df_relatorio[['qtd_pedido','qtd_estoque','qtd_vendas']] = df_relatorio[['qtd_pedido','qtd_estoque','qtd_vendas']].astype(int) 153 | 154 | """# **Regra de Negócio** 155 | 156 | ## Operações entre colunas (sem condicional) 157 | """ 158 | 159 | df_relatorio['qtd_loja'] = df_relatorio['qtd_pedido'] + df_relatorio['qtd_estoque'] 160 | 161 | df_relatorio = df_relatorio[['material','qtd_loja','qtd_vendas']].copy() 162 | 163 | """## Operações entre colunas (com condicional)""" 164 | 165 | def calcular_porcentagem(loja,vendas): 166 | if (vendas!=0): 167 | porcentagem = loja/vendas 168 | return porcentagem 169 | elif ((vendas==0) and (loja!=0)): 170 | return 1.2 171 | else: 172 | return 0 173 | 174 | """A partir dessa função vamos criar uma nova coluna, a coluna porcentagem. E para aplicar a função para todas as linhas do df_relatorio vamos usar lambda. 175 | 176 | df.apply(lambda row: funcao(row['coluna_x'] (paramêtro) ,row['coluna_y'] (paramêtro), axis='columns') 177 | """ 178 | 179 | df_relatorio['porcentagem'] = df_relatorio.apply(lambda row: calcular_porcentagem(row['qtd_loja'],row['qtd_vendas']), axis='columns') 180 | 181 | """O **row** serve para aplicar a coluna que deve ser passada como paramêtro para a função que criamos, **calcular_porcentagem** 182 | 183 | Agora vamos criar uma nova coluna, a coluna status. Também vamos usar lambda p/ aplicar a função de status que vamos criar p/ todas as linhas do df_relatorio. 184 | """ 185 | 186 | def verificar_status(porc): 187 | if (porc>=1.2): 188 | return 'alerta' 189 | else: 190 | return '' 191 | 192 | df_relatorio['status'] = df_relatorio.apply(lambda row: verificar_status(row['porcentagem']), axis='columns') 193 | 194 | """Veja que aqui só usamos uma coluna, porque a nossa função status só utiliza um paramêtro. Entao só passamos uma coluna como paramêtro. 195 | 196 | # **Filtro de dados** 197 | 198 | df[(condicao do filtro)] 199 | 200 | and - & 201 | or - | 202 | 203 | Vamos filtrar, visualizar apenas os valores da coluna status que sejam diferentes de alerta e (and) e os valores em que a coluna de loja sejam diferentes de 0. 204 | """ 205 | 206 | # Apenas para visualizar possibilidade 207 | 208 | df_relatorio[(df_relatorio['status']!='alerta') & (df_relatorio['qtd_loja']!=0)].head(5) 209 | 210 | """# **Ordenar dados** 211 | 212 | df.sort_values([colunas a serem ordenadas], ascending=True) - crescente 213 | 214 | df.sort_values([colunas a serem ordenadas], ascending=False) - decrescente 215 | """ 216 | 217 | # Apenas para visualizar possibilidade 218 | 219 | df_relatorio.sort_values(['qtd_loja'], ascending=False) 220 | 221 | """# **Exportanto Dados** 222 | 223 | df.to_csv('nome_do_arquivo.csv', sep='caracter para separar os dados', index=False) 224 | """ 225 | 226 | df_relatorio.to_csv('Relatório_Final.csv',sep=';',index=False) 227 | 228 | """Vamos agora exportar para excel, o tipo de exportação mais utilizado 229 | 230 | writer = pd.ExcelWriter('Relatório Final.xlsx') 231 | 232 | df.to_excel(writer, sheet_name='nome_aba1', index=False) 233 | df.to_excel(writer, sheet_name='nome_aba2',index=False) 234 | 235 | writer.save() 236 | """ 237 | 238 | writer = pd.ExcelWriter('Relatório Final.xlsx') 239 | 240 | df_relatorio.to_excel(writer, sheet_name='relatorio', index=False) 241 | 242 | writer.save() 243 | 244 | """O index = False retira o index do nosso arquivo em excel 245 | 246 | Podemos colocar um executavel do python em uma mesma pasta com os arquivos que foram utilizados para criar nosso conjunto de dados. Assim poderiamos alterar os arquivos e ao dar dois cliques no executavel (esse notebook que criamos) ele já atualiza um novo conjunto de dados. 247 | """ -------------------------------------------------------------------------------- /Desafio/Projeto_DesafioFinal.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Projeto_DesafioFinal.ipynb","provenance":[{"file_id":"1296xplKwCNKgjQDer7bZ8G99RORk93zt","timestamp":1588894379227}],"authorship_tag":"ABX9TyMBbx/pC+ld7Db+2JVDz/jd"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"Cq8Xsy_32hyS","colab_type":"text"},"source":["# **Atividades**\n","* 1. Leitura de arquivos\n","* 2. Tratamento de dados\n"," * 2.1. Renomear colunas\n"," * 2.2. Verificar tipos\n"," * 2.3. Deletar dados\n","* 3. Concatenar Tabelas\n","* 4. Correlação de Tabelas\n","* 5. Regra de Negócio\n","* 6. Exportar Dados"]},{"cell_type":"markdown","metadata":{"id":"3emU6dK83ang","colab_type":"text"},"source":["Ojetivo: Através da manipulação dos dados, preparar e tratar os dados dos conjunto de dados de vendas e detalhamento. Para gerar uma unica base de dados, que irá servir como relatório, indicador. "]},{"cell_type":"markdown","metadata":{"id":"KoRf_kyF4rVg","colab_type":"text"},"source":["# **Importar biblioteca**"]},{"cell_type":"code","metadata":{"id":"7X1bIjc14IxZ","colab_type":"code","colab":{}},"source":["import pandas as pd"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"41RW2g9d4yYn","colab_type":"text"},"source":["# **Leitura de arquivos**"]},{"cell_type":"markdown","metadata":{"id":"qCLjPMLy8N2W","colab_type":"text"},"source":["# Arquivos CSV"]},{"cell_type":"code","metadata":{"id":"pR3N-j2V8Qz-","colab_type":"code","colab":{}},"source":["df_vendas = pd.read_csv('vendas.csv', sep ='|')"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"e4UPHjZC8U0H","colab_type":"text"},"source":["# Arquivos XLSX"]},{"cell_type":"code","metadata":{"id":"azb_Ym-X4wlG","colab_type":"code","colab":{}},"source":["df_detalhamentoAM = pd.read_excel('detalhamento.xlsx', sheet_name='AM', skiprows=1 )\n","df_detalhamentoRR = pd.read_excel('detalhamento.xlsx', sheet_name='RR', skiprows=1 )\n","df_detalhamentoRO = pd.read_excel('detalhamento.xlsx', sheet_name='RO', skiprows=1 )\n","df_detalhamentoAC = pd.read_excel('detalhamento.xlsx', sheet_name='AC', skiprows=1 )"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"u5k9XhXS8m_2","colab_type":"text"},"source":["# **Tratamento de Dados**"]},{"cell_type":"markdown","metadata":{"id":"K9y_tRY28rDq","colab_type":"text"},"source":["## Renomeando colunas"]},{"cell_type":"code","metadata":{"id":"Zjd93Kcn87jm","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":142},"outputId":"e2c5bbaf-aaaf-492b-970d-5e42338e98e7","executionInfo":{"status":"ok","timestamp":1588962798609,"user_tz":180,"elapsed":2384,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_vendas.columns = ['escritorio', 'operadora', 'material', 'data', 'valor_liquido']\n","df_vendas.head(3)"],"execution_count":550,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
escritoriooperadoramaterialdatavalor_liquido
0101Vivo131318 RECARGA VIRTUAL VIVO R$ 1,0002.01.202020.0
1101Vivo131318 RECARGA VIRTUAL VIVO R$ 1,0030.12.201910.0
2101Vivo131318 RECARGA VIRTUAL VIVO R$ 1,0004.01.202020.0
\n","
"],"text/plain":[" escritorio operadora ... data valor_liquido\n","0 101 Vivo ... 02.01.2020 20.0\n","1 101 Vivo ... 30.12.2019 10.0\n","2 101 Vivo ... 04.01.2020 20.0\n","\n","[3 rows x 5 columns]"]},"metadata":{"tags":[]},"execution_count":550}]},{"cell_type":"code","metadata":{"id":"71Vav_rn89GO","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":142},"outputId":"fc03a6f9-681d-406e-90ad-8ec0e7f76359","executionInfo":{"status":"ok","timestamp":1588962798611,"user_tz":180,"elapsed":2304,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamentoAM.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto']\n","df_detalhamentoAM.head(3)"],"execution_count":551,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaescritorioufoperadoravalor_bruto
0BEMOL AVENIDA103AMClaro2651
1BEMOL AVENIDA103AMOi3309
2BEMOL AVENIDA103AMTim1550
\n","
"],"text/plain":[" loja escritorio uf operadora valor_bruto\n","0 BEMOL AVENIDA 103 AM Claro 2651\n","1 BEMOL AVENIDA 103 AM Oi 3309\n","2 BEMOL AVENIDA 103 AM Tim 1550"]},"metadata":{"tags":[]},"execution_count":551}]},{"cell_type":"code","metadata":{"id":"pLTqJdlm-zmJ","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":142},"outputId":"b4097f47-3aa4-42ea-d3b7-0a6ad7e04f48","executionInfo":{"status":"ok","timestamp":1588962798613,"user_tz":180,"elapsed":2224,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamentoRR.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto']\n","df_detalhamentoRR.head(3)"],"execution_count":552,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaescritorioufoperadoravalor_bruto
0BEMOL BOA VISTA701RRClaro140
1BEMOL BOA VISTA701RROi20
2BEMOL BOA VISTA701RRTim135
\n","
"],"text/plain":[" loja escritorio uf operadora valor_bruto\n","0 BEMOL BOA VISTA 701 RR Claro 140\n","1 BEMOL BOA VISTA 701 RR Oi 20\n","2 BEMOL BOA VISTA 701 RR Tim 135"]},"metadata":{"tags":[]},"execution_count":552}]},{"cell_type":"code","metadata":{"id":"LYYiy5Pa-6zg","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":142},"outputId":"90d7db70-519f-44ef-b464-3f3de401a849","executionInfo":{"status":"ok","timestamp":1588962798614,"user_tz":180,"elapsed":2170,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamentoRO.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto']\n","df_detalhamentoRO.head(3)"],"execution_count":553,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaescritorioufoperadoravalor_bruto
0BEMOL FARMA PORTO VELHO609ROClaro486
1BEMOL FARMA PORTO VELHO609ROOi90
2BEMOL FARMA PORTO VELHO609ROTim90
\n","
"],"text/plain":[" loja escritorio uf operadora valor_bruto\n","0 BEMOL FARMA PORTO VELHO 609 RO Claro 486\n","1 BEMOL FARMA PORTO VELHO 609 RO Oi 90\n","2 BEMOL FARMA PORTO VELHO 609 RO Tim 90"]},"metadata":{"tags":[]},"execution_count":553}]},{"cell_type":"code","metadata":{"id":"xTO0uH3i_IRA","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":142},"outputId":"45a1e869-19c4-487d-9b66-723eea19c591","executionInfo":{"status":"ok","timestamp":1588962798615,"user_tz":180,"elapsed":2109,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamentoAC.columns = ['loja', 'escritorio', 'uf', 'operadora', 'valor_bruto']\n","df_detalhamentoAC.head(3)"],"execution_count":554,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaescritorioufoperadoravalor_bruto
0BEMOL RIO BRANCO401ACClaro500
1BEMOL RIO BRANCO401ACOi375
2BEMOL RIO BRANCO401ACTim125
\n","
"],"text/plain":[" loja escritorio uf operadora valor_bruto\n","0 BEMOL RIO BRANCO 401 AC Claro 500\n","1 BEMOL RIO BRANCO 401 AC Oi 375\n","2 BEMOL RIO BRANCO 401 AC Tim 125"]},"metadata":{"tags":[]},"execution_count":554}]},{"cell_type":"markdown","metadata":{"id":"XBJ7PUeX_ojb","colab_type":"text"},"source":["## Verificar tipos de dados"]},{"cell_type":"markdown","metadata":{"id":"-I8eyVFX_-kF","colab_type":"text"},"source":["### Verificar tipos"]},{"cell_type":"code","metadata":{"id":"9E4V0A1F_3ku","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":119},"outputId":"72764df7-b485-4538-d414-b7515cf3f8fc","executionInfo":{"status":"ok","timestamp":1588962798617,"user_tz":180,"elapsed":2052,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_vendas.dtypes"],"execution_count":555,"outputs":[{"output_type":"execute_result","data":{"text/plain":["escritorio int64\n","operadora object\n","material object\n","data object\n","valor_liquido float64\n","dtype: object"]},"metadata":{"tags":[]},"execution_count":555}]},{"cell_type":"code","metadata":{"id":"dPEgRE5qAEs0","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":119},"outputId":"36bb18ca-0a92-433f-bfe5-28635b12672b","executionInfo":{"status":"ok","timestamp":1588962798618,"user_tz":180,"elapsed":1976,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamentoAM.dtypes"],"execution_count":556,"outputs":[{"output_type":"execute_result","data":{"text/plain":["loja object\n","escritorio int64\n","uf object\n","operadora object\n","valor_bruto int64\n","dtype: object"]},"metadata":{"tags":[]},"execution_count":556}]},{"cell_type":"code","metadata":{"colab_type":"code","outputId":"dc774eac-4afa-4a06-e651-8b68d91e5318","executionInfo":{"status":"ok","timestamp":1588962798619,"user_tz":180,"elapsed":1903,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}},"id":"crpBh_3lAR4q","colab":{"base_uri":"https://localhost:8080/","height":119}},"source":["df_detalhamentoRR.dtypes"],"execution_count":557,"outputs":[{"output_type":"execute_result","data":{"text/plain":["loja object\n","escritorio int64\n","uf object\n","operadora object\n","valor_bruto int64\n","dtype: object"]},"metadata":{"tags":[]},"execution_count":557}]},{"cell_type":"code","metadata":{"colab_type":"code","outputId":"aaa9b412-6553-4a47-d99c-ef332a1f52f9","executionInfo":{"status":"ok","timestamp":1588962799565,"user_tz":180,"elapsed":2790,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}},"id":"nx7eR1kPAThv","colab":{"base_uri":"https://localhost:8080/","height":119}},"source":["df_detalhamentoRO.dtypes"],"execution_count":558,"outputs":[{"output_type":"execute_result","data":{"text/plain":["loja object\n","escritorio int64\n","uf object\n","operadora object\n","valor_bruto int64\n","dtype: object"]},"metadata":{"tags":[]},"execution_count":558}]},{"cell_type":"code","metadata":{"colab_type":"code","outputId":"f4e2652b-3a11-463d-a19c-60d8a4fd0067","executionInfo":{"status":"ok","timestamp":1588962799567,"user_tz":180,"elapsed":2713,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}},"id":"hoVPgUY0AVRy","colab":{"base_uri":"https://localhost:8080/","height":119}},"source":["df_detalhamentoAC.dtypes"],"execution_count":559,"outputs":[{"output_type":"execute_result","data":{"text/plain":["loja object\n","escritorio int64\n","uf object\n","operadora object\n","valor_bruto int64\n","dtype: object"]},"metadata":{"tags":[]},"execution_count":559}]},{"cell_type":"markdown","metadata":{"id":"XGjBkpAcCvEl","colab_type":"text"},"source":["### Alterando tipo de uma coluna"]},{"cell_type":"code","metadata":{"id":"sQs2tEPUCy8N","colab_type":"code","colab":{}},"source":["df_vendas['valor_liquido'] = df_vendas['valor_liquido'].astype(int)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"A7H5VO4FBz48","colab_type":"text"},"source":["## Deletar dados"]},{"cell_type":"code","metadata":{"id":"nCJn1Uh_B3k3","colab_type":"code","colab":{}},"source":["df_vendas = df_vendas[['escritorio', 'operadora', 'valor_liquido']].copy()"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"sxtAfp0MCNph","colab_type":"code","colab":{}},"source":["df_detalhamentoAM = df_detalhamentoAM[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy()\n","df_detalhamentoRR = df_detalhamentoRR[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy()\n","df_detalhamentoRO = df_detalhamentoRO[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy()\n","df_detalhamentoAC = df_detalhamentoAC[['loja', 'escritorio', 'operadora', 'valor_bruto']].copy()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"c-0xnQOREOGl","colab_type":"text"},"source":["# Concatenar tabelas (Juntar tabelas)"]},{"cell_type":"code","metadata":{"id":"MTjNJyz8ESw4","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":68},"outputId":"c1e8ea9b-23e7-45d6-b021-bc93bee5807a","executionInfo":{"status":"ok","timestamp":1588962799575,"user_tz":180,"elapsed":2565,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["print('Amazonas(AM): ')\n","print(f'Linhas: {df_detalhamentoAM.shape[0]}')\n","print(f'Colunas {df_detalhamentoAM.shape[1]}')"],"execution_count":563,"outputs":[{"output_type":"stream","text":["Amazonas(AM): \n","Linhas: 126\n","Colunas 4\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"_PA1z9m8Ezg0","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":68},"outputId":"d39bc9de-082b-4331-d7e3-a35704ab99af","executionInfo":{"status":"ok","timestamp":1588962799577,"user_tz":180,"elapsed":2533,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["print('Roraima(RR): ')\n","print(f'Linhas: {df_detalhamentoRR.shape[0]}')\n","print(f'Colunas {df_detalhamentoRR.shape[1]}')"],"execution_count":564,"outputs":[{"output_type":"stream","text":["Roraima(RR): \n","Linhas: 8\n","Colunas 4\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"PisJfK7hFQaH","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":68},"outputId":"19df1fba-e11b-4b02-ebd5-21ef06db4184","executionInfo":{"status":"ok","timestamp":1588962799579,"user_tz":180,"elapsed":2507,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["print('Rondônia(RO): ')\n","print(f'Linhas: {df_detalhamentoRO.shape[0]}')\n","print(f'Colunas {df_detalhamentoRO.shape[1]}')"],"execution_count":565,"outputs":[{"output_type":"stream","text":["Rondônia(RO): \n","Linhas: 24\n","Colunas 4\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"OBsTi0YQFmDR","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":68},"outputId":"e6cd4f30-94ad-48f9-effd-946d89e4b32d","executionInfo":{"status":"ok","timestamp":1588962799580,"user_tz":180,"elapsed":2474,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["print('Acre(AC): ')\n","print(f'Linhas: {df_detalhamentoAC.shape[0]}')\n","print(f'Colunas {df_detalhamentoAC.shape[1]}')"],"execution_count":566,"outputs":[{"output_type":"stream","text":["Acre(AC): \n","Linhas: 4\n","Colunas 4\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"HCALI1SoGTmd","colab_type":"text"},"source":["Agora vamos unificar todos esses conjuntos de dados em um único DF"]},{"cell_type":"code","metadata":{"id":"FkpuDsmdFu7u","colab_type":"code","colab":{}},"source":["df_detalhamento = pd.concat([df_detalhamentoAM,df_detalhamentoRR, df_detalhamentoRO, df_detalhamentoAC])"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"e0I_QywJGwz2","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":419},"outputId":"674ba9e6-f445-42e4-eff8-040cb7757475","executionInfo":{"status":"ok","timestamp":1588962799582,"user_tz":180,"elapsed":2421,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamento = df_detalhamento.reset_index(drop=True)\n","df_detalhamento"],"execution_count":568,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaescritoriooperadoravalor_bruto
0BEMOL AVENIDA103Claro2651
1BEMOL AVENIDA103Oi3309
2BEMOL AVENIDA103Tim1550
3BEMOL AVENIDA103Vivo4739
4BEMOL BARROSO107Claro1495
...............
157LOJA BEMOL JI-PARANA205Claro123
158BEMOL RIO BRANCO401Claro500
159BEMOL RIO BRANCO401Oi375
160BEMOL RIO BRANCO401Tim125
161BEMOL RIO BRANCO401Vivo343
\n","

162 rows × 4 columns

\n","
"],"text/plain":[" loja escritorio operadora valor_bruto\n","0 BEMOL AVENIDA 103 Claro 2651\n","1 BEMOL AVENIDA 103 Oi 3309\n","2 BEMOL AVENIDA 103 Tim 1550\n","3 BEMOL AVENIDA 103 Vivo 4739\n","4 BEMOL BARROSO 107 Claro 1495\n",".. ... ... ... ...\n","157 LOJA BEMOL JI-PARANA 205 Claro 123\n","158 BEMOL RIO BRANCO 401 Claro 500\n","159 BEMOL RIO BRANCO 401 Oi 375\n","160 BEMOL RIO BRANCO 401 Tim 125\n","161 BEMOL RIO BRANCO 401 Vivo 343\n","\n","[162 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":568}]},{"cell_type":"markdown","metadata":{"id":"5LhLOHgPLJeE","colab_type":"text"},"source":["# **Correlação de Tabelas**"]},{"cell_type":"markdown","metadata":{"id":"V5o4Rov1MnhI","colab_type":"text"},"source":["## Agrupamento de dados"]},{"cell_type":"code","metadata":{"id":"UgK_bDLSOGU4","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":419},"outputId":"f7f33063-66df-481a-dce7-994813efc28b","executionInfo":{"status":"ok","timestamp":1588962799582,"user_tz":180,"elapsed":2385,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_vendas = df_vendas.groupby(['operadora', 'escritorio']).agg({'valor_liquido':'sum'})\n","df_vendas.sort_values(ascending=False, by='valor_liquido').reset_index()"],"execution_count":569,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
operadoraescritoriovalor_liquido
0Vivo1034739
1Vivo1154616
2Vivo6044474
3Vivo5003751
4Vivo1063717
............
158Oi70120
159Tim53020
160Vivo20615
161Tim61410
162Tim61110
\n","

163 rows × 3 columns

\n","
"],"text/plain":[" operadora escritorio valor_liquido\n","0 Vivo 103 4739\n","1 Vivo 115 4616\n","2 Vivo 604 4474\n","3 Vivo 500 3751\n","4 Vivo 106 3717\n",".. ... ... ...\n","158 Oi 701 20\n","159 Tim 530 20\n","160 Vivo 206 15\n","161 Tim 614 10\n","162 Tim 611 10\n","\n","[163 rows x 3 columns]"]},"metadata":{"tags":[]},"execution_count":569}]},{"cell_type":"code","metadata":{"id":"RtXcTrj6Q0W8","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":419},"outputId":"06d68b08-97e9-4077-8931-b88383f6f92d","executionInfo":{"status":"ok","timestamp":1588962799583,"user_tz":180,"elapsed":2360,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_detalhamento = df_detalhamento.groupby(['loja', 'operadora', 'escritorio']).agg({'valor_bruto':'sum'}).reset_index()\n","df_detalhamento.sort_values(ascending=False, by='valor_bruto').reset_index()"],"execution_count":570,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
indexlojaoperadoraescritoriovalor_bruto
03BEMOL AVENIDAVivo1034739
119BEMOL CIDADE NOVAVivo1154616
243BEMOL FARMA GRANDE CIRCULARVivo6044474
3149BEMOL TORQUATOVivo5003751
4137BEMOL SHOPPINGVivo1063704
..................
157156LOJA BEMOL FARMA ARIQUEMESVivo61335
158128BEMOL PRESIDENTE FIGUEIREDOTim53020
1599BEMOL BOA VISTAOi70120
160152LOJA BEMOL ARIQUEMESVivo20615
16146BEMOL FARMA ITACOATIARATim61110
\n","

162 rows × 5 columns

\n","
"],"text/plain":[" index loja operadora escritorio valor_bruto\n","0 3 BEMOL AVENIDA Vivo 103 4739\n","1 19 BEMOL CIDADE NOVA Vivo 115 4616\n","2 43 BEMOL FARMA GRANDE CIRCULAR Vivo 604 4474\n","3 149 BEMOL TORQUATO Vivo 500 3751\n","4 137 BEMOL SHOPPING Vivo 106 3704\n",".. ... ... ... ... ...\n","157 156 LOJA BEMOL FARMA ARIQUEMES Vivo 613 35\n","158 128 BEMOL PRESIDENTE FIGUEIREDO Tim 530 20\n","159 9 BEMOL BOA VISTA Oi 701 20\n","160 152 LOJA BEMOL ARIQUEMES Vivo 206 15\n","161 46 BEMOL FARMA ITACOATIARA Tim 611 10\n","\n","[162 rows x 5 columns]"]},"metadata":{"tags":[]},"execution_count":570}]},{"cell_type":"markdown","metadata":{"id":"chYLModgVmXg","colab_type":"text"},"source":["## Merge de tabelas"]},{"cell_type":"code","metadata":{"id":"6hUUq70OVv1f","colab_type":"code","colab":{}},"source":["df_relatorio = pd.merge(df_detalhamento, df_vendas, on=['operadora', 'escritorio'], how='right')"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"b_bT-o9JanEz","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":204},"outputId":"35495f72-49fc-4858-e03a-9673c533957c","executionInfo":{"status":"ok","timestamp":1588962799585,"user_tz":180,"elapsed":2312,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_relatorio.head(5)"],"execution_count":572,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaoperadoraescritoriovalor_brutovalor_liquido
0BEMOL AVENIDAClaro1032651.02652
1BEMOL AVENIDAOi1033309.03309
2BEMOL AVENIDATim1031550.01550
3BEMOL AVENIDAVivo1034739.04739
4BEMOL BARROSOClaro1071495.01495
\n","
"],"text/plain":[" loja operadora escritorio valor_bruto valor_liquido\n","0 BEMOL AVENIDA Claro 103 2651.0 2652\n","1 BEMOL AVENIDA Oi 103 3309.0 3309\n","2 BEMOL AVENIDA Tim 103 1550.0 1550\n","3 BEMOL AVENIDA Vivo 103 4739.0 4739\n","4 BEMOL BARROSO Claro 107 1495.0 1495"]},"metadata":{"tags":[]},"execution_count":572}]},{"cell_type":"markdown","metadata":{"id":"BCO_GKEZYicx","colab_type":"text"},"source":["### Tratando o pós merge"]},{"cell_type":"markdown","metadata":{"id":"8QAmzB8cZMBr","colab_type":"text"},"source":["Na minha análise não encontrei valores faltantes. Mas mesmo assim vou utilizar o fillna para substituir os mesmos por 0 se houver. "]},{"cell_type":"code","metadata":{"id":"f73RYBvIY6xG","colab_type":"code","colab":{}},"source":["df_relatorio = df_relatorio.fillna(0)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Jqz2pF2hZjJ9","colab_type":"text"},"source":["# **Regra de Negócio**"]},{"cell_type":"code","metadata":{"id":"F0a-UYZMZk0h","colab_type":"code","colab":{}},"source":["def status(valor_liquido, valor_bruto):\n"," if (valor_liquido != valor_bruto):\n"," return 'alerta'\n"," else:\n"," return ''"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"ZhGPIR0Ydbfu","colab_type":"code","colab":{}},"source":["df_relatorio['status'] = df_relatorio.apply(lambda row: status(row['valor_liquido'], row['valor_bruto']), axis='columns')"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"1Z87RyeCdvJE","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":419},"outputId":"40e42c72-cbff-48c2-9e95-62f2836cf642","executionInfo":{"status":"ok","timestamp":1588962799589,"user_tz":180,"elapsed":2256,"user":{"displayName":"Luis Vinicius","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg7cIqDcqFqg_-xSEQAZMW9-yjWqGKJxJ507w5bXOY=s64","userId":"00999834238766567792"}}},"source":["df_relatorio"],"execution_count":576,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lojaoperadoraescritoriovalor_brutovalor_liquidostatus
0BEMOL AVENIDAClaro1032651.02652alerta
1BEMOL AVENIDAOi1033309.03309
2BEMOL AVENIDATim1031550.01550
3BEMOL AVENIDAVivo1034739.04739
4BEMOL BARROSOClaro1071495.01495
.....................
158LOJA BEMOL FARMA JI PARANAOi61695.095
159LOJA BEMOL FARMA JI PARANATim61650.050
160LOJA BEMOL FARMA JI PARANAVivo61670.070
161LOJA BEMOL JI-PARANAClaro205123.0123
1620Tim6140.010alerta
\n","

163 rows × 6 columns

\n","
"],"text/plain":[" loja operadora ... valor_liquido status\n","0 BEMOL AVENIDA Claro ... 2652 alerta\n","1 BEMOL AVENIDA Oi ... 3309 \n","2 BEMOL AVENIDA Tim ... 1550 \n","3 BEMOL AVENIDA Vivo ... 4739 \n","4 BEMOL BARROSO Claro ... 1495 \n",".. ... ... ... ... ...\n","158 LOJA BEMOL FARMA JI PARANA Oi ... 95 \n","159 LOJA BEMOL FARMA JI PARANA Tim ... 50 \n","160 LOJA BEMOL FARMA JI PARANA Vivo ... 70 \n","161 LOJA BEMOL JI-PARANA Claro ... 123 \n","162 0 Tim ... 10 alerta\n","\n","[163 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":576}]},{"cell_type":"markdown","metadata":{"id":"qb16VJO1knHE","colab_type":"text"},"source":["# **Exportanto Dados**"]},{"cell_type":"code","metadata":{"id":"0RZW8ifxk59U","colab_type":"code","colab":{}},"source":["writer = pd.ExcelWriter('Relatório final.xlsx')\n","\n","df_relatorio.to_excel(writer, sheet_name='relatorio', index=False)\n","\n","writer.save()"],"execution_count":0,"outputs":[]}]} -------------------------------------------------------------------------------- /TratamentoDeDados_Pandas.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "TratamentoDeDados_Pandas.ipynb", 7 | "provenance": [], 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "display_name": "Python 3", 12 | "language": "python", 13 | "name": "python3" 14 | }, 15 | "language_info": { 16 | "codemirror_mode": { 17 | "name": "ipython", 18 | "version": 3 19 | }, 20 | "file_extension": ".py", 21 | "mimetype": "text/x-python", 22 | "name": "python", 23 | "nbconvert_exporter": "python", 24 | "pygments_lexer": "ipython3", 25 | "version": "3.8.1" 26 | } 27 | }, 28 | "cells": [ 29 | { 30 | "cell_type": "markdown", 31 | "metadata": { 32 | "id": "view-in-github", 33 | "colab_type": "text" 34 | }, 35 | "source": [ 36 | "\"Open" 37 | ] 38 | }, 39 | { 40 | "cell_type": "code", 41 | "metadata": { 42 | "colab_type": "code", 43 | "id": "WnhC7VNuPByU", 44 | "colab": {} 45 | }, 46 | "source": [ 47 | "import pandas as pd " 48 | ], 49 | "execution_count": 0, 50 | "outputs": [] 51 | }, 52 | { 53 | "cell_type": "markdown", 54 | "metadata": { 55 | "colab_type": "text", 56 | "id": "_WY3usxmW3cU" 57 | }, 58 | "source": [ 59 | "# **Leitura de Arquivos**" 60 | ] 61 | }, 62 | { 63 | "cell_type": "markdown", 64 | "metadata": { 65 | "colab_type": "text", 66 | "id": "IG18FCuKW9WN" 67 | }, 68 | "source": [ 69 | "## Arquivos CSV e TXT" 70 | ] 71 | }, 72 | { 73 | "cell_type": "markdown", 74 | "metadata": { 75 | "colab_type": "text", 76 | "id": "IxDnKs9QXIgF" 77 | }, 78 | "source": [ 79 | "pd.read_csv('nome_do_arquivo.extensao', sep = 'caracter que sepada os dados', skiprows = numero de linhas a serem puladas)" 80 | ] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "metadata": { 85 | "colab_type": "code", 86 | "id": "tp72knvJYf4j", 87 | "colab": {} 88 | }, 89 | "source": [ 90 | "df_materiais = pd.read_csv('materiais.csv',sep=';')" 91 | ], 92 | "execution_count": 0, 93 | "outputs": [] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "metadata": { 98 | "colab_type": "code", 99 | "id": "Ok6wRILXZW8y", 100 | "colab": {} 101 | }, 102 | "source": [ 103 | "df_pedidos = pd.read_csv('pedidos.txt',sep='|',skiprows=2, encoding = 'latin-1')" 104 | ], 105 | "execution_count": 0, 106 | "outputs": [] 107 | }, 108 | { 109 | "cell_type": "markdown", 110 | "metadata": { 111 | "colab_type": "text", 112 | "id": "RByBj1SMbPX-" 113 | }, 114 | "source": [ 115 | "## Arquivos XLSX" 116 | ] 117 | }, 118 | { 119 | "cell_type": "markdown", 120 | "metadata": { 121 | "colab_type": "text", 122 | "id": "OOgXEE1NbTeM" 123 | }, 124 | "source": [ 125 | "pd.read_excel('nome_do_arquivo.extensao', sheet_name='nome da aba', skiprows = numero de linhas a serem puladas)" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "metadata": { 131 | "colab_type": "code", 132 | "id": "Sfae__ZDa91B", 133 | "colab": {} 134 | }, 135 | "source": [ 136 | "df_vendas1 = pd.read_excel('vendas_1.xlsx',sheet_name='vendas')" 137 | ], 138 | "execution_count": 0, 139 | "outputs": [] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "metadata": { 144 | "colab_type": "code", 145 | "id": "L9WBcrV-b-Up", 146 | "colab": {} 147 | }, 148 | "source": [ 149 | "df_vendas2 = pd.read_excel('vendas_2.xlsx',sheet_name='vendas')" 150 | ], 151 | "execution_count": 0, 152 | "outputs": [] 153 | }, 154 | { 155 | "cell_type": "markdown", 156 | "metadata": { 157 | "colab_type": "text", 158 | "id": "vQcebA4OceSE" 159 | }, 160 | "source": [ 161 | "# **Tratamento de Dados**" 162 | ] 163 | }, 164 | { 165 | "cell_type": "markdown", 166 | "metadata": { 167 | "colab_type": "text", 168 | "id": "eT7gMIk_cgn8" 169 | }, 170 | "source": [ 171 | "## Renomeando colunas" 172 | ] 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "metadata": { 177 | "colab_type": "text", 178 | "id": "Y3sQ4PsngOU8" 179 | }, 180 | "source": [ 181 | "df.rename(columns={'coluna_antiga':'coluna_nova', 'coluna_antiga2': 'coluna_nova2'})" 182 | ] 183 | }, 184 | { 185 | "cell_type": "code", 186 | "metadata": { 187 | "colab_type": "code", 188 | "id": "RZbJ7KARhJeT", 189 | "colab": {} 190 | }, 191 | "source": [ 192 | "df_materiais = df_materiais.rename(columns = {'Material':'material','Texto breve material':'texto_breve'})" 193 | ], 194 | "execution_count": 0, 195 | "outputs": [] 196 | }, 197 | { 198 | "cell_type": "markdown", 199 | "metadata": { 200 | "colab_type": "text", 201 | "id": "FVOgRjcSh0lV" 202 | }, 203 | "source": [ 204 | "df.columns = ['coluna_nova','coluna_nova2',...]" 205 | ] 206 | }, 207 | { 208 | "cell_type": "code", 209 | "metadata": { 210 | "colab_type": "code", 211 | "id": "p68l90edcQ9r", 212 | "colab": {} 213 | }, 214 | "source": [ 215 | "df_pedidos.columns = ['fornecedor','material','qtd_pedido','texto_breve','qtd_estoque']" 216 | ], 217 | "execution_count": 0, 218 | "outputs": [] 219 | }, 220 | { 221 | "cell_type": "code", 222 | "metadata": { 223 | "colab_type": "code", 224 | "id": "z-zDUW3whJwp", 225 | "colab": {} 226 | }, 227 | "source": [ 228 | "df_vendas1.columns = ['data','material','qtd_vendas']" 229 | ], 230 | "execution_count": 0, 231 | "outputs": [] 232 | }, 233 | { 234 | "cell_type": "code", 235 | "metadata": { 236 | "colab_type": "code", 237 | "id": "nf0aCDYiifBH", 238 | "colab": {} 239 | }, 240 | "source": [ 241 | "df_vendas2.columns = ['data','material','qtd_vendas']" 242 | ], 243 | "execution_count": 0, 244 | "outputs": [] 245 | }, 246 | { 247 | "cell_type": "markdown", 248 | "metadata": { 249 | "colab_type": "text", 250 | "id": "QxxY9fRRjGqY" 251 | }, 252 | "source": [ 253 | "## Verificar tipos de dados" 254 | ] 255 | }, 256 | { 257 | "cell_type": "markdown", 258 | "metadata": { 259 | "colab_type": "text", 260 | "id": "NV4EBjcmxRrT" 261 | }, 262 | "source": [ 263 | "### Verificar tipos" 264 | ] 265 | }, 266 | { 267 | "cell_type": "markdown", 268 | "metadata": { 269 | "colab_type": "text", 270 | "id": "XlNXVsKtkjNx" 271 | }, 272 | "source": [ 273 | "df.dtypes\n", 274 | "| df['coluna'].dtype" 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "metadata": { 280 | "colab_type": "code", 281 | "id": "SzS9Gvz3jtkM", 282 | "outputId": "877cc66b-fe11-456e-8cf9-5214be5ccd1a", 283 | "colab": { 284 | "base_uri": "https://localhost:8080/" 285 | } 286 | }, 287 | "source": [ 288 | "df_materiais.dtypes" 289 | ], 290 | "execution_count": 0, 291 | "outputs": [ 292 | { 293 | "output_type": "execute_result", 294 | "data": { 295 | "text/plain": [ 296 | "material int64\n", 297 | "texto_breve object\n", 298 | "dtype: object" 299 | ] 300 | }, 301 | "metadata": { 302 | "tags": [] 303 | }, 304 | "execution_count": 56 305 | } 306 | ] 307 | }, 308 | { 309 | "cell_type": "code", 310 | "metadata": { 311 | "colab_type": "code", 312 | "id": "qEDvq4cLk6Rd", 313 | "outputId": "89203142-1969-46a2-8215-3b4aa07bc003", 314 | "colab": { 315 | "base_uri": "https://localhost:8080/" 316 | } 317 | }, 318 | "source": [ 319 | "df_pedidos.dtypes" 320 | ], 321 | "execution_count": 0, 322 | "outputs": [ 323 | { 324 | "output_type": "execute_result", 325 | "data": { 326 | "text/plain": [ 327 | "fornecedor int64\n", 328 | "material float64\n", 329 | "qtd_pedido int64\n", 330 | "texto_breve object\n", 331 | "qtd_estoque int64\n", 332 | "dtype: object" 333 | ] 334 | }, 335 | "metadata": { 336 | "tags": [] 337 | }, 338 | "execution_count": 57 339 | } 340 | ] 341 | }, 342 | { 343 | "cell_type": "code", 344 | "metadata": { 345 | "colab_type": "code", 346 | "id": "KPtJAW-flVgX", 347 | "outputId": "40323173-7a4e-4a40-bf8d-e5a4a41d4da9", 348 | "colab": { 349 | "base_uri": "https://localhost:8080/" 350 | } 351 | }, 352 | "source": [ 353 | "df_vendas1.dtypes" 354 | ], 355 | "execution_count": 0, 356 | "outputs": [ 357 | { 358 | "output_type": "execute_result", 359 | "data": { 360 | "text/plain": [ 361 | "data object\n", 362 | "material int64\n", 363 | "qtd_vendas int64\n", 364 | "dtype: object" 365 | ] 366 | }, 367 | "metadata": { 368 | "tags": [] 369 | }, 370 | "execution_count": 58 371 | } 372 | ] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "metadata": { 377 | "colab_type": "code", 378 | "id": "KCmMRW_dlZ82", 379 | "outputId": "c08b1429-bb65-41a3-8409-f2c346aadc5c", 380 | "colab": { 381 | "base_uri": "https://localhost:8080/" 382 | } 383 | }, 384 | "source": [ 385 | "df_vendas2.dtypes" 386 | ], 387 | "execution_count": 0, 388 | "outputs": [ 389 | { 390 | "output_type": "execute_result", 391 | "data": { 392 | "text/plain": [ 393 | "data object\n", 394 | "material int64\n", 395 | "qtd_vendas int64\n", 396 | "dtype: object" 397 | ] 398 | }, 399 | "metadata": { 400 | "tags": [] 401 | }, 402 | "execution_count": 59 403 | } 404 | ] 405 | }, 406 | { 407 | "cell_type": "markdown", 408 | "metadata": { 409 | "colab_type": "text", 410 | "id": "QbquTfLhxVvM" 411 | }, 412 | "source": [ 413 | "### Alterando tipode de uma coluna" 414 | ] 415 | }, 416 | { 417 | "cell_type": "markdown", 418 | "metadata": { 419 | "colab_type": "text", 420 | "id": "ExoyUxm8xhN1" 421 | }, 422 | "source": [ 423 | "df['coluna'].astype() (int ou float ou str)" 424 | ] 425 | }, 426 | { 427 | "cell_type": "code", 428 | "metadata": { 429 | "colab_type": "code", 430 | "id": "TuUaldCLlc0l", 431 | "colab": {} 432 | }, 433 | "source": [ 434 | "df_pedidos['qtd_pedido'] = df_pedidos['qtd_pedido'].astype(int)" 435 | ], 436 | "execution_count": 0, 437 | "outputs": [] 438 | }, 439 | { 440 | "cell_type": "markdown", 441 | "metadata": { 442 | "colab_type": "text", 443 | "id": "s0yo1Xt6oRw4" 444 | }, 445 | "source": [ 446 | "## Eliminando Dados" 447 | ] 448 | }, 449 | { 450 | "cell_type": "markdown", 451 | "metadata": { 452 | "colab_type": "text", 453 | "id": "b0OuyX51oYnN" 454 | }, 455 | "source": [ 456 | "df.drop(['coluna2','coluna3'],axis='columns')\n", 457 | "\n", 458 | "df.drop([1,2],axis='index')" 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "metadata": { 464 | "colab_type": "code", 465 | "id": "V5uE9Em7l5Nk", 466 | "colab": {} 467 | }, 468 | "source": [ 469 | "df_materiais = df_materiais.drop(['texto_breve'],axis='columns')" 470 | ], 471 | "execution_count": 0, 472 | "outputs": [] 473 | }, 474 | { 475 | "cell_type": "markdown", 476 | "metadata": { 477 | "colab_type": "text", 478 | "id": "mxeN85E6phLx" 479 | }, 480 | "source": [ 481 | "df[['coluna2','coluna1']].copy()" 482 | ] 483 | }, 484 | { 485 | "cell_type": "code", 486 | "metadata": { 487 | "colab_type": "code", 488 | "id": "wn5yFufHo10I", 489 | "colab": {} 490 | }, 491 | "source": [ 492 | "df_pedidos = df_pedidos[['material','qtd_pedido','qtd_estoque']].copy()" 493 | ], 494 | "execution_count": 0, 495 | "outputs": [] 496 | }, 497 | { 498 | "cell_type": "code", 499 | "metadata": { 500 | "colab_type": "code", 501 | "id": "la_B-xZEp8VG", 502 | "colab": {} 503 | }, 504 | "source": [ 505 | "df_vendas1 = df_vendas1[['material','qtd_vendas']].copy()" 506 | ], 507 | "execution_count": 0, 508 | "outputs": [] 509 | }, 510 | { 511 | "cell_type": "code", 512 | "metadata": { 513 | "colab_type": "code", 514 | "id": "KOQ-sbZ-qNjU", 515 | "colab": {} 516 | }, 517 | "source": [ 518 | "df_vendas2 = df_vendas2[['material','qtd_vendas']].copy()" 519 | ], 520 | "execution_count": 0, 521 | "outputs": [] 522 | }, 523 | { 524 | "cell_type": "markdown", 525 | "metadata": { 526 | "colab_type": "text", 527 | "id": "72HNj7PKs3uH" 528 | }, 529 | "source": [ 530 | "# Concatenar tabelas (Juntar tabelas)" 531 | ] 532 | }, 533 | { 534 | "cell_type": "code", 535 | "metadata": { 536 | "colab_type": "code", 537 | "id": "NuiNF9Qxqopj", 538 | "outputId": "71ca01f0-9c84-4155-c5e0-852d48b5edd5", 539 | "colab": { 540 | "base_uri": "https://localhost:8080/", 541 | "height": 68 542 | } 543 | }, 544 | "source": [ 545 | "df_vendas1.dtypes" 546 | ], 547 | "execution_count": 0, 548 | "outputs": [ 549 | { 550 | "output_type": "execute_result", 551 | "data": { 552 | "text/plain": [ 553 | "material int64\n", 554 | "qtd_vendas int64\n", 555 | "dtype: object" 556 | ] 557 | }, 558 | "metadata": { 559 | "tags": [] 560 | }, 561 | "execution_count": 65 562 | } 563 | ] 564 | }, 565 | { 566 | "cell_type": "code", 567 | "metadata": { 568 | "colab_type": "code", 569 | "id": "EMJP2H61tLAB", 570 | "outputId": "cdc72b24-0cb4-4511-a987-37d5f04d6ac7", 571 | "colab": { 572 | "base_uri": "https://localhost:8080/", 573 | "height": 68 574 | } 575 | }, 576 | "source": [ 577 | "df_vendas2.dtypes" 578 | ], 579 | "execution_count": 0, 580 | "outputs": [ 581 | { 582 | "output_type": "execute_result", 583 | "data": { 584 | "text/plain": [ 585 | "material int64\n", 586 | "qtd_vendas int64\n", 587 | "dtype: object" 588 | ] 589 | }, 590 | "metadata": { 591 | "tags": [] 592 | }, 593 | "execution_count": 66 594 | } 595 | ] 596 | }, 597 | { 598 | "cell_type": "markdown", 599 | "metadata": { 600 | "colab_type": "text", 601 | "id": "0Yq5tPietcMD" 602 | }, 603 | "source": [ 604 | "pd.concat([df_vendas1,df_vendas2])" 605 | ] 606 | }, 607 | { 608 | "cell_type": "code", 609 | "metadata": { 610 | "colab_type": "code", 611 | "id": "SCWakxqltvAH", 612 | "outputId": "4acb6e17-c81c-4c54-ed85-788f8104553b", 613 | "colab": { 614 | "base_uri": "https://localhost:8080/", 615 | "height": 34 616 | } 617 | }, 618 | "source": [ 619 | "df_vendas1.shape" 620 | ], 621 | "execution_count": 0, 622 | "outputs": [ 623 | { 624 | "output_type": "execute_result", 625 | "data": { 626 | "text/plain": [ 627 | "(8657, 2)" 628 | ] 629 | }, 630 | "metadata": { 631 | "tags": [] 632 | }, 633 | "execution_count": 67 634 | } 635 | ] 636 | }, 637 | { 638 | "cell_type": "code", 639 | "metadata": { 640 | "colab_type": "code", 641 | "id": "pRDZTx2-tvJ0", 642 | "outputId": "de311c5c-3d6b-45b0-ad61-b3bd74e56792", 643 | "colab": { 644 | "base_uri": "https://localhost:8080/", 645 | "height": 34 646 | } 647 | }, 648 | "source": [ 649 | "df_vendas2.shape" 650 | ], 651 | "execution_count": 0, 652 | "outputs": [ 653 | { 654 | "output_type": "execute_result", 655 | "data": { 656 | "text/plain": [ 657 | "(8144, 2)" 658 | ] 659 | }, 660 | "metadata": { 661 | "tags": [] 662 | }, 663 | "execution_count": 68 664 | } 665 | ] 666 | }, 667 | { 668 | "cell_type": "code", 669 | "metadata": { 670 | "colab_type": "code", 671 | "id": "qV357k-YtPCe", 672 | "colab": {} 673 | }, 674 | "source": [ 675 | "df_vendas = pd.concat([df_vendas1,df_vendas2])" 676 | ], 677 | "execution_count": 0, 678 | "outputs": [] 679 | }, 680 | { 681 | "cell_type": "code", 682 | "metadata": { 683 | "colab_type": "code", 684 | "id": "mEJkxvBdtsyD", 685 | "colab": {} 686 | }, 687 | "source": [ 688 | "df_vendas = df_vendas.reset_index(drop=True)" 689 | ], 690 | "execution_count": 0, 691 | "outputs": [] 692 | }, 693 | { 694 | "cell_type": "markdown", 695 | "metadata": { 696 | "colab_type": "text", 697 | "id": "7bO6m8icXwVD" 698 | }, 699 | "source": [ 700 | "# **Correlação de Tabelas**" 701 | ] 702 | }, 703 | { 704 | "cell_type": "markdown", 705 | "metadata": { 706 | "colab_type": "text", 707 | "id": "mluU-m72X43Z" 708 | }, 709 | "source": [ 710 | "## Agrupamento de dados" 711 | ] 712 | }, 713 | { 714 | "cell_type": "markdown", 715 | "metadata": { 716 | "colab_type": "text", 717 | "id": "_grPA7idZCI3" 718 | }, 719 | "source": [ 720 | "df.groupby(['colunas a serem agrupadas']).agg({'coluna1':'sum','coluna2':'mean','coluna3':'max', 'coluna4':'min','coluna5':'first'}).reset_index()" 721 | ] 722 | }, 723 | { 724 | "cell_type": "markdown", 725 | "metadata": { 726 | "id": "NJtv5YHhoI2n", 727 | "colab_type": "text" 728 | }, 729 | "source": [ 730 | "1. lista = [colunas a serem agrupadas]\n", 731 | "2. dict = {'coluna_x':'funcao'}" 732 | ] 733 | }, 734 | { 735 | "cell_type": "markdown", 736 | "metadata": { 737 | "id": "dq8Lh2EVBtyk", 738 | "colab_type": "text" 739 | }, 740 | "source": [ 741 | "Agora para aqueles materiais(linhas) iguais que estao se repetindo, vamos somar os seus valores e tranformar em unico registro (linha). " 742 | ] 743 | }, 744 | { 745 | "cell_type": "markdown", 746 | "metadata": { 747 | "id": "1puIHorvCLZn", 748 | "colab_type": "text" 749 | }, 750 | "source": [ 751 | "Vamos usar o **groupby** para agrupar e **sum** para somar" 752 | ] 753 | }, 754 | { 755 | "cell_type": "code", 756 | "metadata": { 757 | "colab_type": "code", 758 | "id": "BHMePq1qv5XL", 759 | "colab": {} 760 | }, 761 | "source": [ 762 | "df_pedidos = df_pedidos.groupby(['material']).agg({'qtd_pedido':'sum','qtd_estoque':'sum'}).reset_index()" 763 | ], 764 | "execution_count": 0, 765 | "outputs": [] 766 | }, 767 | { 768 | "cell_type": "code", 769 | "metadata": { 770 | "colab_type": "code", 771 | "id": "TE1jIgyOcaEk", 772 | "colab": {} 773 | }, 774 | "source": [ 775 | "df_vendas = df_vendas.groupby(['material']).agg({'qtd_vendas':'sum'}).reset_index()" 776 | ], 777 | "execution_count": 0, 778 | "outputs": [] 779 | }, 780 | { 781 | "cell_type": "code", 782 | "metadata": { 783 | "id": "iy_YqZTOSBVh", 784 | "colab_type": "code", 785 | "outputId": "3cbc53d4-2901-411b-8f6e-c9fa4505d055", 786 | "colab": { 787 | "base_uri": "https://localhost:8080/" 788 | } 789 | }, 790 | "source": [ 791 | "df_vendas.head()" 792 | ], 793 | "execution_count": 0, 794 | "outputs": [ 795 | { 796 | "output_type": "execute_result", 797 | "data": { 798 | "text/html": [ 799 | "
\n", 800 | "\n", 813 | "\n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | "
materialqtd_vendas
040000136
140000141
240000158
340000163
440000176
\n", 849 | "
" 850 | ], 851 | "text/plain": [ 852 | " material qtd_vendas\n", 853 | "0 4000013 6\n", 854 | "1 4000014 1\n", 855 | "2 4000015 8\n", 856 | "3 4000016 3\n", 857 | "4 4000017 6" 858 | ] 859 | }, 860 | "metadata": { 861 | "tags": [] 862 | }, 863 | "execution_count": 73 864 | } 865 | ] 866 | }, 867 | { 868 | "cell_type": "markdown", 869 | "metadata": { 870 | "colab_type": "text", 871 | "id": "AogRbyYLeEem" 872 | }, 873 | "source": [ 874 | "## Merge de tabelas " 875 | ] 876 | }, 877 | { 878 | "cell_type": "markdown", 879 | "metadata": { 880 | "id": "_KeS3z-YS1HU", 881 | "colab_type": "text" 882 | }, 883 | "source": [ 884 | "Utilizado para unir duas tabelas através de uma ou\n", 885 | "mais colunas em comum" 886 | ] 887 | }, 888 | { 889 | "cell_type": "markdown", 890 | "metadata": { 891 | "colab_type": "text", 892 | "id": "CS6Cg_63iEjp" 893 | }, 894 | "source": [ 895 | "pd.merge(df_tabela_esquerda,df_tabela_direita, on=['colunas em comum'], how='método de correlação (priorização')\n", 896 | "\n", 897 | "how poder ser: left (esquerda), rigth (direita), inner (apenas itens em comum), outer (todos os itens)" 898 | ] 899 | }, 900 | { 901 | "cell_type": "code", 902 | "metadata": { 903 | "colab_type": "code", 904 | "id": "OYBTGUbmeXBO", 905 | "colab": {} 906 | }, 907 | "source": [ 908 | "df_relatorio = pd.merge(df_materiais,df_pedidos, on=['material'], how='left')" 909 | ], 910 | "execution_count": 0, 911 | "outputs": [] 912 | }, 913 | { 914 | "cell_type": "code", 915 | "metadata": { 916 | "colab_type": "code", 917 | "id": "V4gzWJVDjOaH", 918 | "colab": {} 919 | }, 920 | "source": [ 921 | "df_relatorio = pd.merge(df_relatorio,df_vendas, on=['material'], how='left')" 922 | ], 923 | "execution_count": 0, 924 | "outputs": [] 925 | }, 926 | { 927 | "cell_type": "markdown", 928 | "metadata": { 929 | "colab_type": "text", 930 | "id": "soAa2nq3kpV_" 931 | }, 932 | "source": [ 933 | "### Tratando o pós merge" 934 | ] 935 | }, 936 | { 937 | "cell_type": "markdown", 938 | "metadata": { 939 | "colab_type": "text", 940 | "id": "LX69W-QOkuSY" 941 | }, 942 | "source": [ 943 | "df.fillna(qualquer valor para substituir os NaN)\n", 944 | "\n", 945 | "df['coluna'] = df['coluna'].fillna(qualquer valor para substituir os NaN)" 946 | ] 947 | }, 948 | { 949 | "cell_type": "code", 950 | "metadata": { 951 | "colab_type": "code", 952 | "id": "W1bBJ0TdqZ1B", 953 | "outputId": "875f2c11-6101-4936-a6ec-d308fe9e2f1f", 954 | "colab": { 955 | "base_uri": "https://localhost:8080/" 956 | } 957 | }, 958 | "source": [ 959 | "df_relatorio.head(3)" 960 | ], 961 | "execution_count": 0, 962 | "outputs": [ 963 | { 964 | "output_type": "execute_result", 965 | "data": { 966 | "text/html": [ 967 | "
\n", 968 | "\n", 981 | "\n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | "
materialqtd_pedidoqtd_estoqueqtd_vendas
04000010250.025.0NaN
14000013NaNNaN6.0
2400001460.06.01.0
\n", 1015 | "
" 1016 | ], 1017 | "text/plain": [ 1018 | " material qtd_pedido qtd_estoque qtd_vendas\n", 1019 | "0 4000010 250.0 25.0 NaN\n", 1020 | "1 4000013 NaN NaN 6.0\n", 1021 | "2 4000014 60.0 6.0 1.0" 1022 | ] 1023 | }, 1024 | "metadata": { 1025 | "tags": [] 1026 | }, 1027 | "execution_count": 76 1028 | } 1029 | ] 1030 | }, 1031 | { 1032 | "cell_type": "code", 1033 | "metadata": { 1034 | "colab_type": "code", 1035 | "id": "hxkvrhFdkPTQ", 1036 | "colab": {} 1037 | }, 1038 | "source": [ 1039 | "df_relatorio = df_relatorio.fillna(0)" 1040 | ], 1041 | "execution_count": 0, 1042 | "outputs": [] 1043 | }, 1044 | { 1045 | "cell_type": "code", 1046 | "metadata": { 1047 | "colab_type": "code", 1048 | "id": "NHrB77Jdojzp", 1049 | "outputId": "3f51e7b9-d4ce-4405-8caf-652eaf644f08", 1050 | "colab": { 1051 | "base_uri": "https://localhost:8080/" 1052 | } 1053 | }, 1054 | "source": [ 1055 | "df_relatorio.head(2)" 1056 | ], 1057 | "execution_count": 0, 1058 | "outputs": [ 1059 | { 1060 | "output_type": "execute_result", 1061 | "data": { 1062 | "text/html": [ 1063 | "
\n", 1064 | "\n", 1077 | "\n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | "
materialqtd_pedidoqtd_estoqueqtd_vendas
04000010250.025.00.0
140000130.00.06.0
\n", 1104 | "
" 1105 | ], 1106 | "text/plain": [ 1107 | " material qtd_pedido qtd_estoque qtd_vendas\n", 1108 | "0 4000010 250.0 25.0 0.0\n", 1109 | "1 4000013 0.0 0.0 6.0" 1110 | ] 1111 | }, 1112 | "metadata": { 1113 | "tags": [] 1114 | }, 1115 | "execution_count": 78 1116 | } 1117 | ] 1118 | }, 1119 | { 1120 | "cell_type": "code", 1121 | "metadata": { 1122 | "colab_type": "code", 1123 | "id": "BtDmgdzHkceW", 1124 | "colab": {} 1125 | }, 1126 | "source": [ 1127 | "df_relatorio[['qtd_pedido','qtd_estoque','qtd_vendas']] = df_relatorio[['qtd_pedido','qtd_estoque','qtd_vendas']].astype(int)" 1128 | ], 1129 | "execution_count": 0, 1130 | "outputs": [] 1131 | }, 1132 | { 1133 | "cell_type": "markdown", 1134 | "metadata": { 1135 | "colab_type": "text", 1136 | "id": "hsiLtl-0rBjR" 1137 | }, 1138 | "source": [ 1139 | "# **Regra de Negócio**" 1140 | ] 1141 | }, 1142 | { 1143 | "cell_type": "markdown", 1144 | "metadata": { 1145 | "colab_type": "text", 1146 | "id": "b0J9Kfw2rvzj" 1147 | }, 1148 | "source": [ 1149 | "## Operações entre colunas (sem condicional)" 1150 | ] 1151 | }, 1152 | { 1153 | "cell_type": "code", 1154 | "metadata": { 1155 | "colab_type": "code", 1156 | "id": "YvzjWMqLlJyG", 1157 | "colab": {} 1158 | }, 1159 | "source": [ 1160 | "df_relatorio['qtd_loja'] = df_relatorio['qtd_pedido'] + df_relatorio['qtd_estoque']" 1161 | ], 1162 | "execution_count": 0, 1163 | "outputs": [] 1164 | }, 1165 | { 1166 | "cell_type": "code", 1167 | "metadata": { 1168 | "colab_type": "code", 1169 | "id": "3iesELcItf6N", 1170 | "colab": {} 1171 | }, 1172 | "source": [ 1173 | "df_relatorio = df_relatorio[['material','qtd_loja','qtd_vendas']].copy()" 1174 | ], 1175 | "execution_count": 0, 1176 | "outputs": [] 1177 | }, 1178 | { 1179 | "cell_type": "markdown", 1180 | "metadata": { 1181 | "colab_type": "text", 1182 | "id": "l9qW0B4XuDrm" 1183 | }, 1184 | "source": [ 1185 | "## Operações entre colunas (com condicional)" 1186 | ] 1187 | }, 1188 | { 1189 | "cell_type": "code", 1190 | "metadata": { 1191 | "colab_type": "code", 1192 | "id": "z0xDjxQWuL03", 1193 | "colab": {} 1194 | }, 1195 | "source": [ 1196 | "def calcular_porcentagem(loja,vendas):\n", 1197 | " if (vendas!=0):\n", 1198 | " porcentagem = loja/vendas\n", 1199 | " return porcentagem\n", 1200 | " elif ((vendas==0) and (loja!=0)):\n", 1201 | " return 1.2\n", 1202 | " else:\n", 1203 | " return 0" 1204 | ], 1205 | "execution_count": 0, 1206 | "outputs": [] 1207 | }, 1208 | { 1209 | "cell_type": "markdown", 1210 | "metadata": { 1211 | "id": "_GnS5dWahB14", 1212 | "colab_type": "text" 1213 | }, 1214 | "source": [ 1215 | "A partir dessa função vamos criar uma nova coluna, a coluna porcentagem. E para aplicar a função para todas as linhas do df_relatorio vamos usar lambda." 1216 | ] 1217 | }, 1218 | { 1219 | "cell_type": "markdown", 1220 | "metadata": { 1221 | "colab_type": "text", 1222 | "id": "8MVvK2L0wM7p" 1223 | }, 1224 | "source": [ 1225 | "df.apply(lambda row: funcao(row['coluna_x'] (paramêtro) ,row['coluna_y'] (paramêtro), axis='columns')" 1226 | ] 1227 | }, 1228 | { 1229 | "cell_type": "code", 1230 | "metadata": { 1231 | "colab_type": "code", 1232 | "id": "r9VJk2lTxDtw", 1233 | "colab": {} 1234 | }, 1235 | "source": [ 1236 | "df_relatorio['porcentagem'] = df_relatorio.apply(lambda row: calcular_porcentagem(row['qtd_loja'],row['qtd_vendas']), axis='columns')" 1237 | ], 1238 | "execution_count": 0, 1239 | "outputs": [] 1240 | }, 1241 | { 1242 | "cell_type": "markdown", 1243 | "metadata": { 1244 | "id": "-f9UVmG0juLv", 1245 | "colab_type": "text" 1246 | }, 1247 | "source": [ 1248 | "O **row** serve para aplicar a coluna que deve ser passada como paramêtro para a função que criamos, **calcular_porcentagem**" 1249 | ] 1250 | }, 1251 | { 1252 | "cell_type": "markdown", 1253 | "metadata": { 1254 | "id": "FI0qs67ui4tR", 1255 | "colab_type": "text" 1256 | }, 1257 | "source": [ 1258 | "Agora vamos criar uma nova coluna, a coluna status. Também vamos usar lambda p/ aplicar a função de status que vamos criar p/ todas as linhas do df_relatorio." 1259 | ] 1260 | }, 1261 | { 1262 | "cell_type": "code", 1263 | "metadata": { 1264 | "colab_type": "code", 1265 | "id": "2CwSyF3otu80", 1266 | "colab": {} 1267 | }, 1268 | "source": [ 1269 | "def verificar_status(porc):\n", 1270 | " if (porc>=1.2):\n", 1271 | " return 'alerta'\n", 1272 | " else:\n", 1273 | " return ''" 1274 | ], 1275 | "execution_count": 0, 1276 | "outputs": [] 1277 | }, 1278 | { 1279 | "cell_type": "code", 1280 | "metadata": { 1281 | "colab_type": "code", 1282 | "id": "_2BGd2KpxuaS", 1283 | "colab": {} 1284 | }, 1285 | "source": [ 1286 | "df_relatorio['status'] = df_relatorio.apply(lambda row: verificar_status(row['porcentagem']), axis='columns')" 1287 | ], 1288 | "execution_count": 0, 1289 | "outputs": [] 1290 | }, 1291 | { 1292 | "cell_type": "markdown", 1293 | "metadata": { 1294 | "id": "KzHmVnCUjdWA", 1295 | "colab_type": "text" 1296 | }, 1297 | "source": [ 1298 | "Veja que aqui só usamos uma coluna, porque a nossa função status só utiliza um paramêtro. Entao só passamos uma coluna como paramêtro." 1299 | ] 1300 | }, 1301 | { 1302 | "cell_type": "markdown", 1303 | "metadata": { 1304 | "colab_type": "text", 1305 | "id": "nbj1PO290dnU" 1306 | }, 1307 | "source": [ 1308 | "# **Filtro de dados**" 1309 | ] 1310 | }, 1311 | { 1312 | "cell_type": "markdown", 1313 | "metadata": { 1314 | "colab_type": "text", 1315 | "id": "ATqNfztB0v_O" 1316 | }, 1317 | "source": [ 1318 | "df[(condicao do filtro)]\n", 1319 | "\n", 1320 | "and - &\n", 1321 | "or - |" 1322 | ] 1323 | }, 1324 | { 1325 | "cell_type": "markdown", 1326 | "metadata": { 1327 | "id": "HvQDzsotouZM", 1328 | "colab_type": "text" 1329 | }, 1330 | "source": [ 1331 | "Vamos filtrar, visualizar apenas os valores da coluna status que sejam diferentes de alerta e (and) e os valores em que a coluna de loja sejam diferentes de 0." 1332 | ] 1333 | }, 1334 | { 1335 | "cell_type": "code", 1336 | "metadata": { 1337 | "colab_type": "code", 1338 | "id": "aB9uzuBU1Imt", 1339 | "outputId": "859ed0aa-ccda-439b-bdc4-9858d10bfb02", 1340 | "colab": { 1341 | "base_uri": "https://localhost:8080/", 1342 | "height": 204 1343 | } 1344 | }, 1345 | "source": [ 1346 | "# Apenas para visualizar possibilidade\n", 1347 | "\n", 1348 | "df_relatorio[(df_relatorio['status']!='alerta') & (df_relatorio['qtd_loja']!=0)].head(5)" 1349 | ], 1350 | "execution_count": 0, 1351 | "outputs": [ 1352 | { 1353 | "output_type": "execute_result", 1354 | "data": { 1355 | "text/html": [ 1356 | "
\n", 1357 | "\n", 1370 | "\n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | "
materialqtd_lojaqtd_vendasporcentagemstatus
6400001971510.046358
740000209270.333333
1394000173230.666667
2474000301120.500000
2754000331150.200000
\n", 1424 | "
" 1425 | ], 1426 | "text/plain": [ 1427 | " material qtd_loja qtd_vendas porcentagem status\n", 1428 | "6 4000019 7 151 0.046358 \n", 1429 | "7 4000020 9 27 0.333333 \n", 1430 | "139 4000173 2 3 0.666667 \n", 1431 | "247 4000301 1 2 0.500000 \n", 1432 | "275 4000331 1 5 0.200000 " 1433 | ] 1434 | }, 1435 | "metadata": { 1436 | "tags": [] 1437 | }, 1438 | "execution_count": 86 1439 | } 1440 | ] 1441 | }, 1442 | { 1443 | "cell_type": "markdown", 1444 | "metadata": { 1445 | "colab_type": "text", 1446 | "id": "8ePwMfyg2u0F" 1447 | }, 1448 | "source": [ 1449 | "# **Ordenar dados**" 1450 | ] 1451 | }, 1452 | { 1453 | "cell_type": "markdown", 1454 | "metadata": { 1455 | "colab_type": "text", 1456 | "id": "dE0dJg8x2ztD" 1457 | }, 1458 | "source": [ 1459 | "df.sort_values([colunas a serem ordenadas], ascending=True) - crescente\n", 1460 | "\n", 1461 | "df.sort_values([colunas a serem ordenadas], ascending=False) - decrescente" 1462 | ] 1463 | }, 1464 | { 1465 | "cell_type": "code", 1466 | "metadata": { 1467 | "colab_type": "code", 1468 | "id": "UQWEhXH70jOp", 1469 | "outputId": "fd2ff454-9fe3-47b5-bd4c-02d9b153cfb3", 1470 | "colab": { 1471 | "base_uri": "https://localhost:8080/", 1472 | "height": 419 1473 | } 1474 | }, 1475 | "source": [ 1476 | "# Apenas para visualizar possibilidade\n", 1477 | "\n", 1478 | "df_relatorio.sort_values(['qtd_loja'], ascending=False)" 1479 | ], 1480 | "execution_count": 0, 1481 | "outputs": [ 1482 | { 1483 | "output_type": "execute_result", 1484 | "data": { 1485 | "text/html": [ 1486 | "
\n", 1487 | "\n", 1500 | "\n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | " \n", 1593 | " \n", 1594 | " \n", 1595 | " \n", 1596 | " \n", 1597 | " \n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | "
materialqtd_lojaqtd_vendasporcentagemstatus
2800400464152501.200000alerta
118840014484621727.176471alerta
87740010644403146.666667alerta
292940052704011401.000000alerta
3579400639133001.200000alerta
..................
5144000597000.000000
5134000596000.000000
5124000595040.000000
21424003005000.000000
22914003569000.000000
\n", 1602 | "

4582 rows × 5 columns

\n", 1603 | "
" 1604 | ], 1605 | "text/plain": [ 1606 | " material qtd_loja qtd_vendas porcentagem status\n", 1607 | "2800 4004641 525 0 1.200000 alerta\n", 1608 | "1188 4001448 462 17 27.176471 alerta\n", 1609 | "877 4001064 440 3 146.666667 alerta\n", 1610 | "2929 4005270 401 1 401.000000 alerta\n", 1611 | "3579 4006391 330 0 1.200000 alerta\n", 1612 | "... ... ... ... ... ...\n", 1613 | "514 4000597 0 0 0.000000 \n", 1614 | "513 4000596 0 0 0.000000 \n", 1615 | "512 4000595 0 4 0.000000 \n", 1616 | "2142 4003005 0 0 0.000000 \n", 1617 | "2291 4003569 0 0 0.000000 \n", 1618 | "\n", 1619 | "[4582 rows x 5 columns]" 1620 | ] 1621 | }, 1622 | "metadata": { 1623 | "tags": [] 1624 | }, 1625 | "execution_count": 87 1626 | } 1627 | ] 1628 | }, 1629 | { 1630 | "cell_type": "markdown", 1631 | "metadata": { 1632 | "colab_type": "text", 1633 | "id": "19cSfVoB3ekZ" 1634 | }, 1635 | "source": [ 1636 | "# **Exportanto Dados**" 1637 | ] 1638 | }, 1639 | { 1640 | "cell_type": "markdown", 1641 | "metadata": { 1642 | "colab_type": "text", 1643 | "id": "yfpI7RJP3i4R" 1644 | }, 1645 | "source": [ 1646 | "df.to_csv('nome_do_arquivo.csv', sep='caracter para separar os dados', index=False)" 1647 | ] 1648 | }, 1649 | { 1650 | "cell_type": "code", 1651 | "metadata": { 1652 | "colab_type": "code", 1653 | "id": "gyuZQnV13Hnp", 1654 | "colab": {} 1655 | }, 1656 | "source": [ 1657 | "df_relatorio.to_csv('Relatório_Final.csv',sep=';',index=False)" 1658 | ], 1659 | "execution_count": 0, 1660 | "outputs": [] 1661 | }, 1662 | { 1663 | "cell_type": "markdown", 1664 | "metadata": { 1665 | "id": "hUg7dWqJKJJ2", 1666 | "colab_type": "text" 1667 | }, 1668 | "source": [ 1669 | "Vamos agora exportar para excel, o tipo de exportação mais utilizado" 1670 | ] 1671 | }, 1672 | { 1673 | "cell_type": "markdown", 1674 | "metadata": { 1675 | "colab_type": "text", 1676 | "id": "CDC7yDpe4Upn" 1677 | }, 1678 | "source": [ 1679 | "writer = pd.ExcelWriter('Relatório Final.xlsx')\n", 1680 | "\n", 1681 | "df.to_excel(writer, sheet_name='nome_aba1', index=False)\n", 1682 | "df.to_excel(writer, sheet_name='nome_aba2',index=False)\n", 1683 | "\n", 1684 | "writer.save()" 1685 | ] 1686 | }, 1687 | { 1688 | "cell_type": "code", 1689 | "metadata": { 1690 | "colab_type": "code", 1691 | "id": "FS09grtl4K3T", 1692 | "colab": {} 1693 | }, 1694 | "source": [ 1695 | "writer = pd.ExcelWriter('Relatório Final.xlsx')\n", 1696 | "\n", 1697 | "df_relatorio.to_excel(writer, sheet_name='relatorio', index=False)\n", 1698 | "\n", 1699 | "writer.save()" 1700 | ], 1701 | "execution_count": 0, 1702 | "outputs": [] 1703 | }, 1704 | { 1705 | "cell_type": "markdown", 1706 | "metadata": { 1707 | "id": "L2ByItcBNEBP", 1708 | "colab_type": "text" 1709 | }, 1710 | "source": [ 1711 | " O index = False retira o index do nosso arquivo em excel " 1712 | ] 1713 | }, 1714 | { 1715 | "cell_type": "markdown", 1716 | "metadata": { 1717 | "id": "m4F5NeLqODas", 1718 | "colab_type": "text" 1719 | }, 1720 | "source": [ 1721 | "Podemos colocar um executavel do python em uma mesma pasta com os arquivos que foram utilizados para criar nosso conjunto de dados. Assim poderiamos alterar os arquivos e ao dar dois cliques no executavel (esse notebook que criamos) ele já atualiza um novo conjunto de dados." 1722 | ] 1723 | } 1724 | ] 1725 | } --------------------------------------------------------------------------------