quarta-feira, 5 de agosto de 2020

Operações com dataframes pandas

Imagem de Steve Buissinne por Pixabay

Quando usamos um operador de comparação ou aritmético num dataframe pandas, a operação é feita com todos os elementos. A grande maioria das operações sobre os dataframe envolvem colunas numéricas, mas é comum encontramos com strings. Um cuidado que deve ser tomado é quanto ao tipo dos dados, se os dados não forem homogêneos a operação vai falhar. No exemplo abaixo vamos ver esse erro com o dataset filmes. Nesse dataset os dados não são homogêneos, existem dados do tipo int64, float64 e object. Por isso quando tentamos adicionar o valor inteiro 5, geramos um erro. Porque um número inteiro não pode ser adicionado a uma string, sem antes converter o número para uma string.

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes + 5
Traceback (most recent call last):
  ...
TypeError: can only concatenate str (not "int") to str

Uma condição para utilizar com êxito um operador com um dataframe é selecionar dados homogêneos. Para esse tutorial vamos selecionar as colunas do tipo inteiro usando o método filter().

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes_int = filmes.filter(items=['indice', 'codigo_obra'])
>>> filmes_int.head()
   indice  codigo_obra
0       0        15639
1       1         7603
2       2        26453
3       3        17284
4       4         4806

O parâmetro like, do método filter(), é muito utilizado para selecionar coluna, isso porque não precisamos passar o nome exato da coluna para o parâmetro. Utilizando esse parâmetro podemos selecionar várias colunas com uma sequencia de strings. Por exemplo, nesse dataset existem duas colunas que tem a string 'titulo' no seu nome. Para selecionar essas duas colunas é só passar a string 'titulo' para o parâmetro like. Veja um exemplo:

>>> filmes.filter(like='titulo')
                  titulo_original                titulo_brasil
0                  PREÇO DA PAZ O               PREÇO DA PAZ O
1                     CARTOMANTEA                  CARTOMANTEA
2            BLACK & WHITE VOL. 9         BLACK & WHITE VOL. 9
3                        THE GURU               O GURU DO SEXO
4                  QUIET AMERICAN        O AMERICANO TRANQUILO
...                           ...                          ...
9257                 ROCK OF AGES        ROCK OF AGES: O FILME
9258                   THE MATRIX                       MATRIX
9259               MILITARY WIVES               MILITARY WIVES
9260  ROBERTO CARLOS EM JERUSALÉM  ROBERTO CARLOS EM JERUSALÉM
9261                       O POÇO                       O POÇO

[9262 rows x 2 columns]

Como fazer operações com dataframes pandas

Agora que já selecionamos os dados de forma homogênea, realizar operações é fácil como somar um mais um. Veja o exemplo:

>>> filmes_int * 2
      indice  codigo_obra
0          0        31278
1          2        15206
2          4        52906
3          6        34568
4          8         9612
...      ...          ...
9257   18514     32003588
9258   18516     30001932
9259   18518     38005368
9260   18520      1219524
9261   18522     38010274

Nesse exemplo cada elemento do dataframe filmes_int foi multiplicado por dois. Podemos realizar todas as principais operações com um dataframe pandas, como soma, divisão, etc. No exemplo acima todos os elementos foram multiplicados por dois, mas se quiséssemos que cada elemento fosse somado com um valor diferente? Utilizaríamos outro dataframe.

>>> filmes_int + filmes.filter(items=['indice', 'codigo_obra'])
      indice  codigo_obra
0          0        31278
1          2        15206
2          4        52906
3          6        34568
4          8         9612
...      ...          ...
9257   18514     32003588
9258   18516     30001932
9259   18518     38005368
9260   18520      1219524
9261   18522     38010274

[9262 rows x 2 columns]

Nesse exemplo cada elemento do dataframe filmes_int é somado com o elemento correspondente no dataframe gerado pelo método filter(). Assim linha é somada com linha e coluna com coluna.

