3 Formas de Editar Linhas em Tabelas do Pandas – Python
Você sabe como editar linhas em tabelas do Pandas? Aprenda 3 formas diferentes de fazer isso e torne suas consultas mais rápidas!
Há três formas principais de editar linhas em tabelas do Pandas: operações vetorizadas (mexendo na coluna inteira de uma vez), laço for percorrendo cada linha, e a função apply(). As operações vetorizadas são de longe as mais rápidas, pois o Pandas processa tudo em bloco; o for costuma ser o mais lento, usado só quando necessário.
Se quiser pode acompanhar esse conteúdo em formato de vídeo ou pode acessar o nosso Canal do YouTube para mais vídeos!
O que você aprende neste vídeo
Resposta rápida: A aula compara as três formas de editar todas as linhas de um DataFrame do pandas: operação vetorizada na coluna inteira, laço for com .loc e apply. Você aprende a criar coluna com .str, a preencher um desconto só nos projetos finalizados e a trocar o for por apply com axis=1. A vetorizada segue sendo a mais rápida.
Neste vídeo (20 min):
- 2:10 - Forma 1, operação vetorizada: nova coluna com o número do projeto recortado do código por
base['Código Projeto'].str[3:] - 4:00 - Operações entre colunas inteiras, como somar ou dividir uma pela outra, e funções de data pelo acessor
.dt - 5:00 - Por que a operação na coluna inteira é a mais eficiente: usa o motor nativo do pandas, com menos erro e menos memória
- 5:45 - Forma 2, o laço
for: o caso do percentual de desconto só dos projetos Finalizados, conferindo os status com.unique() - 7:20 -
for linha in base.indexpercorre os índices ebase.loc[linha, 'Status']lê o valor pela linha e pela coluna - 8:20 - No
if, a coluna% Desconto Finalizadosrecebe desconto concedido dividido pelo valor orçado; noelse, zero - 10:00 - Filtro
base[base['Status'] == 'Finalizado']e.mean()conferem a média de desconto dos projetos finalizados: 7% - 11:20 - Quando o
forfaz sentido: executar uma ação por linha, como enviar um e-mail, e não editar a própria tabela - 12:20 - Forma 3, o
apply: criar a funçãocalcular_desconto_finalizado(linha), que recebe a linha inteira com os rótulos - 13:20 - Dentro da função,
linha['Status']lê a coluna direto na linha e dispensa o.loccom número de índice - 15:30 -
base['% Desconto Finalizados2'] = base.apply(calcular_desconto_finalizado, axis=1), comaxis=1para percorrer as linhas - 18:10 - Mesma média de 7% nas duas colunas, e o tempo de execução cai de 0,2 s no
forpara 0,0 s noapply
Trechos do vídeo:
- Operação feita na coluna inteira usa a forma nativa do pandas: é a mais rápida, erra menos e consome menos memória que percorrer linha a linha.
- O laço
forcom.locresolve bem em bases pequenas, mas perde velocidade em tabelas com centenas de milhares ou milhões de linhas. - Na função passada ao
apply, o parâmetro é a própria linha com seus rótulos, entãolinha['Status']lê o valor sem localizar pelo índice. - A função do
applysó retorna um valor; quem grava o resultado na tabela é a atribuição à nova coluna, o que permite reaproveitar a mesma função em outras colunas. - O
forcontinua sendo a escolha certa quando cada linha dispara uma ação fora da tabela, como enviar um e-mail.
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
3 Formas de Editar Linhas em Tabelas do Pandas – Python
A biblioteca Pandas é uma das mais importantes em Python quando trabalhamos com dados. Ela oferece diversos recursos que permitem aumentar a eficiência do seu código e a velocidade das suas análises de dados.
Hoje, vou te mostrar 3 formas de editar linhas em tabelas do Pandas: operações diretas nas colunas, o uso de loops for e a aplicação da função apply.
Veremos como aplicar cada uma dessas abordagens e comparar o tempo de execução de cada método, para que você possa escolher a melhor opção e otimizar seus códigos de análise de dados.
Apresentando a Base de Dados – Visualizando o DataFrame
Durante esta aula, usaremos uma base de dados que contém informações sobre o status de diferentes projetos de uma empresa.
A base inclui detalhes como o código do projeto, o setor responsável, valores orçados e negociados, descontos concedidos, datas de início e término, além do status atual dos projetos.
Para acompanhar esta aula, é importante que você tenha as bibliotecas Pandas e OpenPyXL instaladas no seu computador. Caso não tenha, execute o seguinte comando no terminal do seu editor de código: pip install pandas openpyxl
Feito isso, vamos criar nosso DataFrame utilizando o Pandas e visualizar as informações da nossa base de dados.
import pandas as pd
base = pd.read_excel("Base.xlsx")
display(base)
Essa é uma base relativamente pequena, com 2633 linhas, mas será suficiente para que você entenda cada uma das formas de editar as linhas de uma tabela e possa avaliar a melhor abordagem.
Operações Diretas nas Colunas – Operações Vetorizadas
As operações diretas nas colunas, também chamadas de operações vetorizadas, são a maneira mais eficiente de editar dados em uma tabela do Pandas.
Essa abordagem se aproveita da capacidade do Pandas de manipular colunas inteiras de forma vetorizada, tornando as operações rápidas e eficientes em termos de memória.
Por exemplo, para criar uma nova coluna, você pode realizar operações diretamente nas colunas existentes, como extrair os últimos quatro caracteres da coluna Código do Projeto para gerar uma nova coluna apenas com o número do projeto.
Podemos usar o método .str para manipular strings em uma coluna inteira do DataFrame, extraindo apenas os caracteres finais de cada linha e salvando o resultado em uma nova coluna:
base["Num Projeto"] = base["Código Projeto"].str[3:]
display(base)
Essa é a melhor forma de realizar operações em todas as linhas de uma tabela Pandas. As operações vetorizadas são rápidas e eficientes, reduzindo as chances de erro e otimizando o uso da memória do seu computador.
Saiba mais em: Operações Vetorizadas – Deixando Código Pandas Mais Rápido
Uso de Loop For
Em alguns casos, operações vetorizadas podem não ser suficientes para análises mais complexas. Nesses cenários, dois caminhos são possíveis: o uso de loops for ou a função apply.
Muitas vezes, pela familiaridade com a estrutura for, podemos optar por ela para realizar operações mais complexas. No entanto, o loop for é uma abordagem menos eficiente para editar dados em tabelas do Pandas.
Imagine que você precise calcular o percentual de desconto apenas para os projetos finalizados dessa empresa.
Utilizando a abordagem com um loop for, você pode percorrer todas as linhas da tabela, verificando se o valor na coluna Status é Finalizado.
Se for o caso, uma nova coluna será preenchida com o cálculo do percentual de desconto. Caso contrário, o valor inserido será 0.
for linha in base.index:
if base.loc[linha, "Status"] == "Finalizado":
base.loc[linha, "% Desconto Finalizados"] = base.loc[linha, "Desconto Concedido"] / base.loc[linha, "Valor Orçado"]
else:
base.loc[linha, "% Desconto Finalizados"] = 0
display(base)
Apesar de a lógica estar correta, essa não é a forma mais eficiente.
Como o Pandas precisa percorrer todas as linhas, verificar condições e aplicar os cálculos individualmente, o desempenho será comprometido, especialmente ao lidar com grandes volumes de dados.
Uso da Função Apply
Uma maneira mais eficiente de executar a mesma lógica do loop for é criar uma função e aplicá-la ao DataFrame usando o método apply do Pandas.
Essa função recebe como argumento uma função, que será aplicada ao longo de todo um eixo do DataFrame, e o eixo correspondente, que nesse caso será o eixo 1 (axis=1) referente às linhas.
def calcular_desconto_finalizado(linha):
if linha["Status"] == "Finalizado":
return linha["Desconto Concedido"] / linha["Valor Orçado"]
else:
return 0
base["% Desconto Finalizados2"] = base.apply(calcular_desconto_finalizado, axis=1)
display(base)
O resultado será o mesmo que o do loop for, mas de uma maneira mais otimizada, rápida e eficiente.
A função apply é recomendada quando precisamos realizar operações complexas em todas as linhas ou colunas de maneira mais eficiente. Ela combina a flexibilidade do for com a eficiência das operações vetorizadas.
Essa abordagem é especialmente indicada para grandes datasets, quando as operações vetorizadas não podem ser utilizadas.
Medindo o Tempo de Execução – %%timeit
Se você estiver trabalhando no Jupyter Notebook ou no VS Code com a extensão do Jupyter, poderá medir o tempo de execução de cada processo usando o comando %%timeit.
Esse comando especial do Jupyter Notebook serve para cronometrar o tempo de execução de um código. Ele executará a célula de código várias vezes e apresentará a média de tempo gasto.
Medindo o tempo com o loop for:
%%timeit
for linha in base.index:
if base.loc[linha, "Status"] == "Finalizado":
base.loc[linha, "% Desconto Finalizados"] = base.loc[linha, "Desconto Concedido"] / base.loc[linha, "Valor Orçado"]
else:
base.loc[linha, "% Desconto Finalizados"] = 0
Medindo o tempo com apply:
%%timeit
base["% Desconto Finalizados2"] = base.apply(calcular_desconto_finalizado, axis=1)
Embora estejamos lidando com uma base de dados pequena, podemos perceber que a função apply é consideravelmente mais rápida. Essa diferença de tempo se torna ainda mais relevante em bases de dados maiores.
Perguntas frequentes
1. Qual a forma mais rápida de editar linhas no Pandas?
As operações vetorizadas são as mais rápidas: em vez de percorrer linha por linha, você aplica o cálculo na coluna inteira de uma só vez, como df["total"] = df["preco"] * df["qtd"]. O Pandas processa tudo internamente em bloco, aproveitando o NumPy, o que é muito mais veloz que um laço for.
2. Como usar a função apply() para editar linhas no Pandas?
O apply() aplica uma função a cada linha ou coluna. Para editar por linha, use df.apply(funcao, axis=1), onde a função recebe a linha e devolve o novo valor. É mais flexível que operações vetorizadas quando a lógica é complexa, mas costuma ser mais lento. Use quando o cálculo não cabe numa operação direta.
3. Por que evitar o loop for para editar tabelas do Pandas?
Percorrer um DataFrame com for é lento porque processa uma linha de cada vez, sem aproveitar a otimização interna do Pandas e do NumPy. Em bases grandes, isso pode ser centenas de vezes mais devagar que uma operação vetorizada. O for só compensa em lógicas muito específicas que não dá para vetorizar.
4. Como medir o tempo de execução no Pandas?
No Jupyter Notebook, use a mágica %%timeit no início da célula para medir quanto tempo o código leva, rodando várias vezes e mostrando a média. Assim dá para comparar operação vetorizada, for e apply() na prática. Fora do notebook, você pode usar o módulo time ou o timeit do Python.
Conclusão – 3 Formas de Editar Linhas em Tabelas do Pandas – Python
Escolher a melhor forma de editar linhas em tabelas do Pandas é essencial para otimizar seu código e melhorar a performance.
As operações vetorizadas são ideais para manipulações simples e rápidas. O loop for pode ser uma solução para pequenas bases de dados, mas deve ser evitado. Já a função apply é eficiente e flexível, especialmente em grandes datasets.
As operações vetorizadas continuam sendo a melhor opção para manipular dados de maneira eficiente, mas, quando isso não for possível, a função apply é a escolha mais recomendada.
Para saber mais sobre análise de dados, métodos e funções do Pandas, e como se tornar um cientista de dados completo e preparado para o mercado de trabalho, confira o nosso Curso Completo Ciência de Dados Impressionador.
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








