Cálculos de receita e criação de variáveis
Calcule a receita por item, crie colunas de mês e trimestre e adicione um indicador de desconto para pedidos acima de um limite.
Cálculos de receita e criação de variáveis é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Pandas & NumPy Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Pandas & NumPy Academy inclui 4 aulas no total.
Calculando a receita por item
O cálculo mais fundamental em um conjunto de dados de vendas é a receita por item: o produto da quantidade pelo preço unitário de cada linha. Crie a coluna com uma multiplicação vetorizada para que o NumPy processe todas as linhas simultaneamente, sem um laço em Python. Essa coluna se torna a base de todas as agregações da análise.
import pandas as pd
df = pd.read_parquet('sales_clean.parquet')
df['revenue'] = df['quantity'] * df['unit_price']
print(df[['quantity', 'unit_price', 'revenue']].head())Extraindo colunas de mês e trimestre
Agrupar por períodos do calendário é essencial para analisar tendências. Use o acessador .dt em uma coluna de data e hora para extrair o ano, o mês e o trimestre. Armazená-los em colunas inteiras separadas torna as operações de groupby mais rápidas e permite filtrar por período com facilidade, sem analisar repetidamente as mesmas strings.
df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month
df['quarter'] = df['order_date'].dt.quarter
df['year_month'] = df['order_date'].dt.to_period('M')
print(df[['order_date', 'year', 'month', 'quarter', 'year_month']].head())Criando uma sinalização de desconto
As regras de negócio geralmente definem uma sinalização de desconto: pedidos cujo total ultrapassa um limite recebem um desconto. Use np.where ou uma comparação booleana para criar essa coluna binária com eficiência. Uma sinalização de desconto permite que os analistas comparem as distribuições de receita entre pedidos com desconto e pedidos pelo preço integral em uma única chamada de groupby.
import numpy as np
DISCOUNT_THRESHOLD = 500
df['is_discounted'] = np.where(df['revenue'] >= DISCOUNT_THRESHOLD, 1, 0)
print(df['is_discounted'].value_counts())
print(df.groupby('is_discounted')['revenue'].mean())Calculando a coluna de margem de lucro
Se o conjunto de dados incluir uma coluna cost_price, você poderá calcular a margem de lucro com (unit_price - cost_price) / unit_price. Use clip(lower=0) para limitar a zero as margens negativas causadas por erros nos dados antes de continuar a análise. As colunas de margem permitem fazer agregações de groupby com foco no lucro, além das agregações de receita.
df['margin'] = ((df['unit_price'] - df['cost_price']) / df['unit_price']).clip(lower=0)
print(df[['unit_price', 'cost_price', 'margin']].describe())Atributo de dias desde o primeiro pedido
A quantidade de dias entre o primeiro pedido de um cliente e o pedido atual é um atributo útil de tempo de relacionamento com o cliente. Calcule-a agrupando por customer_id, obtendo a menor data como data da coorte e subtraindo-a da data de cada linha. A aritmética de intervalos de tempo retorna uma coluna de valores timedelta64, que você converte em dias inteiros com .dt.days.
first_order = df.groupby('customer_id')['order_date'].transform('min')
df['days_since_first_order'] = (df['order_date'] - first_order).dt.days
print(df[['customer_id', 'order_date', 'days_since_first_order']].head())Faixa de tamanho do pedido com pd.cut
Divida a coluna de receita em faixas de tamanho rotuladas usando pd.cut() para criar um atributo ordinal de segmentação. Forneça bins e labels explícitos que correspondam às suas definições de negócio para pedidos pequenos, médios e grandes. A coluna resultante é uma Categorical do Pandas, que permite agrupamentos eficientes.
bins = [0, 100, 500, 2000, float('inf')]
labels = ['Small', 'Medium', 'Large', 'Enterprise']
df['order_size'] = pd.cut(df['revenue'], bins=bins, labels=labels)
print(df['order_size'].value_counts())Receita acumulada ao longo do tempo
Ordene o DataFrame por order_date e use cumsum() na coluna de receita para acompanhar como a receita total se acumulou ao longo do ano. Essa série acumulada facilita identificar se a receita está crescendo linearmente, acelerando ou se estabilizando, além de servir de base para um gráfico de cascata ou de linhas acumuladas.
df_sorted = df.sort_values('order_date')
df_sorted['cumulative_revenue'] = df_sorted['revenue'].cumsum()
print(df_sorted[['order_date', 'revenue', 'cumulative_revenue']].tail())Atributo de fim de semana versus dia útil
A propriedade dt.day_of_week retorna 0 (segunda-feira) a 6 (domingo). Marque sábado (5) e domingo (6) como pedidos de fim de semana para verificar se o comportamento de compra nesses dias difere do observado nos dias úteis. Esse é um atributo comum em EDA de varejo e em análises de testes A/B.
df['is_weekend'] = df['order_date'].dt.day_of_week >= 5
print(df.groupby('is_weekend')['revenue'].agg(['mean', 'count']))Classificando clientes por receita
Identifique seus principais clientes calculando a receita total por customer_id com groupby().sum() e depois classificando-os com .rank(ascending=False, method='dense'). Adicionar a classificação de volta ao DataFrame principal com map() permite filtrar os N principais clientes usando uma única condição booleana.
customer_revenue = df.groupby('customer_id')['revenue'].sum()
customer_rank = customer_revenue.rank(ascending=False, method='dense').astype(int)
df['customer_revenue_rank'] = df['customer_id'].map(customer_rank)
print(df[df['customer_revenue_rank'] <= 10][['customer_id', 'customer_revenue_rank']].drop_duplicates())Normalizando a receita com escore Z
Normalize a coluna de receita para um escore Z, de modo que você possa comparar os tamanhos dos pedidos entre diferentes categorias de produtos com faixas de preço muito distintas. Use (df['revenue'] - df['revenue'].mean()) / df['revenue'].std(). Escores Z acima de 3 ou abaixo de -3 são valores atípicos estatísticos que devem ser investigados antes da modelagem.
mean_rev = df['revenue'].mean()
std_rev = df['revenue'].std()
df['revenue_zscore'] = (df['revenue'] - mean_rev) / std_rev
outliers = df[df['revenue_zscore'].abs() > 3]
print(f'Outlier orders: {len(outliers)}')Salvando o DataFrame com atributos adicionais
Depois de adicionar colunas calculadas, salve o DataFrame enriquecido para que todos os notebooks das etapas seguintes comecem do mesmo estado consistente. Use to_parquet() para preservar os tipos de dados, especialmente a coluna Categorical order_size e a coluna de data e hora order_date. Documente as novas colunas em um pequeno bloco de comentário no início do script.
# New columns added:
# revenue, year, month, quarter, year_month
# is_discounted, order_size, is_weekend
# days_since_first_order, customer_revenue_rank, revenue_zscore
df.to_parquet('sales_features.parquet', index=False)
print('Feature DataFrame saved:', df.shape)Verificação rápida
Teste sua compreensão dos conceitos de Análise de Dados desta lição.
Recapitulação da lição
Nesta lição, você aprendeu: calcular colunas de receita e margem de lucro, extrair atributos temporais com o acessador .dt e criar atributos como sinalizações de desconto, faixas de tamanho de pedido e classificações de clientes. Em seguida, exploraremos a análise de groupby por região e categoria.
Aprenda Python com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Cálculos de receita e criação de variáveis” é grátis?
Sim — o texto completo de “Cálculos de receita e criação de variáveis” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Pandas & NumPy Academy, atualize para CoddyKit PRO. O curso de Pandas & NumPy Academy inclui 4 aulas no total.
O que vou aprender em “Cálculos de receita e criação de variáveis”?
Calcule a receita por item, crie colunas de mês e trimestre e adicione um indicador de desconto para pedidos acima de um limite. Você pratica Pandas & NumPy Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Pandas & NumPy Academy?
Nenhuma experiência prévia é necessária. Pandas & NumPy Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Cálculos de receita e criação de variáveis”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Pandas & NumPy Academy?
Sim. Cada aula de Pandas & NumPy Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Carregando e auditando o conjunto de dados de vendas
- Cálculos de receita e criação de variáveis
- Análise com GroupBy por região e categoria
- Visualização de tendências mensais