- InfinitePy Newsletter 🇧🇷
- Posts
- Analisando dados de vendas do Excel com Python Pandas e Seaborn - Parte I
Analisando dados de vendas do Excel com Python Pandas e Seaborn - Parte I
No mundo moderno, orientado por dados, analisar dados de vendas pode oferecer insights tremendos sobre o desempenho dos negócios, o comportamento do cliente e potenciais oportunidades de crescimento.
🕒 Tempo estimado de leitura: 8 minutos
Na era digital, dados são rei. Empresas dependem de insights orientados por dados para guiar suas decisões, prever tendências e otimizar operações. Uma fonte comum de dados empresariais estão frequentemente armazenado em planilhas do Excel. Aqui, demonstraremos como aproveitar o poder das bibliotecas Pandas e Seaborn do Python para analisar dados de vendas, visualizar tendências e extrair insights. Cobriremos tópicos básicos, intermediários e avançados em Python, fornecendo exemplos práticos para cada nível de proficiência.
Agora, vamos mergulhar no mundo da análise de dados do Excel com alguns exemplos práticos que também estão disponíveis no Google Colab aqui 👨🔬.
Se você estiver interessado em aprender mais sobre como trabalhar com arquivos CSV usando a biblioteca Pandas do Python, consulte um de nossos artigos anteriores aqui.
Configurando o Ambiente
Para começar, certifique-se de que você tem as bibliotecas necessárias instaladas. Se ainda não as tiver, instale Pandas e Seaborn executando:
# Importar as bibliotecas necessárias import pandas as pd # pandas é usado para manipulação e análise de dados import seaborn as sns # seaborn é usado para visualização de dados
Primeiro, vamos importar as bibliotecas necessárias:
# Importar bibliotecas necessárias para análise e visualização de dados # Biblioteca de expressões regulares para correspondência e manipulação de strings import re # Para buscar dados da internet from urllib.request import urlretrieve # pandas é usado para manipulação e análise de dados import pandas as pd # seaborn é usado para visualização de dados import seaborn as sns # matplotlib.pyplot é usado para criar visualizações estáticas, animadas e interativas import matplotlib.pyplot as plt
Baixando e Carregando Dados
Vamos começar baixando os arquivos de dados dos URLs fornecidos e salvando-os localmente.
# Baixe os dados dos clientes e salve como 'customers.xlsx' urlretrieve("https://infinitepy.s3.amazonaws.com/samples/24c4e0bb-3603-4848-b051-8b68a467783d/customers1000.xlsx", "customers.xlsx") # Baixe os dados dos pedidos e salve como 'orders.xlsx' urlretrieve("https://infinitepy.s3.amazonaws.com/samples/24c4e0bb-3603-4848-b051-8b68a467783d/orders1000.xlsx", "orders.xlsx")
Carregando os dados em DataFrames do pandas.
# Carregar o arquivo 'customers.xlsx' em um DataFrame chamado clientes_df clientes_df = pd.read_excel('customers.xlsx') # Carregar o arquivo 'orders.xlsx' em um DataFrame chamado pedidos_df pedidos_df = pd.read_excel('orders.xlsx')
Imprimindo as primeiras 5 linhas dos DataFrames clientes e pedidos
Em nosso conjunto de dados de exemplo, o DataFrame clientes inclui as seguintes colunas:
CustomerID
Name
Email
Address e
Phone
O DataFrame pedidos possuem estas colunas:
OrderID
OrderDate
CustomerID
Product
Quantity e
Price.
As seguintes linhas de código chamam o método 'head' no DataFrame 'clientes_df' e 'pedidos_df'. O método 'head' retorna as primeiras 5 linhas do DataFrame por padrão. Isso é frequentemente usado para inspecionar rapidamente os primeiros registros e entender a estrutura e o conteúdo do DataFrame.
# Imprime as primeiras 5 linhas do DataFrame de clientes clientes_df.head()

Primeiras 5 linhas do DataFrame de clientes.
Imprimindo as primeiras 5 linhas do DataFrame pedidos.
# Imprimir as primeiras 5 linhas do DataFrame de pedidos pedidos_df.head()

