A linguagem python nos permite fazer operações básicas com números e objetos atraves dos operadores. Com esses operadores somos capazes de manipular objetos. Um exemplo é o operador '+', com ele podemos somar dois inteiros e receber o resultado:
>>> 3 + 7 # Soma os dois números 10
Podemos usar operadores para manipular as séries e os dataframe do Pandas. As séries e os dataframe tem suporte a muitos dos operadores da linguagem python. Quando usamos um operador com uma série ou um dataframe vamos ter como resultado uma série ou um dataframe. Nesse post vamos apresentar alguns operadores que podemos usar com séries e dataframes. Ao usar esses operadores teremos como resultado séries com valores diferentes dos seus progenitores.
Como fazer isso...
O dataset que vamos usar nos exemplos abaixo pode ser baixado aqui.
Primeiro vamos começar com um operador fácil, o operador de soma. Utilizar esse operador com uma série e um inteiro irá criar uma nova série com cada elemento da série acrescentado do número inteiro. Veja um exemplo:
>>> import pandas as pd >>> data = pd.read_csv('data.tsv', sep='\t') >>> classif_media = data.averageRating >>> classif_media 0 5.7 1 6.1 2 6.5 3 6.2 4 6.1 ... 1056047 7.2 1056048 6.6 1056049 5.9 1056050 6.9 1056051 7.3 Name: averageRating, Length: 1056052, dtype: float64 >>> classif_media + 1 0 6.7 1 7.1 2 7.5 3 7.2 4 7.1 ... 1056047 8.2 1056048 7.6 1056049 6.9 1056050 7.9 1056051 8.3 Name: averageRating, Length: 1056052, dtype: float64
As operações de divisão, multiplicação, exponenciação e subtração seguem a mesma lógica. Veja os exemplos abaixo:
>>> classif_media / 2 0 2.85 1 3.05 2 3.25 3 3.10 4 3.05 ... 1056047 3.60 1056048 3.30 1056049 2.95 1056050 3.45 1056051 3.65 Name: averageRating, Length: 1056052, dtype: float64 >>> classif_media * 2 0 11.4 1 12.2 2 13.0 3 12.4 4 12.2 ... 1056047 14.4 1056048 13.2 1056049 11.8 1056050 13.8 1056051 14.6 Name: averageRating, Length: 1056052, dtype: float64 >>> classif_media ** 2 0 32.49 1 37.21 2 42.25 3 38.44 4 37.21 ... 1056047 51.84 1056048 43.56 1056049 34.81 1056050 47.61 1056051 53.29 Name: averageRating, Length: 1056052, dtype: float64 >>> classif_media - 2 0 3.7 1 4.1 2 4.5 3 4.2 4 4.1 ... 1056047 5.2 1056048 4.6 1056049 3.9 1056050 4.9 1056051 5.3 Name: averageRating, Length: 1056052, dtype: float64
Para fazer a divisão exata, o que vai gerar um float, use duas barras. O operador módulo também é suportado pelas séries do Pandas.
>>> classif_media // 3 0 1.0 1 2.0 2 2.0 3 2.0 4 2.0 ... 1056047 2.0 1056048 2.0 1056049 1.0 1056050 2.0 1056051 2.0 Name: averageRating, Length: 1056052, dtype: float64 >>> classif_media % 3 0 2.7 1 0.1 2 0.5 3 0.2 4 0.1 ... 1056047 1.2 1056048 0.6 1056049 2.9 1056050 0.9 1056051 1.3 Name: averageRating, Length: 1056052, dtype: float64
Outros operadores válidos, para serem usados com as séries do Pandas, são os de comparação (>, <, ==, >=, <=, !=). Utilizando esses operadores a saída será uma série com valores booleanos. A comparação será feita entre o valor passado e cada elemento da série. Veja um exemplo:
>>> classif_media > 6 0 False 1 True 2 True 3 True 4 True ... 1056047 True 1056048 True 1056049 False 1056050 True 1056051 True Name: averageRating, Length: 1056052, dtype: bool
O valor do primeiro elemento da série é False, isso porque o primeiro elemento da série classif_media
é menor ou igual a seis. O segundo é True pois o valor do segundo elemento da série classif_media
é maior que seis.
Podemos usar os operadores de comparação com strings. Para esse exemplo vamos utilizar o dataset dos tutoriais passados. Veja um exemplo:
>>> filmes = pd.read_csv('filmes.csv', encoding='latin-1') >>> diretor = filmes.Diretor >>> diretor 0 PAULO DE TARSO DE CARVALHO MORELLI 1 WAGNER DE ASSIS E PABLO URANGA 2 LENILDO MAURICIO DA SILVA 3 DAISY MAYER 4 PHILLIP NOYCE ... 9257 ADAM SHANKMAN 9258 LANA WACHOWSKI ANDY WACHOWSKI 9259 PETER CATTANEO 9260 MARIO HUMBERTO MEIRELLES MOREIRA 9261 ANDRE BORELLI MARTINS Name: Diretor, Length: 9262, dtype: object >>> diretor == 'DAISY MAYER' 0 False 1 False 2 False 3 True 4 False ... 9257 False 9258 False 9259 False 9260 False 9261 False Name: Diretor, Length: 9262, dtype: bool
Como funciona...
Nos exemplos acima os operadores são usados em cada elemento da série individualmente. Se fossemos fazer isso sem a biblioteca Pandas precisaríamos de um loop para cada elemento. Mas graças ao Pandas não precisamos.
Em cada um dos exemplos é retornada uma série com os mesmos índices mais com novos valores.
Tem mais...
Para cada operador existe um método que faz exatamente a mesma coisa. Veja um exemplo com a divisão:
>>> classif_media / 2 0 2.85 1 3.05 2 3.25 3 3.10 4 3.05 ... 1056047 3.60 1056048 3.30 1056049 2.95 1056050 3.45 1056051 3.65 Name: averageRating, Length: 1056052, dtype: float64 >>> classif_media.div(2) 0 2.85 1 3.05 2 3.25 3 3.10 4 3.05 ... 1056047 3.60 1056048 3.30 1056049 2.95 1056050 3.45 1056051 3.65 Name: averageRating, Length: 1056052, dtype: float64
Abaixo temos uma tabela com os operadores e seus métodos correspondentes:
Grupo de operadores | Operadores | Métodos |
---|---|---|
Aritmético | + , - , * , / , // , % , ** | .add , .sub , .mul , .div , .floordiv , .mod , .pow |
Comparação | < , > , <= , >= , == , != | .lt , .gt , .le , .ge , .eq , .ne |
0 comentários:
Postar um comentário