terça-feira, 4 de agosto de 2020

Encadeando métodos DataFrame Pandas

Imagem de Gerd Altmann por Pixabay

Nos tutoriais anteriores aprendemos como encadear métodos com séries. Nesse tutorial vamos aprender a encadear métodos a partir de um dataframe. A coisa mais importante quando queremos encadear métodos é saber qual vai ser a saída de cada método. Assim podemos chamar um método adequado para tratar a saída de outro método.
Nesse tutorial vamos contar todos os valores que estão faltando em cada coluna do dataframe filmes.

Como encadear métodos de um dataframe Pandas

Para o nosso exemplo vamos criar um dataframe com valores True e False. Os valores True serão utilizados para representar os valores ausentes do dataframe pai, e o valor False será usado para representar os valores presentes. Vamos fazer isso usando o método isnull(). Depois vamos encadear o método head(), que criar um dataframe com as cinco primeiras linhas do dataframe (nesse caso o retornado pelo método isnull()).

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes.isnull().head()
   indice  codigo_obra  ...  cnpj_requerente  data_exibicao
0   False        False  ...            False          False
1   False        False  ...            False          False
2   False        False  ...            False          False
3   False        False  ...            False          False
4   False        False  ...            False          False

[5 rows x 9 columns]

Todos os métodos da biblioteca Pandas podem ser encadeados. Isso por que cada método ou atributo retorna um dataframe ou uma série. E cada objeto possui métodos e atributos que retornam outros dataframes ou séries.

Resumindo um dataframe pandas

Photo by Brett Jordan on Unsplash

Nos exemplos dos tutoriais anteriores vimos como chamar alguns métodos das séries. Nesses exemplos trabalhamos apenas com colunas ou séries. Esses métodos eram de agregação ou redução que retornavam séries. Chamando esses mesmos métodos a partir de um dataframe as operações serão executadas em todas as colunas e não apenas em uma, reduzindo os resultados para cada coluna do dataframe. Muitos desses métodos retornam uma série com os nomes das colunas e os valores correspondentes.
Nesse tutorial, vamos ver mais alguns dos atributos e métodos que podemos utilizar com os dataframe Pandas. Vamos utilizar o dataframe filmes.csv, que já usamos nos post anteriores.

Como resumir um dataframe

Vamos abrir o dataframe filmes e chamar os atributos shape, size e ndim. E depois vamos utilizar a função interna do python len(). O atributo shape retorna uma tupla com os dois valores, o primeiro é o número de linhas do dataframe e o segundo é o número de colunas. O atributo size retorna o numero de elementos do dataframe. O ndim retorna o número de dimensões do dataframe. E a função len retorna o número de linhas do dataframe Pandas.

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes.shape
(9262, 9)
>>> filmes.size
83358
>>> filmes.ndim
2
>>> len(filmes)
9262

Nos dataframe é comum estar faltando alguns elementos, se você quiser saber a quantidade de, apenas, elementos presentes use o método count(). Esse método retorna uma série com os rótulos das colunas e a quantidade de elementos com valores, excluindo da contagem os elementos vazios.

>>> filmes.count()
indice                     9262
codigo_obra                9262
titulo_original            9262
titulo_brasil              9262
ano_producao               9259
diretor                    9262
razao_social_requerente    9262
cnpj_requerente            9262
data_exibicao              9262
dtype: int64

Nesse exemplo os números retornados são iguais ao número de linhas, isso porque no dataframe filmes.csv não existe elementos vazios.
Se você precisar de estatísticas básicas como o valor mínimo, máximo, média e mediana, a biblioteca Pandas disponibiliza métodos que fornecem essas estatísticas. Veja um exemplo abaixo:

>>> filmes.min()
indice                                                   0
codigo_obra                                              1
titulo_original                         A PRIMEIRA MISSA""
titulo_brasil                           A PRIMEIRA MISSA""
ano_producao                                           200
diretor                                   \t PABLO TRAPERO
razao_social_requerente    13 PRODUÇÕES E LOCAÇÕES LTDA-ME
cnpj_requerente                         00.020.648/0001-20
data_exibicao                                   01/02/2005
dtype: object

