Python Pandas - Trabalhando com dados de texto

Neste capítulo, discutiremos as operações de string com nossa Série / Índice básico. Nos capítulos subsequentes, aprenderemos como aplicar essas funções de string no DataFrame.

O Pandas oferece um conjunto de funções de string que facilitam a operação com dados de string. Mais importante ainda, essas funções ignoram (ou excluem) valores ausentes / NaN.

Quase, todos esses métodos funcionam com funções de string Python (consulte: https://docs.python.org/3/library/stdtypes.html#string-methods) Portanto, converta o objeto de série em objeto de seqüência de caracteres e execute a operação.

Vamos agora ver o desempenho de cada operação.

Sr. Não Descrição da função
1

lower()

Converte strings na série / índice em minúsculas.

2

upper()

Converte strings na série / índice em maiúsculas.

3

len()

Calcula o comprimento da string ().

4

strip()

Ajuda a remover espaços em branco (incluindo nova linha) de cada string na série / índice de ambos os lados.

5

split(' ')

Divide cada string com o padrão fornecido.

6

cat(sep=' ')

Concatena os elementos da série / índice com o separador fornecido.

7

get_dummies()

Retorna o DataFrame com valores One-Hot Encoded.

8

contains(pattern)

Retorna um valor booleano True para cada elemento se a substring contiver no elemento, caso contrário, False.

9

replace(a,b)

Substitui o valor a com o valor b.

10

repeat(value)

Repete cada elemento com o número especificado de vezes.

11

count(pattern)

Retorna a contagem da aparência do padrão em cada elemento.

12

startswith(pattern)

Retorna verdadeiro se o elemento na Série / Índice começar com o padrão.

13

endswith(pattern)

Retorna verdadeiro se o elemento na Série / Índice terminar com o padrão.

14

find(pattern)

Retorna a primeira posição da primeira ocorrência do padrão.

15

findall(pattern)

Retorna uma lista de todas as ocorrências do padrão.

16

swapcase

Troca a caixa entre inferior / superior.

17

islower()

Verifica se todos os caracteres em cada string na Série / Índice estão em minúsculas ou não. Retorna booleano

18

isupper()

Verifica se todos os caracteres em cada string na Série / Índice estão em maiúsculas ou não. Retorna Boolean.

19

isnumeric()

Verifica se todos os caracteres em cada string na Série / Índice são numéricos. Retorna Boolean.

Vamos agora criar uma série e ver como todas as funções acima funcionam.

import pandas as pd
import numpy as np

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]', np.nan, '1234','SteveSmith'])

print s

Está output é o seguinte -

0            Tom
1   William Rick
2           John
3        [email protected]
4            NaN
5           1234
6    Steve Smith
dtype: object

mais baixo()

import pandas as pd
import numpy as np

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]', np.nan, '1234','SteveSmith'])

print s.str.lower()

Está output é o seguinte -

0            tom
1   william rick
2           john
3        [email protected]
4            NaN
5           1234
6    steve smith
dtype: object

superior()

import pandas as pd
import numpy as np

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]', np.nan, '1234','SteveSmith'])

print s.str.upper()

Está output é o seguinte -

0            TOM
1   WILLIAM RICK
2           JOHN
3        [email protected]
4            NaN
5           1234
6    STEVE SMITH
dtype: object

len ()

import pandas as pd
import numpy as np

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]', np.nan, '1234','SteveSmith'])
print s.str.len()

Está output é o seguinte -

0    3.0
1   12.0
2    4.0
3    7.0
4    NaN
5    4.0
6   10.0
dtype: float64

faixa()

import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])
print s
print ("After Stripping:")
print s.str.strip()

Está output é o seguinte -

0            Tom
1   William Rick
2           John
3        [email protected]
dtype: object

After Stripping:
0            Tom
1   William Rick
2           John
3        [email protected]
dtype: object

divisão (padrão)

import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])
print s
print ("Split Pattern:")
print s.str.split(' ')

Está output é o seguinte -

0            Tom
1   William Rick
2           John
3        [email protected]
dtype: object

Split Pattern:
0   [Tom, , , , , , , , , , ]
1   [, , , , , William, Rick]
2   [John]
3   [[email protected]]
dtype: object

gato (sep = padrão)

import pandas as pd
import numpy as np

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print s.str.cat(sep='_')

Está output é o seguinte -

Tom _ William [email protected]

get_dummies ()

import pandas as pd
import numpy as np

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print s.str.get_dummies()

Está output é o seguinte -

William Rick   [email protected]   John   Tom
0             0         0      0     1
1             1         0      0     0
2             0         0      1     0
3             0         1      0     0

contém ()

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print s.str.contains(' ')

Está output é o seguinte -

0   True
1   True
2   False
3   False
dtype: bool

substituir (a, b)

import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])
print s
print ("After replacing @ with $:")
print s.str.replace('@','$')

Está output é o seguinte -

0   Tom
1   William Rick
2   John
3   [email protected]
dtype: object

After replacing @ with $:
0   Tom
1   William Rick
2   John
3   Alber$t
dtype: object

repetir (valor)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print s.str.repeat(2)

Está output é o seguinte -

0   Tom            Tom
1   William Rick   William Rick
2                  JohnJohn
3                  [email protected]@t
dtype: object

contagem (padrão)

import pandas as pd
 
s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print ("The number of 'm's in each string:")
print s.str.count('m')

Está output é o seguinte -

The number of 'm's in each string:
0    1
1    1
2    0
3    0

começa com (padrão)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print ("Strings that start with 'T':")
print s.str. startswith ('T')

Está output é o seguinte -

0  True
1  False
2  False
3  False
dtype: bool

endswith (padrão)

import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])
print ("Strings that end with 't':")
print s.str.endswith('t')

Está output é o seguinte -

Strings that end with 't':
0  False
1  False
2  False
3  True
dtype: bool

encontrar (padrão)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print s.str.find('e')

Está output é o seguinte -

0  -1
1  -1
2  -1
3   3
dtype: int64

"-1" indica que esse padrão não está disponível no elemento.

findall (padrão)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', '[email protected]'])

print s.str.findall('e')

Está output é o seguinte -

0 []
1 []
2 []
3 [e]
dtype: object

Lista nula ([]) indica que não existe tal padrão disponível no elemento.

swapcase ()

import pandas as pd

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]'])
print s.str.swapcase()

Está output é o seguinte -

0  tOM
1  wILLIAM rICK
2  jOHN
3  [email protected]
dtype: object

é inferior()

import pandas as pd

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]'])
print s.str.islower()

Está output é o seguinte -

0  False
1  False
2  False
3  False
dtype: bool

isupper ()

import pandas as pd

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]'])

print s.str.isupper()

Está output é o seguinte -

0  False
1  False
2  False
3  False
dtype: bool

isnumeric ()

import pandas as pd

s = pd.Series(['Tom', 'William Rick', 'John', '[email protected]'])

print s.str.isnumeric()

Está output é o seguinte -

0  False
1  False
2  False
3  False
dtype: bool