English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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()
Pode-se executar operações personalizadas no DataFrame passando uma função e a quantidade apropriada de parâmetros como parâmetros de canal.
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
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.
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.
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
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
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.
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
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