>>> filmes.max()
indice                                             9261
codigo_obra                                    20002501
titulo_original            ÚLTIMO TANGO EM BUENOS AIRES
titulo_brasil                   ÚLTIMOS DIAS NO DESERTO
ano_producao                                       2020
diretor                                      ÉRIC WARIN
razao_social_requerente       ÍRIS CINEMATOGRÁFICA LTDA
cnpj_requerente                      97.533.170/0001-73
data_exibicao                                 31/mar/17
dtype: object

# média
>>> filmes.mean()
indice          4.630500e+03
codigo_obra     1.053494e+07
ano_producao    2.009945e+03
dtype: float64

# mediana
>>> filmes.median()
indice              4630.5
codigo_obra     15004498.0
ano_producao        2011.0
dtype: float64

Você pode obter essas estatísticas chamando um único método: o describe().

>>> filmes.describe()
           indice   codigo_obra  ano_producao
count  9262.00000  9.262000e+03   9259.000000
mean   4630.50000  1.053494e+07   2009.944918
std    2673.85343  7.714715e+06     20.439854
min       0.00000  1.000000e+00    200.000000
25%    2315.25000  4.165462e+05   2006.000000
50%    4630.50000  1.500450e+07   2011.000000
75%    6945.75000  1.600608e+07   2015.000000
max    9261.00000  2.000250e+07   2020.000000

Uma coisa que afeto as estatísticas são os elementos vazios. Se você quer que esses elementos sejam ignorados utilize o parâmetro skipna passando o valor True. Se passarmos o valor False, os elementos vazios vão entrar no calculo. Veja um exemplo:

>>> filmes.min(skipna=False)
indice                                                   0
codigo_obra                                              1
titulo_original                         A PRIMEIRA MISSA""
titulo_brasil                           A PRIMEIRA MISSA""
ano_producao                                           200
diretor                                   \t PABLO TRAPERO
razao_social_requerente    13 PRODUÇÕES E LOCAÇÕES LTDA-ME
cnpj_requerente                         00.020.648/0001-20
data_exibicao                                   01/02/2005
dtype: object

Todos os métodos de estatísticas têm o parâmetro skipna. O valor padrão é True.

domingo, 26 de julho de 2020

Encadeando métodos do Dataframe Pandas

Já aprendemos como encadear métodos de uma séries à alguns tutoriais atrás. Nesses tutoriais aprendemos como os encadeamentos de métodos e atributos funcionam numa série. Nesse tutorial vamos aprender como encadear métodos a partir de um dataframe. O segredo para encadear os métodos é saber qual vai ser a saída de cada método e atributo. Com a biblioteca Pandas os valores retornados, quase sempre, será uma série ou um dataframe.
Nesse post vamos aprender como encadear métodos de um dataframe.

Como chamar métodos em sequência com a biblioteca Pandas

No primeiro exemplo vamos chamar o método isnull() e em seguida chamar o método head(). O método isnull() retorna um dataframe igual ao dataframe antecessor, substituindo os valores com True ou False. Se o elemento tinha um valor, o novo valor será False e True caso não tivesse. Já o método head() retorna um dataframe com cinco linhas.

>>> filmes.isnull().head()
   indice  codigo_obra  ...  cnpj_requerente  data_exibicao
0   False        False  ...            False          False
1   False        False  ...            False          False
2   False        False  ...            False          False
3   False        False  ...            False          False
4   False        False  ...            False          False

[5 rows x 9 columns]

Nesse exemplo o método isnull() retornou um dataframe, e a partir desse dataframe chamamos o método head(). É importante notar que a cada método chamado um novo dataframe é criado com suporte a todos os métodos disponíveis, e é isso que torna o encadeamento possível. Já que cada método retorna um novo dataframe.

