Como Usar Pandas para Análise de Dados no Excel

Tempo de leitura:

3–5 minutes

Neste artigo vou mostrar-te como podes manipular dados de uma base de dados com Python utilizando métodos mais simples que em Excel e Power Query. Vamos utilizar a biblioteca Pandas para manipular DataFrames e obter de forma dinâmica linhas e colunas da base de dados.

Com Python podes aceder a dados externos como ficheiros csv e manipular os mesmos para moldar as tabelas de acordo com a tua necessidade.

No cenário vamos obter um conjunto de dados através de um ficheiro csv, que será importado através do Power Query, mas vamos usar Python para moldar os dados em vez do Power Query!

Definir a DataFrame de base

Para começar o nosso cenário vamos converter os dados numa DataFrame, que é basicamente uma Tabela que pode ser de seguida trabalhada.

Para iniciar o código Python numa célula podemos aceder ao separador Formulas -> Inserir Python ou escrever diretamente numa célula: =PY

Um gráfico de dados em uma planilha do Excel, mostrando uma tabela com colunas 'Segmento_Mercado', 'Unidades_Vendidas' e 'Vendas_brutas', enquanto ao lado está um código Python usando o método filter().

df = pd.DataFrame(xl(“dados”))

O comando define uma variável “df” que representa a DataFrame. O nome “df” é apenas um exemplo, sendo que podes usar qualquer nome para representar a variável. O nome não pode conter espaços.

O método DataFrame do módulo pd (pandas) permite criar uma DataFrame através da query “dados”.

Para confirmar o código devemos pressionar: [CTRL] + [ENTER]

O resultado é um objeto de Python -> DataFrame, que podemos converter num intervalo (Array Dinâmico) e visualizar os dados na folha de cálculo.

Menu no Excel mostrando a opção 'Saída de Python' com submenus, incluindo 'Objeto Python' e 'Valor do Excel'.

Para definir a saída para um valor de Excel podemos também usar a combinação das teclas:

[CRTL] + [ALT] + [SHIFT] + [M]

O resultado apresentado na folha de cálculo.

Tela do Excel mostrando uma planilha com dados organizados em colunas como 'Segmento_Mercado', 'País', 'Produto', 'Bandas de Desconto', 'Unidades_Vendidas', 'Preço de Fabrico' e 'Vendas_Brutas'.

Mostrar apenas um conjunto de linhas no topo

Para mostrarmos apenas um conjunto de linhas do topo da DataFrame, de modo a obtermos uma amostra dos dados, podemos usar o método .head().

Sem argumentos o método devolve apenas as 5 primeiras linhas, mas podemos indicar o número de linhas pretendido.

Numa nova célula, vamos então executar o código, recorrendo agora à variável “df” que representa a nossa DataFrame.

df.head(5)

Captura da tela mostrando as 5 primeiras linhas de uma DataFrame no Excel, com colunas como Segmento_Mercado, País, Produto, unidades_Vendidas, preço de Fabricio e vendas_brutas.

Obter colunas específicas da DataFrame

Para obter colunas específicas da DataFrame, devemos indicar as colunas pelo seu nome. Se definirmos apenas uma coluna é devolvida uma Serie (Coluna). Selecionando mais do que uma coluna, obtemos uma DataFrame. Quando especificamos várias colunas estas devem ser especificadas como uma Lista (Estrutura de dados de Python).

df[[“Produto”, “Preço de fabrico”, “Vendas_brutas”]].head(5)

No exemplo serão devolvidas as 5 primeiras linhas das colunas: Produto, Preço de Fabrico e Vendas Brutas.

Exibição de um código Python no Excel para selecionar colunas específicas de uma DataFrame, mostrando as colunas 'Produto', 'Preço de fabrico' e 'Vendas_brutas' com os primeiros cinco resultados em uma tabela.

Devolver linhas e colunas específicas

Usando o método .loc é possível definir um conjunto de linhas e colunas especificas para selecionar da DataFrame.

df.loc[3:7, [‘Produto’, ‘Preço de fabrico’, ‘Ano’, ‘Margem’, ‘País’]]

Tela do Excel mostrando a execução de um comando Python para selecionar linhas e colunas específicas de uma DataFrame, com uma tabela de dados exibindo produtos e suas informações.

Usar o Método .filter()

Através do método filter() é possível também filtrar colunas específicas na DataFrame.

df.filter([“País”, “Produto”]).head(5)

Captura de tela do Excel mostrando código Python para filtrar colunas 'País' e 'Produto' de um DataFrame e exibir as 5 primeiras linhas.

Filtrar colunas com caracteres específicos

Usando o método .filter() podemos especificar, usando o parâmetro like, colunas com caracteres específicos para filtrar.

No exemplo, vamos filtrar todas as colunas que contém “_”.

df.filter(like=”_”).head(10)

