English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Aplicação de Funções do Pandas

Exemplo de operação de reconstituição de índice do Pandas

Para aplicar suas próprias funções ou funções de outras bibliotecas a objetos Pandas, você deve entender três métodos importantes. Como follows. O método a ser usado depende de se você deseja operar no conjunto de dados inteiro, nas linhas, nas colunas ou em nível de elemento.

Aplicação de funções em tabelas: pipe() Aplicação de funções em linhas ou colunas: apply() Aplicação de funções em nível de elemento: applymap()

Aplicação de funções em tabelas

Pode-se executar operações personalizadas no DataFrame passando uma função e a quantidade apropriada de parâmetros como parâmetros de canal.

Função aditiva

Por exemplo, adicione2Adicionamos um valor ao DataFrame. A função aditiva adiciona dois valores numéricos e retorna a soma.

  def adder(ele1,ele2) :
    return ele1+ele2

Usamos funções personalizadas para operar no DataFrame.

 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.pipe(adder,2)

Vamos ver o programa completo:

 import pandas as pd
 import numpy as np
 def adder(ele1,ele2) :
    return ele1+ele2
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.pipe(adder,2)
 print(df.apply(np.mean))

Resultados da Execução:

       col1 col2 col3
 0 2.176704 2.219691 1.509360
 1 2.222378 2.422167 3.953921
 2 2.241096 1.135424 2.696432
 3 2.355763 0.376672 1.182570
 4 2.308743 2.714767 2.130288

Aplicação de funções em linhas ou colunas

Pode usar o método apply() para aplicar qualquer função ao eixo de um DataFrame ou Panel, semelhante aos métodos de estatísticas descritivas, que utilizam o parâmetro opcional axis. Por padrão, a operação é executada em colunas, considerando cada coluna como uma forma de array.

Instância 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(np.mean)
 print(df.apply(np.mean))

Resultados da Execução:

 col1 -0.288022
 col2 1.044839
 col3 -0.187009
 dtype: float64

Pode-se executar a operação linha a linha passando o parâmetro axis.

Instância 2

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(np.mean,axis=1)
 print(df.apply(np.mean))

Resultados da Execução:

 col1 0.034093
 col2 -0.152672
 col3 -0.229728
 dtype: float64

Instância 3

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.apply(lambda x: x.max() - x.min())
 print(df.apply(np.mean))

Resultados da Execução:

 col1 -0.167413
 col2 -0.370495
 col3 -0.707631
 dtype: float64

Aplicação de Função a Nível de Elemento

Não todas as funções podem ser aplicadas vectorizadamente (os arrays NumPy nem retornam outro array, nem retornam nenhum valor), o método applymap() do DataFrame e o map() da Series do Pandas aceitam qualquer função Python que aceita um único valor e retorna um único valor.

Instância 1

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 # Função Personalizada
 df['col1'].map(lambda x:x*100)
 print(df.apply(np.mean))

Resultados da Execução:

 col1 0.480742
 col2 0.454185
 col3 0.266563
 dtype: float64

Instância 2

 import pandas as pd
 import numpy as np
 # Função Personalizada
 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
 df.applymap(lambda x:x*100)
 print(df.apply(np.mean))

Resultados da Execução:

 col1 0.395263
 col2 0.204418
 col3 -0.795188
 dtype: float64