Métodos e atributos dos dataframes Pandas

Nos tutoriais anteriores aprendemos como chamar alguns dos métodos mais utilizados quando trabalhamos com séries da biblioteca Pandas. Os exemplos que usamos foram com apenas uma coluna ou série. Uma parte desses métodos eram de redução ou agregação que retornavam outras séries. Esses mesmo métodos podem ser chamados a partir de um dataframe assim como são chamados a partir de uma série. A diferença é que quando chamamos esses método e atributos a partir de uma série a operação é aplicada a uma coluna apenas. Quando chamamos os métodos e atributos a partir de um dataframe a operação é aplicada para cada coluna do dataframe.
Nesse tutorial vamos aprender a utilizar alguns dos métodos e atributos mais utilizados com dataframes.

Como obter informações básicas de um dataset

Primeiro vamos ler os dados de uma dataset, depois vamos ver algumas informações básicas desse dataset. As informações que estamos procurando são a forma do dataset, o tamanho, o número de dimensões e o seu tamanho. Essas informações podem ser obtidas com os atributos: shape, size, ndim e com a função len().

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes.shape
(9262, 9) # 9262 linhas e 9 colunas

>>> filmes.size
83358 # número de elementos do dataframe

>>> filmes.ndim
2 # número de dimensões, duas: colunas e linhas

>>> len(filmes)
9262 # número de linhas

Em um dataframe é possível, e até comum, que estejam faltando valores em alguns elementos do dataframe. E se você precisar saber quantos elementos tem valores guardados? A resposta é simples: o método count(). Esse método retorna uma série com os nomes das colunas e a quantidade de cada elemento dessa coluna que possuí um valor. O método count() é um exemplo de um método de agregação já que ele resumi os valores em um só.

>>> filmes.count()
indice                     9262
codigo_obra                9262
titulo_original            9262
titulo_brasil              9262
ano_producao               9259
diretor                    9262
razao_social_requerente    9262
cnpj_requerente            9262
data_exibicao              9262
dtype: int64

Uma coisa comum ao trabalhar com a biblioteca Pandas é saber o valor mínimo, máximo, média e mediana de um dataframe. Para obter essas informações podemos usar os métodos min(), max(), mean() e median(). Esses métodos retornam uma séries os com valores correspondentes.

>>> filmes.min()
indice                                                   0
codigo_obra                                              1
titulo_original                         A PRIMEIRA MISSA""
titulo_brasil                           A PRIMEIRA MISSA""
ano_producao                                           200
diretor                                   \t PABLO TRAPERO
razao_social_requerente    13 PRODUÇÕES E LOCAÇÕES LTDA-ME
cnpj_requerente                         00.020.648/0001-20
data_exibicao                                   01/02/2005
dtype: object

>>> filmes.max()
indice                                             9261
codigo_obra                                    20002501
titulo_original            ÚLTIMO TANGO EM BUENOS AIRES
titulo_brasil                   ÚLTIMOS DIAS NO DESERTO
ano_producao                                       2020
diretor                                      ÉRIC WARIN
razao_social_requerente       ÍRIS CINEMATOGRÁFICA LTDA
cnpj_requerente                      97.533.170/0001-73
data_exibicao                                 31/mar/17
dtype: object

>>> filmes.mean()
indice          4.630500e+03
codigo_obra     1.053494e+07
ano_producao    2.009945e+03
dtype: float64

>>> filmes.median()
indice              4630.5
codigo_obra     15004498.0
ano_producao        2011.0
dtype: float64

Se você quiser as informações do exemplo acima com um único método, podemos chamar o método describe(). Esse método vai te fornecer todas as informações do exemplo acima utilizando um único método.

>>> filmes.describe()
           indice   codigo_obra  ano_producao
