Automação de tarefas em python: código 10887
- Escrever passo a passo em português do processo de execução de forma manual:
1) Acessar o sistema da empresa: (link)
Biblioteca: pyautogui
- pip install pyautogui (do terminal)
- import pyautogui
- import time
- pyautogui.<comando>>
#espera para digitação
pyautogui.pause = 0.5(segundo)
- Documentação:
google - pyautogui python
#abrir navegador
pyautogui.press("win")
pyautogui.write("chrome")
pyautogui.press("enter")
#entrar no site
link = "www.qualquernome.com"
pyautogui.write(link)
pyautogui.press("enter")
#dar uma pausa um pouco maior
time.sleep(3)
2) Fazer login:
++++ auxiliar.py ++++++++++++++
import pyautogui
import time
time.sleep(5)
print(pyautogui.position())
+++++++++++++++++++++++++++++++
pyautogui.click(x=714, y=465)
pyautogui.write("[email protected]")
#escrever a senha
pyautogui.press("tab")
pyautogui.write("sua senha aqui")
#clicar no botão de logar
pyautogui.click(x=952, y=680)
time.sleep(3)
3) Importar base de dados;
# pip import pandas numpy openpyxl
import pandas
tabela = pandas.read.csv("produtos.csv")
print(tabela)
4) Cadastrar 1 produto;
# para cada linha da minha tabela
for linha in tabela.index:
#clicar no 1º campo
pyautogui.click(x=709, y=319)
#codigo do produto
codigo = tabela.loc[linha, "codigo"]
pyautogui.write(codigo)
pyautogui.press("tab")
#marca
marca = tabela.loc[linha, "marca"]
pyautogui.write("marca")
pyautogui.press("tab")
#tipo
pyautogui.write(tabela.loc[linha, "tipo"])
pyautogui.press("tab")
#categoria
# str() string -> texto
# str(1) -> 1 -> "1"
pyautogui.write(str(tabela.loc[linha, "categoria"]))
pyautogui.press("tab")
#preco
pyautogui.write(str(tabela.loc[linha, "preco_unitario"]))
pyautogui.press("tab")
#custo
pyautogui.write(str(tabela.loc[linha, "custo"]))
pyautogui.press("tab")
#obs
obs = tabela.loc[linha, "obs"]
if not pandas.isna(obs):
pyautogui.write(obs)
pyautogui.press("tab")
#enviar
pyautogui.press("enter")
pyautogui.scroll(5000)
5) Repetir cadastramento até acabar a base.
=============================================================================
++Jupyter++
Aula 2 - Análise de dados
# Passo a passo do projeto:
# Passo 1: Importar a base de dados de clientes
# Passo 2: Visualizar a base de dados
# Passo 3: Corrigir os problemas da base de dados
# Passo 4: Análise dos cancelamentos
# Passo 5: Análise da causa do cancelamento
#Trabalhar com base de dados -> pandas
#Gráficos e dashboards -> plotly
!pip install pandas numpy openpyxl nb format ipykernel plotly
# Passo 1: Importar a base de dados de clientes
import pandas as pd
tabela = pd.read_csv("cancelamentos_sample.csv")
# Passo 2: Visualizar a base de dados
# colunas inúteis - informações que não te ajudam, te atrapalham
tabela = tabela.drop(columns="CustomerID")
display(tabela)
# Passo 3: Corrigir os problemas da base de dados
# valores vazios - erros de preenchmento
display(tabela.info())
tabela = tabela.dropna() #excluir linhas NaN
# Passo 4: Análise dos cancelamentos
display(tabela["cancelou"].value_counts())
display(tabela["cancelou"].value_counts(normalize=True)) #percentual
display(tabela["cancelou"].value_counts(normalize=True).map("{:.1%}".format)
#formato percentual
# Passo 5: Análise da causa do cancelamento
import plotly.express as px #ver tipos e formas de gráfico - plotly.com/python
# criar o gráfico
# para cada coluna da minha tabela
for coluna in tabela.columns:
grafico = px.histogram(tabela, x=coluna, color="cancelou")
# exibe o gráfico
grafico.show()
Conclusões a partir dos gráficos:
# se um cliente ligar mais de 4x para o call center, ele cancela
#criar um processo de retenção para mais de 3 ligações do mesmo cliente, para
não deixar mais de 20 dias de atraso no pagamento, oferecer descontos nos planos
trimestrais e anuais.
tabela = tabela[tabela["duracao_contrato"]!= "Monthly"] # sem duração do contrato
mensal
tabela = tabela[tabela["ligacoes_callcenter"]<=4] # sem ligação do callcenter acima
de 3 vezes
tabela = tabela[tabela["dias_atraso"]<=20] #sem atraso de pagamento
===================================================================================
====
Aula 3 - Inteligência Artificial - Case de score de crédito dos clientes
# Passo a passo do projeto:
# Passo 0 -> Entender o desafio da empresa
# Passo 1 -> Importar a base de dados
# Passo 2 -> Preparar a base de dados para IA
# Passo 3 -> Criar um modelo de IA -> Score crédito: Bom, Ok , ruim
# Passo 4 -> Escolher o melhor modelo
# Passo 5 -> Usar a nossa IA para fazer novas previsões
Bibliotecas:
pandas -> base de dados
scikit-learn -> IA
# Passo 1 -> Importar a base de dados
import pandas as pd
tabela = pd.read.csv("clientes.csv")
display(tabela)
display(tabela.info())
# Good (Bom), Standard(ok), Poor (Ruim)
# Passo 2 -> Preparar a base de dados para IA
# int -> número inteiro
# float -> número com casa decimal
# object -> texto
# Label Encoder - profissao, mix_credito, comportamento_pagamento
# profissão
# Engenheiro -> 1
# Cientista -> 2
# Advogado -> 3
# Artista -> 4
# Mecanico -> 5
# importar o label encoder
from sklearn.preprocessing import LabelEncoder
# criar o label encoder
codificador = LabelEncoder()
# aplicar o label encoder na coluna
tabela["profissao"] = codificador.fit_transform(tabela["profissao"])
# mix_credito
tabela["mix_credito"] = codificador.fit_transform(tabela["mix_credito"])
# comportamento_pagamento
tabela["comportamento_pagamento"] =
codificador.fit_transform(tabela["comportamento_pagamento"])
# 2 divisões
# quem eu quero prever, quem eu quero usar para fazer a previsão
y = tabela["score_credito"]
x = tabela.drop(columns=["score_credito","id_cliente"])
# treino e teste
from sklearn.model_selection import train_test_split
x_treino, x_teste, y_treino, y_teste = train_test_split(x,y, test_size=0.3)
# Passo 3 -> Criar um modelo de IA
# Árvore de Decisão
# KNN -> Vizinhos próximos (Nearest Neighbors)
# importar a IA
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
# criar a IA
modelo_arvoredecisao = RandomForestClassifier()
modelo_knn = KNeighborsClassifier()
# treina a IA
modelo_arvoredecisao.fit(x_treino, y_treino)
modelo_knn.fit(x_treino, y_treino)
# testar os modelos
previsao_arvoredecisao = modelo_arvoredecisao.predict(x_teste)
previsao_knn = modelo_knn.predict(x_teste)
from sklearn.metrics import accuracy_score
print(accuracy_score(y_teste, previsao_arvoredecisao))
print(accuracy_score(y_teste, previsao_knn))
# o melhor modelo é o de árvore de decisão
tabela_nova = pd.read.csv("novos_clientes.csv")
display(tabela_nova)
tabela_nova["profissao"] = codificador.fit_transform(tabela_nova["profissao"])
tabela_nova["mix_credito"] = codificador.fit_transform(tabela_nova["mix_credito"])
tabela_nova["comportamento_pagamento"] =
codificador.fit_transform(tabela_nova["comportamento_pagamento"])
previsoes = modelo_arvoredecisao.predict(tabela_nova)
display(previsoes)
===================================================================================
=====================
Aula 4 - Python Dev: Criação de sites e sistemas com python
# Título: Hashzap
# Botão de iniciar chat
# clicou no botão
# popup / modal
# Título: Bem vindo ao Hashzap
# campo: escreva seu nome no chat
# botão: entrar no chat
# chat
# embaixo do chat
# campo de Digite sua mensagem
# botão de enviar
# flet -> framework do Python
# django
# flask
# pip install flet
import flet as ft # importar
def main(pagina): # criar a função principal/main
texto = ft.Text("Hashzap")
chat = ft.Column()
def enviar_mensagem_tunel(mensagem):
# adicione a mensagem no chat
texto_mensagem = ft.Text(mensagem)
chat.controls.append(texto_mensagem)
pagina.update()
pagina.pubsub.subscribe(enviar_mensagem_tunel)
def enviar_mensagem(evento):
print("Enviar mensagem")
pagina.pubsub.send_all(f"{nome_usuario.value}: {campo_mensagem.value}")
# limpe o campo mensagem
campo_mensagem.value = ""
pagina.update()
campo_mensagem = ft.TextField(Label="Digite sua mensagem",
on_submit=enviar_mensagem)
botao_enviar = ft.ElevatedButton("Enviar", on_click=enviar_mensagem)
linha_enviar = ft.Row([campo_mensagem, botao_enviar])
def entrar_chat(evento):
print("Entrar no chat")
# fechar o popup
popup.open = false
# tirar o botão iniciar chat
pagina.remove(botao_iniciar)
# tirar o título hashzap
pagina.remove(texto)
# criar o chat
pagina.add(chat)
pagina.pubsub.send_all(f"{nome_usuario.value} entrou no chat")
# colocar o campo de digitar mensagem
# criar o botão de enviar
pagina.add(linha_enviar)
pagina.update()
titulo_popup = ft.Text("Bem vindo ao Hashzap")
nome_usuario = ft.TextField(Label="Escreva seu nome no chat")
botao_entrar = ft.ElevatedButton("Iniciar Chat", on_click=entrar_chat)
popup = ft.AlertDialog(
open=false,
modal=true,
title=titulo_popup,
content=nome_usuario,
actions=[botao_entrar]
)
def abrir_popup(evento):
pagina.dialog = popup
popup.open = true
pagina.update()
botao_iniciar = ft.ElevatedButton("Iniciar Chat", on_click=abrir_popup)
pagina.add(texto)
pagina.add(botao_iniciar)
ft.app(target=main) # criar o app chamando a função principal