Opa, Vivian! Vamos lá!
Quando usamos a função lambda?
Em Python, uma função lambda é uma função anônima que pode ser definida em uma única linha de código.
A sintaxe básica de uma função lambda é a seguinte:
lambda argumentos: expressão
Por exemplo, a função lambda abaixo recebe um argumento x e retorna o valor x + 1:
lambda x: x + 1
Para usar a função lambda, ela sempre tem que vir dentro de um .apply()?
Existem diversas situações em que o uso de funções lambda pode ser vantajoso, como quando precisamos definir rapidamente uma função simples que não será reutilizada em outro lugar do código. Então, a função lambda não precisa necessariamente ser usada com o método apply()
em Python. A função lambda é uma forma concisa de criar uma função anônima e pode ser usada em diversos contextos, como em list comprehension (listas de compreensão), funções filter()
, map()
, reduce()
, entre outras.
Vou te mostrar a função lambda em outro contexto:
Aqui nós temos uma lista com alguns números, mas queremos obter apenas os valores pares dessa lista.
Uma forma de obter uma lista apenas dos valores pares é usar uma função lambda:
numeros = [1, 2, 3, 4, 5, 6]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares)
Vamos analisar com calma a expressão list(filter(lambda x: x % 2 == 0, numeros))
passo a passo:
lambda x: x % 2 == 0
é uma função lambda que verifica se um número x é par (ou seja, se o resto da divisão de x por 2 é zero).
filter()
é uma função embutida do Python que recebe como argumentos uma função e um iterável, e retorna um iterador contendo apenas os elementos do iterável para os quais a função retorna True.
numeros
é uma lista de números.
Então, a expressão filter(lambda x: x % 2 == 0, numeros)
cria um iterador que contém apenas os elementos de numeros que são pares.
Por fim, a função list()
é usada para converter esse iterador em uma lista contendo os elementos filtrados.
Portanto, a expressão list(filter(lambda x: x % 2 == 0, numeros))
retorna uma lista contendo apenas os elementos de numeros que são pares. Nesse caso, a lista resultante é [2, 4, 6].
Se precisarmos pegar valores de duas colunas usamos x, y para lambda? Como seria?
Vamos pensar o seguinte, você tem o seguinte DataFrame:
index | coluna1 | coluna2 |
---|
0 | 1 | 4 |
1 | 2 | 5 |
Mas você quer criar uma nova coluna nesse DataFrame somando os valores das colunas 1 e 2, utilizando a função lambda...
E aí como fazer isso? Podemos utilizar a função lambda lambda row: row['coluna1'] + row['coluna2']
recebe um argumento row
, que é uma linha do DataFrame, e retorna a soma dos valores das colunas "coluna1" e "coluna2" daquela linha.
O parâmetro axis=1
é necessário para que a função apply()
seja aplicada a cada linha do DataFrame.
df['soma'] = df.apply(lambda row: row['coluna1'] + row['coluna2'], axis=1)
Como resultado teremos o seguinte DataFrame:
index | coluna1 | coluna2 | soma |
---|
0 | 1 | 4 | 5 |
1 | 2 | 5 | 7 |
2 | 3 | 6 | 9 |
Quais outras funções podemos usar dentro de .apply()?
Podemos usar a função apply()
em diversas situações. Algumas funções comuns que podem ser usadas dentro de .apply()
incluem:
- Funções lambda: para executar operações simples ou operações que dependem dos valores de uma ou mais colunas.
- Funções definidas pelo usuário: para executar operações mais complexas que não podem ser facilmente expressas em uma única linha de código.
- Funções de agregação do pandas: para calcular estatísticas descritivas, como média, mediana, mínimo, máximo, etc., em um grupo de dados.
- Funções de mapeamento do pandas: para mapear valores de uma coluna em um conjunto de valores diferentes, por exemplo, para codificar categorias como valores numéricos.
- Funções integradas do Python: para executar operações matemáticas, operações de string, operações de tempo, etc.
Espero que isso te ajude, Vivian! Se tiver mais alguma dúvida estou aqui
Bons estudos! :D