count  9262.00000  9.262000e+03   9259.000000
mean   4630.50000  1.053494e+07   2009.944918
std    2673.85343  7.714715e+06     20.439854
min       0.00000  1.000000e+00    200.000000
25%    2315.25000  4.165462e+05   2006.000000
50%    4630.50000  1.500450e+07   2011.000000
75%    6945.75000  1.600608e+07   2015.000000
max    9261.00000  2.000250e+07   2020.000000

Nos métodos acima, podemos usar o parâmetro skipna. Com esse parâmetro definimos se os elementos sem valor devem se incluídos nas estatísticas básicas.

>>> filmes.max(skipna=False)
indice                                             9261
codigo_obra                                    20002501
titulo_original            ÚLTIMO TANGO EM BUENOS AIRES
titulo_brasil                   ÚLTIMOS DIAS NO DESERTO
ano_producao                                       2020
diretor                                      ÉRIC WARIN
razao_social_requerente       ÍRIS CINEMATOGRÁFICA LTDA
cnpj_requerente                      97.533.170/0001-73
data_exibicao                                 31/mar/17
dtype: object

Se passamos o valor False para o parâmetro skipna os elementos sem valor serão adicionados na estatística. O valor padrão desse parâmetro é True.

sábado, 25 de julho de 2020

Ordenando colunas do dataframe com Pandas

Uma coisa que vinhamos negligenciando, e uma das primeiras tarefas que devemos fazer quando importamos um dataframe, é analisar a ordem das colunas. No nosso dia-a-dia lemos da esquerda para a direita. E esse comportamento pode afetar como lemos os dados de um dataframe. Sem contar que é mais fácil encontrar um dado quando ele esta armazenado de forma organizada.
É aqui que começa nosso trabalho. Não tem um conjunto de regras que devemos seguir para organizar os dados. Uma boa prática é você mesmo criar um conjunto de regras e seguir sempre essas regras nos seus projetos. Isso se torna mais necessário quando o trabalho é em equipe e existem vários analistas gerando e trocando dados entre se.
Essas são algumas dicas para quando você importar um dataframe:

  • Classifique cada coluna seguindo um critério.
  • Agrupe as colunas mais comuns.
  • Coloque os grupos mais importantes nas primeiras colunas.

Nesse tutorial vamos ordenar as colunas fazendo uso dessas dicas, mas você pode adicionar outras dicas a essas ou não usar nenhuma.

Como ordenar colunas de um dataframe com Pandas

Para ordenar as colunas vamos utilizar o operador de índice.

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes.columns
Index(['indice', 'codigo_obra', 'titulo_original', 'titulo_brasil',
       'ano_producao', 'diretor', 'razao_social_requerente', 'cnpj_requerente',
       'data_exibicao'],
      dtype='object')
>>> nova_ordem = [
... 'codigo_obra',
... 'titulo_brasil',
... 'titulo_original',
... 'data_exibicao',
... 'diretor',
... 'ano_producao',
... 'indice'
... ]
>>> filmes = filmes[nova_ordem]
>>> filmes
      codigo_obra                titulo_brasil  ... ano_producao indice
0           15639               PREÇO DA PAZ O  ...       2003.0      0
1            7603                  CARTOMANTEA  ...       2002.0      1
2           26453         BLACK & WHITE VOL. 9  ...       2005.0      2
3           17284               O GURU DO SEXO  ...       2002.0      3
4            4806        O AMERICANO TRANQUILO  ...       2002.0      4
...           ...                          ...  ...          ...    ...
9257     16001794        ROCK OF AGES: O FILME  ...       2012.0   9257
9258     15000966                       MATRIX  ...       1999.0   9258
9259     19002684               MILITARY WIVES  ...       2019.0   9259
9260       609762  ROBERTO CARLOS EM JERUSALÉM  ...       2011.0   9260
9261     19005137                       O POÇO  ...       2019.0   9261

[9262 rows x 7 columns]

