Python Pandas - Работа с текстовыми данными

В этой главе мы обсудим строковые операции с нашей базовой серией / индексом. В следующих главах мы узнаем, как применять эти строковые функции к DataFrame.

Pandas предоставляет набор строковых функций, которые упрощают работу со строковыми данными. Что наиболее важно, эти функции игнорируют (или исключают) отсутствующие значения / NaN.

Почти все эти методы работают со строковыми функциями Python (см .: https://docs.python.org/3/library/stdtypes.html#string-methods). Итак, преобразуйте объект серии в объект String, а затем выполните операцию.

Давайте теперь посмотрим, как работает каждая операция.

Старший Нет Описание функции
1

lower()

Преобразует строки в серии / указателе в нижний регистр.

2

upper()

Преобразует строки в серии / указателе в верхний регистр.

3

len()

Вычисляет длину строки ().

4

strip()

Помогает удалить пробелы (включая новую строку) из каждой строки в серии / индексе с обеих сторон.

5

split(' ')

Разбивает каждую строку по заданному шаблону.

6

cat(sep=' ')

Объединяет элементы серии / индекса с заданным разделителем.

7

get_dummies()

Возвращает DataFrame со значениями One-Hot Encoded.

8

contains(pattern)

Возвращает логическое значение True для каждого элемента, если подстрока содержится в элементе, иначе False.

9

replace(a,b)

Заменяет значение a со значением b.

10

repeat(value)

Повторяет каждый элемент заданное количество раз.

11

count(pattern)

Возвращает количество появлений узора в каждом элементе.

12

startswith(pattern)

Возвращает true, если элемент в серии / индексе начинается с шаблона.

13

endswith(pattern)

Возвращает истину, если элемент в серии / указателе заканчивается шаблоном.

14

find(pattern)

Возвращает первую позицию первого вхождения шаблона.

15

findall(pattern)

Возвращает список всех вхождений шаблона.

16

swapcase

Меняет местами регистр нижний / верхний.

17

islower()

Проверяет, все ли символы в каждой строке в Серии / Индексе в нижнем регистре или нет. Возвращает логическое значение

18

isupper()

Проверяет, все ли символы в каждой строке в Серии / Индексе в верхнем регистре или нет. Возвращает логическое значение.

19

isnumeric()

Проверяет, все ли символы в каждой строке в серии / индексе являются числовыми. Возвращает логическое значение.

Давайте теперь создадим серию и посмотрим, как работают все вышеперечисленные функции.

import pandas as pd
import numpy as np

s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])

print s

это output выглядит следующим образом -

0            Tom
1   William Rick
2           John
3        Alber@t
4            NaN
5           1234
6    Steve Smith
dtype: object

нижний ()

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

это output выглядит следующим образом -

0            tom
1   william rick
2           john
3        alber@t
4            NaN
5           1234
6    steve smith
dtype: object

верхний ()

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

это output выглядит следующим образом -

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

это output выглядит следующим образом -

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

полоса ()

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

это output выглядит следующим образом -

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

сплит (узор)

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

это output выглядит следующим образом -

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

кошка (sep = шаблон)

import pandas as pd
import numpy as np

s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])

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

это output выглядит следующим образом -

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

это output выглядит следующим образом -

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

содержит ()

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])

print s.str.contains(' ')

это output выглядит следующим образом -

0   True
1   True
2   False
3   False
dtype: bool

заменить (а, б)

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

это output выглядит следующим образом -

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

повторить (значение)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])

print s.str.repeat(2)

это output выглядит следующим образом -

0   Tom            Tom
1   William Rick   William Rick
2                  JohnJohn
3                  Alber@tAlber@t
dtype: object

count (шаблон)

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

это output выглядит следующим образом -

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

начинается с (шаблон)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])

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

это output выглядит следующим образом -

0  True
1  False
2  False
3  False
dtype: bool

заканчивается (узор)

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

это output выглядит следующим образом -

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

найти (шаблон)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])

print s.str.find('e')

это output выглядит следующим образом -

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

«-1» означает, что в элементе нет такого шаблона.

findall (шаблон)

import pandas as pd

s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])

print s.str.findall('e')

это output выглядит следующим образом -

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

Нулевой список ([]) указывает, что в элементе нет такого шаблона.

swapcase ()

import pandas as pd

s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
print s.str.swapcase()

это output выглядит следующим образом -

0  tOM
1  wILLIAM rICK
2  jOHN
3  aLBER@T
dtype: object

islower ()

import pandas as pd

s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
print s.str.islower()

это output выглядит следующим образом -

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

это output выглядит следующим образом -

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

это output выглядит следующим образом -

0  False
1  False
2  False
3  False
dtype: bool