Primeiras 5 linhas do DataFrame pedidos.
Conhecendo Seus Dados
Em um nível básico, explorar a estrutura e o resumo dos dados ajuda a entender seu conteúdo.
# A linha a seguir chama o método 'info()' em 'clientes_df'. # Este método é usado para obter um resumo conciso de um DataFrame. clientes_df.info()
Executar o código acima produzirá a seguinte saída.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 CustomerID 1000 non-null int64
1 Name 1000 non-null object
2 Email 1000 non-null object
3 Address 1000 non-null object
4 Phone 1000 non-null object
dtypes: int64(1), object(4)
memory usage: 39.2+ KB
O método 'info()' fornece um resumo do DataFrame, incluindo:
O índice de faixa (como contagem de linhas do DataFrame);
As colunas e seus tipos de dados;
As contagens de não nulos (quantos valores não nulos estão presentes em cada coluna);
Uso de memória do DataFrame.
Essas informações são incrivelmente úteis para entender a estrutura e integridade dos seus dados, especialmente ao lidar com valores ausentes, limpeza de dados e garantir que os conjuntos de dados sejam carregados conforme esperado.
# The following line calls the 'info()' method on 'pedidos_df'. # This method is used to get a concise summary of a DataFrame. pedidos_df.info()
Executar o código acima produzirá a seguinte saída.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5507 entries, 0 to 5506
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 OrderID 5507 non-null int64
1 OrderDate 5507 non-null datetime64[ns]
2 CustomerID 5507 non-null int64
3 Product 5507 non-null object
4 Quantity 5507 non-null int64
5 Price 5507 non-null float64
dtypes: datetime64[ns](1), float64(1), int64(3), object(1)
memory usage: 258.3+ KB
Verificando valores ausentes
# Verificando valores ausentes clientes_df.isnull().sum()
Executar o código acima produzirá a seguinte saída.
CustomerID 0
Name 0
Email 0
Address 0
Phone 0
dtype: int64
# Verificando valores ausentes pedidos_df.isnull().sum()
Executar o código acima produzirá a seguinte saída.
OrderID 0
OrderDate 0
CustomerID 0
Product 0
Quantity 0
Price 0
dtype: int64
O método '.isnull()' é chamado no DataFrame onde retorna um DataFrame da mesma forma que 'clientes_df', mas com valores booleanos:
True onde os elementos no DataFrame original são NaN (Not a Number),
e False onde não são.
'.sum()' é chamado no DataFrame retornado por '.isnull()' e isso soma os valores True (que são interpretados como 1) ao longo das colunas (eixo padrão). Portanto, '.sum()' retornará uma Serie com nomes de colunas como o índice e a contagem de valores NaN em cada coluna como os valores. O resultado é uma Série que nos informa quantos valores ausentes (NaNs) há em cada coluna do DataFrame 'clientes_df'.
Uma Pandas Series é um objeto unidimensional semelhante a uma matriz que pode conter vários tipos de dados, semelhante a uma coluna em uma planilha do Excel ou uma tabela SQL. É parte da biblioteca Pandas, que é extensivamente usada para manipulação e análise de dados no Python.
Verifique linhas duplicadas
A seguinte linha de código verifica linhas duplicadas no DataFrame.
'duplicated()' é um método que retorna uma Series indicando se cada linha é duplicada. Uma linha duplicada significa que ela tem os mesmos dados que outra linha já encontrada.
'sum()' é então chamado na Series resultante para contar o número de valores True.
Cada True indica uma linha duplicada, então 'sum()' dá a contagem total de duplicatas. O resultado é o total de linhas duplicadas nos DataFrames.
# Verificar linhas duplicadas clientes_df.duplicated().sum()
Executar o código acima produzirá a seguinte saída.
0
# Verificar linhas duplicadas pedidos_df.duplicated().sum()
Executar o código acima produzirá a seguinte saída.
0
Plotando um histograma da coluna 'Price' no DataFrame 'pedidos_df'
# Configurar o tema do Seaborn para uma melhor estética sns.set(style='darkgrid') # Plotando um histograma da coluna 'Preço' no DataFrame 'orders_df' # Usando 20 bins para o histograma e definindo o título do gráfico como 'Preço' # Isso também adiciona rótulos aos eixos e ajusta o tamanho da fonte para melhor legibilidade plt.figure(figsize=(10, 6)) hist_plot = sns.histplot(pedidos_df['Price'], bins=20, kde=False, color='skyblue') hist_plot.set_title('Distribuição de Preços', fontsize=16, weight='bold') hist_plot.set_xlabel('Preço', fontsize=14) hist_plot.set_ylabel('Frequência', fontsize=14) # Acessando a instância atual de Axes ax = plt.gca() # Personalizando o apelo visual - removendo as espinhas superior e direita ax.spines[['top', 'right']].set_visible(False) # Adicionando linhas de grade para melhor legibilidade ax.grid(True, linestyle='--', alpha=0.7) # Adicionando um layout compacto para melhor espaçamento plt.tight_layout() # Exibir o gráfico plt.show()

Distribuição de Preços.
Conclusão
Este guia, Parte I, introduziu as técnicas fundamentais para utilizar as poderosas bibliotecas Pandas e Seaborn do Python para realizar análises práticas de dados de vendas, estabelecendo a base do nível básico ao avançado. No próximo segmento, mergulharemos mais profundamente na seleção e filtragem de dados, mesclando DataFrames, calculando receita total por produto e muito mais.
Seguindo estes passos, você estará apto a transformar seus dados brutos em visualizações e análises perspicazes que permitem a tomada de decisões orientada por dados. Continue praticando com conjuntos de dados reais para aprimorar ainda mais suas habilidades e solidificar seu entendimento.
Sinta-se à vontade para responder a este boletim com qualquer dúvida ou tópicos que você gostaria que abordássemos no futuro.
Se você gostou deste boletim, não se esqueça de se inscrever para receber atualizações regularmente. Compartilhe com seus amigos e colegas interessados em Python e vamos crescer juntos em nossa comunidade de programadores!
Lembre-se, a chave para a maestria é prática e persistência. Feliz codificação! Até a próxima edição, continue programando! 👨💻
InfinitePy Newsletter - Sua fonte para aprendizado e inspiração em Python.