Você pode ordenar colunas utilizando outros métodos além de utilizar o operador do índice. Outro método que pode ser utilizado é o filter(), que já vimos o seu funcionamento no tutorial passado.
Uma dica importante para ordenaras colunas é colocar os dados fixos primeiro.

sexta-feira, 24 de julho de 2020

Selecionando colunas com métodos do Pandas

A maioria dos códigos que utilizam a biblioteca Pandas ao selecionar uma coluna fazem uso do operador de índice. Em contrapartida é interessante saber que a biblioteca disponibiliza métodos para a mesma tarefa. Os métodos mais utilizados são select_dtypes() e filter().
Esses métodos devem ser utilizados para demandas diferentes. Se você deseja selecionar colunas pelo seu tipo, o método ideal é o select_dtypes() e se precisa selecionar pelo nome o método é o filter(). Nesse tutorial vamos aprender como utilizar esses métodos.

Como selecionar colunas com métodos da biblioteca Pandas

Chamando o método select_dtypes(), passando para o parâmetro include o valor 'O', sinalizamos para o método que queremos selecionar todas as colunas do tipo object.

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes.select_dtypes(include='O')
                  titulo_original  ... data_exibicao
0                  PREÇO DA PAZ O  ...     06/jul/12
1                     CARTOMANTEA  ...     13/jul/04
2            BLACK & WHITE VOL. 9  ...    26/09/2007
3                        THE GURU  ...    16/12/2002
4                  QUIET AMERICAN  ...     15/jan/03
...                           ...  ...           ...
9257                 ROCK OF AGES  ...     09/jul/20
9258                   THE MATRIX  ...     25/nov/19
9259               MILITARY WIVES  ...    14/02/2020
9260  ROBERTO CARLOS EM JERUSALÉM  ...    20/12/2019
9261                       O POÇO  ...    18/10/2019

[9262 rows x 6 columns]

Se você quiser seleciona todas as colunas com números, podemos passar o valor 'number' para o parâmetro include.

>>> filmes.select_dtypes(include='number')
      indice  codigo_obra  ano_producao
0          0        15639        2003.0
1          1         7603        2002.0
2          2        26453        2005.0
3          3        17284        2002.0
4          4         4806        2002.0
...      ...          ...           ...
9257    9257     16001794        2012.0
9258    9258     15000966        1999.0
9259    9259     19002684        2019.0
9260    9260       609762        2011.0
9261    9261     19005137        2019.0

[9262 rows x 3 columns]

É possível selecionar mais de um tipo de dados de uma vez. Se quisermos selecionar colunas com números inteiros e strings, passamos uma lista para o parâmetro include:

>>> filmes.select_dtypes(include=['int64','object'])
      indice  codigo_obra  ...     cnpj_requerente data_exibicao
0          0        15639  ...  00.568.159/0001-07     06/jul/12
1          1         7603  ...  03.599.148/0001-82     13/jul/04
2          2        26453  ...  02.341.697/0001-90    26/09/2007
3          3        17284  ...  27.654.722/0001-16    16/12/2002
4          4         4806  ...  00.979.601/0001-98     15/jan/03
...      ...          ...  ...                 ...           ...
9257    9257     16001794  ...  33.015.827/0001-28     09/jul/20
9258    9258     15000966  ...  33.015.827/0001-28     25/nov/19
9259    9259     19002684  ...  02.668.665/0001-01    14/02/2020
9260    9260       609762  ...  15.372.472/0001-42    20/12/2019
9261    9261     19005137  ...      408.504.318-83    18/10/2019

[9262 rows x 8 columns]

Obs: 'O' e 'object' se referem a strings.
E se quiséssemos selecionar todas as colunas e deixar de lado apenas um tipo de dado? Nesse caso usaríamos o parâmetro exclude. A sua utilização é bem simples, passamos apenas o tipo de dados que não queremos. Desse modo o método retornará todas as colunas, com exceção das colunas com o tipo de dado passado para o parâmetro exclude. Esse método também aceita uma lista com os tipos de dados que não queremos selecionar.

