đŒ 5 funçÔes pouco conhecidas do Pandas para agilizar suas anĂĄlises
- #Python
Introdução
Sabe quando vocĂȘ sente que estĂĄ fazendo as coisas do jeito mais difĂcil no Pandas?
Pois é⊠tem umas funçÔes meio âescondidasâ que pouca gente usa, mas que deixam seu cĂłdigo muito mais rĂĄpido e fĂĄcil de entender.
Hoje eu vou te mostrar 5 dessas funçÔes mågicas.
Bora lĂĄ?
1. pd.eval() â Avaliação eficiente de expressĂ”es
Imagina que o Pandas Ă© uma calculadora gigante. O pd.eval() deixa ele fazer contas direto com strings, tipo uma fĂłrmula.
Isso é bom porque ele calcula tudo rapidinho, até em grandes tabelas.
Exemplo:
pd.eval("df['col1'] + df['col2']")
O que estĂĄ acontecendo?
- Estamos dizendo: âSome os valores da coluna col1 com os valores da coluna col2â.
- O pd.eval() pega essa fĂłrmula escrita como string (texto entre aspas) e calcula de forma mais rĂĄpida do que se vocĂȘ usasse df['col1'] + df['col2'] direto.
Por que isso Ă© Ăștil?
- Em datasets grandes, pd.eval() usa menos memória e pode ser até mais råpido.
- Ele funciona bem com contas simples ou expressĂ”es maiores â sem precisar escrever tudo no estilo âcolchete-coluna-colcheteâ.
Ă mais rĂĄpido do que somar coluna por coluna.
2. df.query() â Filtros legĂveis e performĂĄticos
Sabe quando vocĂȘ faz um filtro tipo df[df['idade'] > 18]?
Com query() fica muito mais limpo:
df.query("idade > 18")
O que estĂĄ acontecendo?
- Estamos dizendo ao Pandas: âMe mostre sĂł as linhas onde a idade Ă© maior que 18â.
- A diferença é que, em vez de usar df[df['idade'] > 18], usamos uma string simples dentro do query().
Por que isso Ă© Ăștil?
- Fica mais fĂĄcil de ler e escrever.
- Com filtros maiores (ex: com 3 ou mais condiçÔes), o código com query() continua limpo e claro.
Ă como se vocĂȘ estivesse falando com o Pandas em portuguĂȘs.
E ainda roda mais rĂĄpido quando o dataset Ă© grande.
3. df.pipe() â Composição de funçÔes para pipelines
Se vocĂȘ gosta de deixar o cĂłdigo organizado em etapas, o pipe() Ă© perfeito.
Ele passa o DataFrame de uma função pra outra, tipo uma esteira de fåbrica.
Exemplo:
df.pipe(limpa_dados).pipe(filtra_clientes).pipe(gera_relatorio)
O que estĂĄ acontecendo?
- Estamos empilhando funçÔes: o df (nosso DataFrame) passa por limpa_dados(), depois por filtra_clientes(), e por fim por gera_relatorio().
Ă como se fosse isso:
temp = limpa_dados(df)
temp = filtra_clientes(temp)
resultado = gera_relatorio(temp)
Por que isso Ă© Ăștil?
- Ajuda a escrever cĂłdigo em etapas claras, como um passo a passo.
- Isso facilita testes e manutenção â especialmente em pipelines de dados.
Fica fĂĄcil de entender e manter.
4. df.at[] e df.iat[] â Acesso super rĂĄpido a valores individuais
Imagina que o Pandas Ă© tipo uma tabela gigante, e vocĂȘ quer pegar ou mudar sĂł um valor, bem especĂfico.
Pra isso, o jeito mais rĂĄpido e direto Ă© usar at[] ou iat[] â como se fosse um atalho turbo pra um ponto exato da tabela.
at[]: acessa pelo rĂłtulo (tipo nome da linha e coluna)
df.at[3, 'nome']
O que estĂĄ acontecendo?
- Acessa o valor da linha 3, coluna 'nome' â usando o nome da coluna.
- Como se dissesse: âPega o nome da terceira pessoa da listaâ.
iat[]: acessa pela posição (linha 0, coluna 1, por exemplo)
df.iat[3, 1]
O que estĂĄ acontecendo?
- Pega o valor na posição da linha 3 e coluna 1 (por Ăndice, como nas listas Python).
- Ou seja: linha 3, coluna 1, independente do nome da coluna.
Mas por que nĂŁo usar loc[] ou iloc[]?
Boa pergunta! Olha sĂł:
- loc[]
- Acessa valores usando rĂłtulos (ex: df.loc[3, 'nome'])
- Ideal para acessar linhas e colunas inteiras com nomes.
đž Ătil, mas mais lento para acessos pontuais.
iloc[]
- Acessa valores usando posiçÔes numéricas (ex:
df.iloc[3, 1]
) - Também bom para acessar fatias de dados, mas...
đž Ainda mais lento que alternativas para 1 Ășnico valor.
- at[] e iat[] sĂŁo mais rĂĄpidos porque foram feitos sĂł pra acessar UM valor, enquanto loc[] e iloc[] podem lidar com vĂĄrios valores de uma vez (linhas, colunas, fatias etc.).
Tipo um teletransporte direto pro valor que vocĂȘ quer!
5. df.explode() â Transformar listas em linhas
Tem uma coluna que guarda listas? Tipo gĂȘneros musicais: ['rock', 'metal']?
O explode() transforma isso em vĂĄrias linhas, uma pra cada item da lista.
Assim dĂĄ pra analisar separado, sem fazer gambiarra.
Exemplo:
df.explode("generos")
O que estĂĄ acontecendo?
- Imagina que vocĂȘ tem uma linha assim:
{"nome": "Filipe", "generos": ["rock", "metal", "prog"]}
- O explode() transforma isso em 3 linhas:
{"nome": "Filipe", "generos": "rock"}
{"nome": "Filipe", "generos": "metal"}
{"nome": "Filipe", "generos": "prog"}
Por que isso Ă© Ăștil?
- Isso facilita anĂĄlises separadas por item (como contar quantos escutam âmetalâ).
- Evita loops ou cĂłdigos complicados â Ă© sĂł um comando.
Simples e poderoso!
ConclusĂŁo
Usar essas funçÔes é como encontrar atalhos secretos no seu jogo favorito.
VocĂȘ chega no mesmo lugar, mas muito mais rĂĄpido â e com um cĂłdigo bem mais bonito.
NĂŁo precisa decorar tudo agora, salva esse post e volta quando estiver limpando ou analisando dados no Pandas.
Garanto que uma dessas vai te salvar!
Curtiu essas dicas? Ele foi gerado por inteligĂȘncia artificial, mas revisado por alguĂ©m 100% humano
Me segue no GitHub e no LinkedIn pra mais conteĂșdos direto ao ponto sobre Python, AnĂĄlise de Dados e Tech!
Fontes de produção:
- IlustraçÔes de capa geradas por: lexica.art
- ConteĂșdo gerado por: ChatGPT com revisĂ”es humanas
#Pandas #Python #DataScience