Imagem de uma planilha do Excel mostrando uma tabela com dados de mercado, incluindo as colunas 'Segmento_Mercado', 'Unidades_Vendidas' e 'Vendas_brutas', e uma fórmula Python para filtrar os dados.

Selecionar colunas por tipo de dados

Com o método .select_dtypes() podemos selecionar colunas com um determinado tipo de dados.

Por exemplo podemos retornar apenas colunas que contem valores inteiros como tipo de dados.

df.select_dtypes(“int”).head(5)

Exibição de um código Python no Excel com um DataFrame e a função df.select_dtypes("int").head(5) destacada, mostrando colunas 'Preço de fabrico', 'Preço de venda', 'Num Mês' e 'Ano'.

Podemos colocar o parâmetro “float” para selecionar colunas com tipo de dados -> Decimal.

df.select_dtypes(“float”).head(5)

Print screen de um código Python em Excel que utiliza a função df.select_dtypes('float').head(5) para selecionar colunas de tipo float. A tabela abaixo exibe dados de 'Unidades_Vendidas', 'Vendas_brutas', 'Desconto', 'Vendas', 'Custos Globais' e 'Margem' com valores numéricos.

Incluir colunas com múltiplos tipos de dados

Se acrescentarmos o parâmetro include selecionamos colunas com vários tipos de dados.

df.select_dtypes(include = [“int”, “float”]).head(5)

Imagem de uma planilha do Excel exibindo uma tabela com dados, incluindo colunas como 'Unidades_Vendidas', 'Preço de fabrico', 'Preço de venda', e um snippet de código Python para selecionar tipos de dados inteiros e flutuantes.

E se o objetivo é excluir um conjunto de colunas de acordo com o Tipo de Dados, podemos usar o parâmetro exclude.

df.select_dtypes(exclude = [“int”, “float”]).head(5)

Tela do Excel mostrando uma tabela com dados organizados em colunas, incluindo 'Segmento_Mercado', 'País', 'Produto', 'Banda de Desc/ Data', e 'Nome do Mês'. Há um código em Python na célula superior, utilizando o método select_dtypes para filtrar colunas, excluindo tipos de dados 'int' e 'float'.

Definir uma máscara (mask) para o critério de filtro

Podemos atribuir critérios de filtro diversos, combinando por exemplo a lógica “AND” e “OR”. Para tornar o código mais fácil de interpretar e ler, normalmente usa-se o conceito de máscara, que armazena os critérios e depois é utilizado como parâmetro do método .loc visto anteriormente.

mask = df[“País”] == “Alemanha”

df.loc[mask].head(10)

Imagem mostrando uma planilha do Excel com uma DataFrame, incluindo colunas como Segmento_Merc, País, Produto e Vendas. Uma fórmula em Python para filtrar dados com base na condição do país ser Alemanha é exibida.

Agora um exemplo com múltiplos critérios onde aplicamos o conceito lógico “AND” que é usado com “&” para definir múltiplos critérios.

mask = (df[“País”] == “Alemanha”) & (df[“Produto”] == “Montana”)

df.loc[mask]

Screenshot of an Excel spreadsheet displaying a DataFrame with a Python code snippet for filtering data. The code uses logical AND to create a mask based on specific criteria for 'País' and 'Produto'.

Se alterarmos a lógica para “OR” -> | obtemos todos os valores com o país – Alemanha ou o produto – Montana.

mask = (df[“País”] == “Alemanha”) | (df[“Produto”] == “Montana”)

df.loc[mask]

Tela do Excel exibindo uma DataFrame com uma fórmula Python que utiliza lógica OR para filtrar dados. O exemplo mostra colunas como 'Segmento_Mercado', 'País', e 'Produto'.

E naturalmente com o método loc podemos também escolher as colunas que pretendemos devolver.

mask = (df[“País”] == “Alemanha”) | (df[“Produto”] == “Montana”)

df.loc[mask , [“País”, “Produto”, “Vendas”]]

Tabela do Excel mostrando uma DataFrame com colunas para País, Produto e Vendas, junto de um comando Python para filtrar os dados.

Usar o Excel para definir um critério dinâmico

E já que estamos a usar Python no Excel, porque não aproveitar o potencial do Excel. Podemos usar as células do Excel como Inputs para definir os parâmetros de filtro de uma forma dinâmica.

mask = (df[“Unidades_Vendidas”] >= xl(“B3”)) & (df[“Vendas”] >= xl(“B4”))

df.loc[mask , [“País”, “Produto”, “Unidades_Vendidas”, “Vendas”]]

Exemplo de uma planilha do Excel mostrando uma DataFrame com colunas para País, Produto, Unidades Vendidas e Vendas, junto com um código Python para filtrar dados.

E como podes ver com apenas alguns comandos de Python moldamos o intervalo de inúmeras formas e feitios!

Próximo artigo:

Artigo Anterior:


Comments

Leave a Reply

Discover more from Exceldriven

Subscribe now to keep reading and get access to the full archive.

Continue reading