>>> filmes.select_dtypes(exclude=['int64', 'float64'])
                  titulo_original  ... data_exibicao
0                  PREÇO DA PAZ O  ...     06/jul/12
1                     CARTOMANTEA  ...     13/jul/04
2            BLACK & WHITE VOL. 9  ...    26/09/2007
3                        THE GURU  ...    16/12/2002
4                  QUIET AMERICAN  ...     15/jan/03
...                           ...  ...           ...
9257                 ROCK OF AGES  ...     09/jul/20
9258                   THE MATRIX  ...     25/nov/19
9259               MILITARY WIVES  ...    14/02/2020
9260  ROBERTO CARLOS EM JERUSALÉM  ...    20/12/2019
9261                       O POÇO  ...    18/10/2019

[9262 rows x 6 columns]

Outro método utilizado para selecionar colunas é o método filter(). Esse método retorna colunas que os nomes contenham a string passada ao parâmetro like. Assim a string não precisa ser exata ao nome da coluna, basta que o rótulo tenha a string no começo, no meio ou no final. E se várias colunas tiverem a string, o método retornará todas elas.

>>> import pandas as pd
>>> filmes = pd.read_csv('filmes.csv')
>>> filmes.filter(like='cnpj')
         cnpj_requerente
0     00.568.159/0001-07
1     03.599.148/0001-82
2     02.341.697/0001-90
3     27.654.722/0001-16
4     00.979.601/0001-98
...                  ...
9257  33.015.827/0001-28
9258  33.015.827/0001-28
9259  02.668.665/0001-01
9260  15.372.472/0001-42
9261      408.504.318-83

[9262 rows x 1 columns]

Nesse exemplo, não foi usado o nome exato da coluna, apenas uma parte (cnpj), e mesmo assim a coluna cnpj_requerente foi selecionada. No dataframe filmes, só existe uma coluna que tem a string cnpj, por isso o método retornou apenas uma coluna. Outro exemplo é passar a string 'titulo' para o parâmetro like. Como o dataframe possui duas colunas com a string 'titulo' (titulo_brasil e titulo_oroginal), o método filter() retornará duas colunas.

>>> filmes.filter(like='titulo')
                  titulo_original                titulo_brasil
0                  PREÇO DA PAZ O               PREÇO DA PAZ O
1                     CARTOMANTEA                  CARTOMANTEA
2            BLACK & WHITE VOL. 9         BLACK & WHITE VOL. 9
3                        THE GURU               O GURU DO SEXO
4                  QUIET AMERICAN        O AMERICANO TRANQUILO
...                           ...                          ...
9257                 ROCK OF AGES        ROCK OF AGES: O FILME
9258                   THE MATRIX                       MATRIX
9259               MILITARY WIVES               MILITARY WIVES
9260  ROBERTO CARLOS EM JERUSALÉM  ROBERTO CARLOS EM JERUSALÉM
9261                       O POÇO                       O POÇO

[9262 rows x 2 columns]

Outro parâmetro interessante do método filter() é o items. Com esse parâmetro podemos passar o nome das colunas que queremos. O parâmetro aceita uma lista com os valores.

>>> colunas = [
... 'diretor',
... 'indice'
... ]
>>> filmes.filter(items=colunas)
                                 diretor  indice
0     PAULO DE TARSO DE CARVALHO MORELLI       0
1         WAGNER DE ASSIS E PABLO URANGA       1
2              LENILDO MAURICIO DA SILVA       2
3                            DAISY MAYER       3
4                          PHILLIP NOYCE       4
...                                  ...     ...
9257                       ADAM SHANKMAN    9257
9258       LANA WACHOWSKI ANDY WACHOWSKI    9258
9259                      PETER CATTANEO    9259
9260    MARIO HUMBERTO MEIRELLES MOREIRA    9260
9261               ANDRE BORELLI MARTINS    9261

[9262 rows x 2 columns]