Na linguagem python é possível chamar métodos usando o acesso a atributos. As variáveis apontam para objetos e os atributos e métodos retornam mais objetos. Assim podemos fazer chamadas sequenciais de métodos usando atributos. Pandas é uma biblioteca que faz bom uso dessa programação de fluxo. Muitos métodos e atributos criam séries e dataframes, que por sua vez podem criar mais séries e dataframes. E desses objetos mais métodos e atributos podem ser chamados.
Como exemplo de encadeamento de métodos, vamos usar a frase: Uma pessoa vai ao restaurante comer costelas, volta pra casa, lava o carro e depois assiste TV.
Uma forma de codificar essa frase em python:
(pessoa.ir('Restaurante') .pede('Costela') .come('Costela') .ir('Casa') .lavar('Carro') .assistir('TV') )
Nesse exemplo, a pessoa é uma instância de uma classe que pode chamar métodos. E cada método pode criar outra instância, desse jeito o encedeamento ocorre. No exemplo acima, o argumento passado para o método define como o método deve ser executado.
Nesse post vamos aprender como o encadeamento funciona nas séries do Pandas.
Como fazer...
Primeiro vamos extrair uma coluna do dataset e encadear métodos da série:
>>> import pandas as pd >>> filmes = pd.read_csv('filmes.csv', encoding='latin-1') >>> diretor = filmes.Diretor >>> diretor.value_counts().head(5) LENILDO MAURICIO DA SILVA 218 JULIANO COSTA BENDAZOLI 69 JOSE ANTONIO GASPAR RAMOS 39 ROGER LEMOS 26 LENILDO MAURÍCIO DA SILVA 22 Name: Diretor, dtype: int64
Nesse exemplo, chamamos o método value_counts()
. Esse método retorna uma série contendo os elementos da série progenitora com a quantidade de vezes que o valor aparece na série. E logo em seguida chamamos o método head(5)
, que cria uma nova série com os cinco primeiros elementos retornados pelo método value_counts()
. Pode não parecer mais a cada chamada de método criamos uma série nova.
Uma consequência do encadeamento de métodos e atributos é a dificuldade na hora de fazer a depuração. Isso acontece porque nenhum dos resultados dos métodos é guardado numa variável. Num encadeamento muito longo fica difícil encontrar o local do erro, se acontecer algum (e vai.). Uma dica para minimizar esse tipo de erro é colocar o resultado da chamada do método numa variável separada e depurar o seu código linha a linha.
0 comentários:
Postar um comentário