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.
0 comentários:
Postar um comentário