├── 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"," escritorio | \n"," operadora | \n"," material | \n"," data | \n"," valor_liquido | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," 101 | \n"," Vivo | \n"," 131318 RECARGA VIRTUAL VIVO R$ 1,00 | \n"," 02.01.2020 | \n"," 20.0 | \n","
\n"," \n"," | 1 | \n"," 101 | \n"," Vivo | \n"," 131318 RECARGA VIRTUAL VIVO R$ 1,00 | \n"," 30.12.2019 | \n"," 10.0 | \n","
\n"," \n"," | 2 | \n"," 101 | \n"," Vivo | \n"," 131318 RECARGA VIRTUAL VIVO R$ 1,00 | \n"," 04.01.2020 | \n"," 20.0 | \n","
\n"," \n","
\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"," loja | \n"," escritorio | \n"," uf | \n"," operadora | \n"," valor_bruto | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," AM | \n"," Claro | \n"," 2651 | \n","
\n"," \n"," | 1 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," AM | \n"," Oi | \n"," 3309 | \n","
\n"," \n"," | 2 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," AM | \n"," Tim | \n"," 1550 | \n","
\n"," \n","
\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"," loja | \n"," escritorio | \n"," uf | \n"," operadora | \n"," valor_bruto | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL BOA VISTA | \n"," 701 | \n"," RR | \n"," Claro | \n"," 140 | \n","
\n"," \n"," | 1 | \n"," BEMOL BOA VISTA | \n"," 701 | \n"," RR | \n"," Oi | \n"," 20 | \n","
\n"," \n"," | 2 | \n"," BEMOL BOA VISTA | \n"," 701 | \n"," RR | \n"," Tim | \n"," 135 | \n","
\n"," \n","
\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"," loja | \n"," escritorio | \n"," uf | \n"," operadora | \n"," valor_bruto | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL FARMA PORTO VELHO | \n"," 609 | \n"," RO | \n"," Claro | \n"," 486 | \n","
\n"," \n"," | 1 | \n"," BEMOL FARMA PORTO VELHO | \n"," 609 | \n"," RO | \n"," Oi | \n"," 90 | \n","
\n"," \n"," | 2 | \n"," BEMOL FARMA PORTO VELHO | \n"," 609 | \n"," RO | \n"," Tim | \n"," 90 | \n","
\n"," \n","
\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"," loja | \n"," escritorio | \n"," uf | \n"," operadora | \n"," valor_bruto | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," AC | \n"," Claro | \n"," 500 | \n","
\n"," \n"," | 1 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," AC | \n"," Oi | \n"," 375 | \n","
\n"," \n"," | 2 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," AC | \n"," Tim | \n"," 125 | \n","
\n"," \n","
\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"," loja | \n"," escritorio | \n"," operadora | \n"," valor_bruto | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," Claro | \n"," 2651 | \n","
\n"," \n"," | 1 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," Oi | \n"," 3309 | \n","
\n"," \n"," | 2 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," Tim | \n"," 1550 | \n","
\n"," \n"," | 3 | \n"," BEMOL AVENIDA | \n"," 103 | \n"," Vivo | \n"," 4739 | \n","
\n"," \n"," | 4 | \n"," BEMOL BARROSO | \n"," 107 | \n"," Claro | \n"," 1495 | \n","
\n"," \n"," | ... | \n"," ... | \n"," ... | \n"," ... | \n"," ... | \n","
\n"," \n"," | 157 | \n"," LOJA BEMOL JI-PARANA | \n"," 205 | \n"," Claro | \n"," 123 | \n","
\n"," \n"," | 158 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," Claro | \n"," 500 | \n","
\n"," \n"," | 159 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," Oi | \n"," 375 | \n","
\n"," \n"," | 160 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," Tim | \n"," 125 | \n","
\n"," \n"," | 161 | \n"," BEMOL RIO BRANCO | \n"," 401 | \n"," Vivo | \n"," 343 | \n","
\n"," \n","
\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"," operadora | \n"," escritorio | \n"," valor_liquido | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," Vivo | \n"," 103 | \n"," 4739 | \n","
\n"," \n"," | 1 | \n"," Vivo | \n"," 115 | \n"," 4616 | \n","
\n"," \n"," | 2 | \n"," Vivo | \n"," 604 | \n"," 4474 | \n","
\n"," \n"," | 3 | \n"," Vivo | \n"," 500 | \n"," 3751 | \n","
\n"," \n"," | 4 | \n"," Vivo | \n"," 106 | \n"," 3717 | \n","
\n"," \n"," | ... | \n"," ... | \n"," ... | \n"," ... | \n","
\n"," \n"," | 158 | \n"," Oi | \n"," 701 | \n"," 20 | \n","
\n"," \n"," | 159 | \n"," Tim | \n"," 530 | \n"," 20 | \n","
\n"," \n"," | 160 | \n"," Vivo | \n"," 206 | \n"," 15 | \n","
\n"," \n"," | 161 | \n"," Tim | \n"," 614 | \n"," 10 | \n","
\n"," \n"," | 162 | \n"," Tim | \n"," 611 | \n"," 10 | \n","
\n"," \n","
\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"," index | \n"," loja | \n"," operadora | \n"," escritorio | \n"," valor_bruto | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," 3 | \n"," BEMOL AVENIDA | \n"," Vivo | \n"," 103 | \n"," 4739 | \n","
\n"," \n"," | 1 | \n"," 19 | \n"," BEMOL CIDADE NOVA | \n"," Vivo | \n"," 115 | \n"," 4616 | \n","
\n"," \n"," | 2 | \n"," 43 | \n"," BEMOL FARMA GRANDE CIRCULAR | \n"," Vivo | \n"," 604 | \n"," 4474 | \n","
\n"," \n"," | 3 | \n"," 149 | \n"," BEMOL TORQUATO | \n"," Vivo | \n"," 500 | \n"," 3751 | \n","
\n"," \n"," | 4 | \n"," 137 | \n"," BEMOL SHOPPING | \n"," Vivo | \n"," 106 | \n"," 3704 | \n","
\n"," \n"," | ... | \n"," ... | \n"," ... | \n"," ... | \n"," ... | \n"," ... | \n","
\n"," \n"," | 157 | \n"," 156 | \n"," LOJA BEMOL FARMA ARIQUEMES | \n"," Vivo | \n"," 613 | \n"," 35 | \n","
\n"," \n"," | 158 | \n"," 128 | \n"," BEMOL PRESIDENTE FIGUEIREDO | \n"," Tim | \n"," 530 | \n"," 20 | \n","
\n"," \n"," | 159 | \n"," 9 | \n"," BEMOL BOA VISTA | \n"," Oi | \n"," 701 | \n"," 20 | \n","
\n"," \n"," | 160 | \n"," 152 | \n"," LOJA BEMOL ARIQUEMES | \n"," Vivo | \n"," 206 | \n"," 15 | \n","
\n"," \n"," | 161 | \n"," 46 | \n"," BEMOL FARMA ITACOATIARA | \n"," Tim | \n"," 611 | \n"," 10 | \n","
\n"," \n","
\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"," loja | \n"," operadora | \n"," escritorio | \n"," valor_bruto | \n"," valor_liquido | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL AVENIDA | \n"," Claro | \n"," 103 | \n"," 2651.0 | \n"," 2652 | \n","
\n"," \n"," | 1 | \n"," BEMOL AVENIDA | \n"," Oi | \n"," 103 | \n"," 3309.0 | \n"," 3309 | \n","
\n"," \n"," | 2 | \n"," BEMOL AVENIDA | \n"," Tim | \n"," 103 | \n"," 1550.0 | \n"," 1550 | \n","
\n"," \n"," | 3 | \n"," BEMOL AVENIDA | \n"," Vivo | \n"," 103 | \n"," 4739.0 | \n"," 4739 | \n","
\n"," \n"," | 4 | \n"," BEMOL BARROSO | \n"," Claro | \n"," 107 | \n"," 1495.0 | \n"," 1495 | \n","
\n"," \n","
\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"," loja | \n"," operadora | \n"," escritorio | \n"," valor_bruto | \n"," valor_liquido | \n"," status | \n","
\n"," \n"," \n"," \n"," | 0 | \n"," BEMOL AVENIDA | \n"," Claro | \n"," 103 | \n"," 2651.0 | \n"," 2652 | \n"," alerta | \n","
\n"," \n"," | 1 | \n"," BEMOL AVENIDA | \n"," Oi | \n"," 103 | \n"," 3309.0 | \n"," 3309 | \n"," | \n","
\n"," \n"," | 2 | \n"," BEMOL AVENIDA | \n"," Tim | \n"," 103 | \n"," 1550.0 | \n"," 1550 | \n"," | \n","
\n"," \n"," | 3 | \n"," BEMOL AVENIDA | \n"," Vivo | \n"," 103 | \n"," 4739.0 | \n"," 4739 | \n"," | \n","
\n"," \n"," | 4 | \n"," BEMOL BARROSO | \n"," Claro | \n"," 107 | \n"," 1495.0 | \n"," 1495 | \n"," | \n","
\n"," \n"," | ... | \n"," ... | \n"," ... | \n"," ... | \n"," ... | \n"," ... | \n"," ... | \n","
\n"," \n"," | 158 | \n"," LOJA BEMOL FARMA JI PARANA | \n"," Oi | \n"," 616 | \n"," 95.0 | \n"," 95 | \n"," | \n","
\n"," \n"," | 159 | \n"," LOJA BEMOL FARMA JI PARANA | \n"," Tim | \n"," 616 | \n"," 50.0 | \n"," 50 | \n"," | \n","
\n"," \n"," | 160 | \n"," LOJA BEMOL FARMA JI PARANA | \n"," Vivo | \n"," 616 | \n"," 70.0 | \n"," 70 | \n"," | \n","
\n"," \n"," | 161 | \n"," LOJA BEMOL JI-PARANA | \n"," Claro | \n"," 205 | \n"," 123.0 | \n"," 123 | \n"," | \n","
\n"," \n"," | 162 | \n"," 0 | \n"," Tim | \n"," 614 | \n"," 0.0 | \n"," 10 | \n"," alerta | \n","
\n"," \n","
\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 | "
"
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 | " material | \n",
818 | " qtd_vendas | \n",
819 | "
\n",
820 | " \n",
821 | " \n",
822 | " \n",
823 | " | 0 | \n",
824 | " 4000013 | \n",
825 | " 6 | \n",
826 | "
\n",
827 | " \n",
828 | " | 1 | \n",
829 | " 4000014 | \n",
830 | " 1 | \n",
831 | "
\n",
832 | " \n",
833 | " | 2 | \n",
834 | " 4000015 | \n",
835 | " 8 | \n",
836 | "
\n",
837 | " \n",
838 | " | 3 | \n",
839 | " 4000016 | \n",
840 | " 3 | \n",
841 | "
\n",
842 | " \n",
843 | " | 4 | \n",
844 | " 4000017 | \n",
845 | " 6 | \n",
846 | "
\n",
847 | " \n",
848 | "
\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 | " material | \n",
986 | " qtd_pedido | \n",
987 | " qtd_estoque | \n",
988 | " qtd_vendas | \n",
989 | "
\n",
990 | " \n",
991 | " \n",
992 | " \n",
993 | " | 0 | \n",
994 | " 4000010 | \n",
995 | " 250.0 | \n",
996 | " 25.0 | \n",
997 | " NaN | \n",
998 | "
\n",
999 | " \n",
1000 | " | 1 | \n",
1001 | " 4000013 | \n",
1002 | " NaN | \n",
1003 | " NaN | \n",
1004 | " 6.0 | \n",
1005 | "
\n",
1006 | " \n",
1007 | " | 2 | \n",
1008 | " 4000014 | \n",
1009 | " 60.0 | \n",
1010 | " 6.0 | \n",
1011 | " 1.0 | \n",
1012 | "
\n",
1013 | " \n",
1014 | "
\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 | " material | \n",
1082 | " qtd_pedido | \n",
1083 | " qtd_estoque | \n",
1084 | " qtd_vendas | \n",
1085 | "
\n",
1086 | " \n",
1087 | " \n",
1088 | " \n",
1089 | " | 0 | \n",
1090 | " 4000010 | \n",
1091 | " 250.0 | \n",
1092 | " 25.0 | \n",
1093 | " 0.0 | \n",
1094 | "
\n",
1095 | " \n",
1096 | " | 1 | \n",
1097 | " 4000013 | \n",
1098 | " 0.0 | \n",
1099 | " 0.0 | \n",
1100 | " 6.0 | \n",
1101 | "
\n",
1102 | " \n",
1103 | "
\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 | " material | \n",
1375 | " qtd_loja | \n",
1376 | " qtd_vendas | \n",
1377 | " porcentagem | \n",
1378 | " status | \n",
1379 | "
\n",
1380 | " \n",
1381 | " \n",
1382 | " \n",
1383 | " | 6 | \n",
1384 | " 4000019 | \n",
1385 | " 7 | \n",
1386 | " 151 | \n",
1387 | " 0.046358 | \n",
1388 | " | \n",
1389 | "
\n",
1390 | " \n",
1391 | " | 7 | \n",
1392 | " 4000020 | \n",
1393 | " 9 | \n",
1394 | " 27 | \n",
1395 | " 0.333333 | \n",
1396 | " | \n",
1397 | "
\n",
1398 | " \n",
1399 | " | 139 | \n",
1400 | " 4000173 | \n",
1401 | " 2 | \n",
1402 | " 3 | \n",
1403 | " 0.666667 | \n",
1404 | " | \n",
1405 | "
\n",
1406 | " \n",
1407 | " | 247 | \n",
1408 | " 4000301 | \n",
1409 | " 1 | \n",
1410 | " 2 | \n",
1411 | " 0.500000 | \n",
1412 | " | \n",
1413 | "
\n",
1414 | " \n",
1415 | " | 275 | \n",
1416 | " 4000331 | \n",
1417 | " 1 | \n",
1418 | " 5 | \n",
1419 | " 0.200000 | \n",
1420 | " | \n",
1421 | "
\n",
1422 | " \n",
1423 | "
\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 | " material | \n",
1505 | " qtd_loja | \n",
1506 | " qtd_vendas | \n",
1507 | " porcentagem | \n",
1508 | " status | \n",
1509 | "
\n",
1510 | " \n",
1511 | " \n",
1512 | " \n",
1513 | " | 2800 | \n",
1514 | " 4004641 | \n",
1515 | " 525 | \n",
1516 | " 0 | \n",
1517 | " 1.200000 | \n",
1518 | " alerta | \n",
1519 | "
\n",
1520 | " \n",
1521 | " | 1188 | \n",
1522 | " 4001448 | \n",
1523 | " 462 | \n",
1524 | " 17 | \n",
1525 | " 27.176471 | \n",
1526 | " alerta | \n",
1527 | "
\n",
1528 | " \n",
1529 | " | 877 | \n",
1530 | " 4001064 | \n",
1531 | " 440 | \n",
1532 | " 3 | \n",
1533 | " 146.666667 | \n",
1534 | " alerta | \n",
1535 | "
\n",
1536 | " \n",
1537 | " | 2929 | \n",
1538 | " 4005270 | \n",
1539 | " 401 | \n",
1540 | " 1 | \n",
1541 | " 401.000000 | \n",
1542 | " alerta | \n",
1543 | "
\n",
1544 | " \n",
1545 | " | 3579 | \n",
1546 | " 4006391 | \n",
1547 | " 330 | \n",
1548 | " 0 | \n",
1549 | " 1.200000 | \n",
1550 | " alerta | \n",
1551 | "
\n",
1552 | " \n",
1553 | " | ... | \n",
1554 | " ... | \n",
1555 | " ... | \n",
1556 | " ... | \n",
1557 | " ... | \n",
1558 | " ... | \n",
1559 | "
\n",
1560 | " \n",
1561 | " | 514 | \n",
1562 | " 4000597 | \n",
1563 | " 0 | \n",
1564 | " 0 | \n",
1565 | " 0.000000 | \n",
1566 | " | \n",
1567 | "
\n",
1568 | " \n",
1569 | " | 513 | \n",
1570 | " 4000596 | \n",
1571 | " 0 | \n",
1572 | " 0 | \n",
1573 | " 0.000000 | \n",
1574 | " | \n",
1575 | "
\n",
1576 | " \n",
1577 | " | 512 | \n",
1578 | " 4000595 | \n",
1579 | " 0 | \n",
1580 | " 4 | \n",
1581 | " 0.000000 | \n",
1582 | " | \n",
1583 | "
\n",
1584 | " \n",
1585 | " | 2142 | \n",
1586 | " 4003005 | \n",
1587 | " 0 | \n",
1588 | " 0 | \n",
1589 | " 0.000000 | \n",
1590 | " | \n",
1591 | "
\n",
1592 | " \n",
1593 | " | 2291 | \n",
1594 | " 4003569 | \n",
1595 | " 0 | \n",
1596 | " 0 | \n",
1597 | " 0.000000 | \n",
1598 | " | \n",
1599 | "
\n",
1600 | " \n",
1601 | "
\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 | }
--------------------------------------------------------------------------------