Python Pandas: trabajo con datos de texto

En este capítulo, discutiremos las operaciones de cadena con nuestra Serie / Índice básico. En los capítulos siguientes, aprenderemos cómo aplicar estas funciones de cadena en el DataFrame.

Pandas proporciona un conjunto de funciones de cadena que facilitan la operación con datos de cadena. Lo más importante es que estas funciones ignoran (o excluyen) los valores faltantes / NaN.

Casi todos estos métodos funcionan con funciones de cadena de Python (consulte: https://docs.python.org/3/library/stdtypes.html#string-methods). Por lo tanto, convierta el objeto de serie en un objeto de cadena y luego realice la operación.

Veamos ahora cómo se realiza cada operación.

No Señor Función descriptiva
1

lower()

Convierte las cadenas de la serie / índice a minúsculas.

2

upper()

Convierte las cadenas de Series / Index a mayúsculas.

3

len()

Calcula la longitud de la cadena ().

4

strip()

Ayuda a eliminar los espacios en blanco (incluida la nueva línea) de cada cadena en la Serie / índice de ambos lados.

5

split(' ')

Divide cada cuerda con el patrón dado.

6

cat(sep=' ')

Concatena los elementos de serie / índice con un separador dado.

7

get_dummies()

Devuelve el DataFrame con valores One-Hot Encoded.

8

contains(pattern)

Devuelve un valor booleano Verdadero para cada elemento si la subcadena contiene en el elemento; de lo contrario, es Falso.

9

replace(a,b)

Reemplaza el valor a con el valor b.

10

repeat(value)

Repite cada elemento con un número específico de veces.

11

count(pattern)

Devuelve el recuento de aparición del patrón en cada elemento.

12

startswith(pattern)

Devuelve verdadero si el elemento de la Serie / Índice comienza con el patrón.

13

endswith(pattern)

Devuelve verdadero si el elemento de la Serie / Índice termina con el patrón.

14

find(pattern)

Devuelve la primera posición de la primera aparición del patrón.

15

findall(pattern)

Devuelve una lista de todas las apariciones del patrón.

dieciséis

swapcase

Cambia el caso inferior / superior.

17

islower()

Comprueba si todos los caracteres de cada cadena de la Serie / Índice están en minúsculas o no. Devuelve booleano

18

isupper()

Comprueba si todos los caracteres de cada cadena de la Serie / Índice están en mayúsculas o no. Devuelve booleano.

19

isnumeric()

Comprueba si todos los caracteres de cada cadena de la Serie / Índice son numéricos. Devuelve booleano.

Creemos ahora una serie y veamos cómo funcionan todas las funciones anteriores.

import pandas as pd
import numpy as np

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

print s

Sus output es como sigue -

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

inferior()

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()

Sus output es como sigue -

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()

Sus output es como sigue -

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()

Sus output es como sigue -

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

tira()

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()

Sus output es como sigue -

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

split (patrón)

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(' ')

Sus output es como sigue -

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 = patrón)

import pandas as pd
import numpy as np

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

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

Sus output es como sigue -

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()

Sus output es como sigue -

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

contiene ()

import pandas as pd

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

print s.str.contains(' ')

Sus output es como sigue -

0   True
1   True
2   False
3   False
dtype: bool

reemplazar (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('@','$')

Sus output es como sigue -

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)

Sus output es como sigue -

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

contar (patrón)

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')

Sus output es como sigue -

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

comienza con (patrón)

import pandas as pd

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

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

Sus output es como sigue -

0  True
1  False
2  False
3  False
dtype: bool

termina con (patrón)

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

Sus output es como sigue -

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

encontrar (patrón)

import pandas as pd

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

print s.str.find('e')

Sus output es como sigue -

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

"-1" indica que no existe tal patrón disponible en el elemento.

findall (patrón)

import pandas as pd

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

print s.str.findall('e')

Sus output es como sigue -

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

La lista nula ([]) indica que no existe tal patrón disponible en el elemento.

swapcase ()

import pandas as pd

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

Sus output es como sigue -

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

es bajo()

import pandas as pd

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

Sus output es como sigue -

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()

Sus output es como sigue -

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()

Sus output es como sigue -

0  False
1  False
2  False
3  False
dtype: bool