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', 'Alber@t', np.nan, '1234','SteveSmith'])
print s
Sus output es como sigue -
0 Tom
1 William Rick
2 John
3 Alber@t
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', 'Alber@t', np.nan, '1234','SteveSmith'])
print s.str.lower()
Sus output es como sigue -
0 tom
1 william rick
2 john
3 alber@t
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', 'Alber@t', np.nan, '1234','SteveSmith'])
print s.str.upper()
Sus output es como sigue -
0 TOM
1 WILLIAM RICK
2 JOHN
3 ALBER@T
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', 'Alber@t', 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', 'Alber@t'])
print s
print ("After Stripping:")
print s.str.strip()
Sus output es como sigue -
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
After Stripping:
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
split (patrón)
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s
print ("Split Pattern:")
print s.str.split(' ')
Sus output es como sigue -
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
Split Pattern:
0 [Tom, , , , , , , , , , ]
1 [, , , , , William, Rick]
2 [John]
3 [Alber@t]
dtype: object
gato (sep = patrón)
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.cat(sep='_')
Sus output es como sigue -
Tom _ William Rick_John_Alber@t
get_dummies ()
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.get_dummies()
Sus output es como sigue -
William Rick Alber@t 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', 'Alber@t'])
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', 'Alber@t'])
print s
print ("After replacing @ with $:")
print s.str.replace('@','$')
Sus output es como sigue -
0 Tom
1 William Rick
2 John
3 Alber@t
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', 'Alber@t'])
print s.str.repeat(2)
Sus output es como sigue -
0 Tom Tom
1 William Rick William Rick
2 JohnJohn
3 Alber@tAlber@t
dtype: object
contar (patrón)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
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', 'Alber@t'])
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', 'Alber@t'])
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', 'Alber@t'])
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', 'Alber@t'])
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', 'Alber@t'])
print s.str.swapcase()
Sus output es como sigue -
0 tOM
1 wILLIAM rICK
2 jOHN
3 aLBER@T
dtype: object
es bajo()
import pandas as pd
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
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', 'Alber@t'])
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', 'Alber@t'])
print s.str.isnumeric()
Sus output es como sigue -
0 False
1 False
2 False
3 False
dtype: bool