Arquivo de etiquetas: pandas

Criação de ficheiro Excel com Python

Na jornada da análise de dados, a extração e organização de informações valiosas é crucial para embasar decisões estratégicas. Ao trabalhar com dados armazenados em bases de dados SQL, surge a necessidade de extrair esses dados e visualizá-los de maneira mais acessível e compreensível.

Nesse cenário, o Python destaca-se com sua biblioteca Pandas, oferecendo recursos poderosos para manipulação e análise de dados. A função to_excel do Pandas e a classe ExcelWriter são ferramentas essenciais nesse processo.

A função to_excel é uma funcionalidade simples e direta do Pandas, permitindo a exportação fácil e rápida de DataFrames para arquivos Excel. Com apenas algumas linhas de código é possível transformar conjuntos de dados complexos em planilhas estruturadas e visualmente atrativas.

Por outro lado, a classe ExcelWriter oferece um controle mais granular sobre a formatação do arquivo Excel. Ela permite a criação de arquivos mais elaborados, possibilitando a definição de configurações específicas, como formatação de células, múltiplos separadores, estilos e muito mais.

Essas ferramentas tornam-se fundamentais para profissionais e equipas que pretendem criar relatórios detalhados, dashboards ou compartilhar resultados de análises de dados de forma acessível e amigável para diferentes stakeholders.

Além disso, a capacidade de exportar dados SQL diretamente para um arquivo Excel simplifica o processo de comunicação entre equipas, facilitando a compreensão e a interpretação dos dados por partes interessadas que não estão familiarizadas com linguagens de consulta de base de dados.

Em resumo, a função to_excel e a classe ExcelWriter são recursos valiosos do Pandas que desempenham um papel crucial na transformação de dados SQL em visualizações ricas e formatadas em Excel. Essas ferramentas simplificam o processo de geração de relatórios e fortalecem a comunicação de insights vitais derivados da análise de dados.

Ver todo o script.

Espero que vos seja útil!

Bom ano de 2024!

Como copiar tabelas de Websites para o Pandas

Olá,

num projecto recente de previsão de séries temporais fui dirigido para um determinado tema que, de uma forma muito simples, pode “copiar” tabelas de Websites para o Python (Pandas).

Já havia trabalhado com Pandas e SQL, ou CSV, mas conseguir dados de html só mesmo com algo mais profundo na área de Web Scraping…

Para o caso aqui é muito mais simples, basta utilizar a função read_html() .

Esta função consegue ler tudo que seja <table> em html e importar para o Pandas.

Para teste poderemos utilizar a página “https://en.wikipedia.org/wiki/Python_(programming_language)“.

Script Python:

import pandas as pd
url = ‘_https://en.wikipedia.org/wiki/Python_(programming_language)’

pd.read_html(url)

Com isto, o Pandas importa todas as tabelas que encontrar na página html, separando-as por vírgula. De seguida, deveremos concentrar o pedido na tabela desejada, invocando a sua posição no vector, neste caso quero a segunda tabela (os índices começam em zero).

python_types = pd.read_html(url)[1]
python_types

Por fim, se der jeito, poderemos exportar esta tabela para Excel:

python_types.to_excel(r’python_types.xlsx’, sheet_name=’python_types’, index=False)

Este foi apenas um caso simples para utilização desta função do Pandas. Claro que pode ser muito mais útil e complexo se pretendermos agora juntar duas ou mais tabelas antes de exportar para Excel.

Espero que vos seja útil,

JG

Machine Learning: Bank Marketing Campaign Dataset

A equipa de marketing quer lançar uma nova campanha cujo objectivo é convencer os clientes a abrir depósitos a prazo.

Até agora a estratégia era ligar ao máximo número de pessoas, de forma indiscriminada, e tentar vender-lhe o produto. No entanto essa abordagem, para além de gastar mais recursos porque implica ter várias pessoas a ligar a todos os clientes, também é incómoda para alguns clientes que não gostam de ser incomodados com esse tipo de chamadas. Feitas as contas, chegou-se à conclusão que:

- Por cada cliente identificado como um bom candidado, e é alvo da campanha mas não adere ao depósito a prazo, o banco tem um custo de 500 euros.
- Por cada cliente que é identificado como mau candidado, e como tal não é alvo da campanha mas na verdade era um bom candidado e iria aderir, o banco tem um custo de 2000 euros.

Com base nesta informação, conseguem ajudar a equipa de marketing criando um modelo que seleccione os melhores candidatos para serem alvos da campanha, de forma a reduzir custos?

O dataset contêm informação sobre todos os clientes que foram alvo da campanha:

1 - age 
2 - job : type of job 
3 - marital : marital status
4 - education
5 - default: has credit in default? 
6 - housing: has housing loan? 
7 - loan: has personal loan? 
8 - pdays: number of days that passed by after the client was last contacted from a previous campaign 
9 - previous: number of contacts performed before this campaign and for this client 
10 - poutcome: outcome of the previous marketing campaign 
11 - emp.var.rate: employment variation rate - quarterly indicator 
12 - cons.price.idx: consumer price index - monthly indicator
13 - cons.conf.idx: consumer confidence index - monthly indicator 
14 - euribor3m: euribor 3 month rate - daily indicator 
15 - nr.employed: number of employees - quarterly indicator 

Output:

y: has the client subscribed a term deposit? 

Perguntas:

1. Quantas features estão disponíveis? Quantos clientes?
2. Quantos clientes têm no dataset que efectivamente aderiram ao depósito a prazo? E quantos não o fizeram?
3. Quais são as features mais relevantes para decidir se um cliente tem mais propensão para aderir ao depósito a prazo?
4. Qual o algoritmo que levou aos melhores resultados?
5. Qual/Quais as métricas de avaliação que usaram para comparar a performance dos vários modelos? Porquê?
6. Qual é o custo que o banco tem sem nenhum modelo?
7. Qual o custo que o banco passa a ter com o vosso modelo?   

Aceder ao projecto realizado em python.

https://github.com/JorgeGomes72/DataScience/blob/master/JGomes_project_Bank.ipynb

O projecto divide-se praticamente em cinco partes com todos os componentes desejados num processo de Data Science:
1) Análise, tratamento e transformação dos dados: remoção de variáveis, outliers, transformação de variáveis categóricas em numéricas, etc
2) Criação de uma Baseline da campanha imaginando que todos as pessoas acederiam à mesma
3) Procura dos melhores hiper-parâmetros dos diversos modelos a testar (é aqui que o processamento pode demorar horas!)
4) Criação dos modelos de machine learning, com os hiper-parâmetros recolhidos anteriormente
5) Análise dos resultados de todos os modelos testados e selecção do melhor, o que dará menor custo à campanha. Verificação das melhores features a usar no modelo.


No repositório existe também o dataset em formato csv.

Sintam-se à vontade para utilizar o código, espero que vos seja útil!

JG