Python Pandas - praca z danymi tekstowymi

W tym rozdziale omówimy operacje na łańcuchach z naszą podstawową serią / indeksem. W kolejnych rozdziałach nauczymy się, jak zastosować te funkcje łańcuchowe w DataFrame.

Pandy zapewnia zestaw funkcji tekstowych, które ułatwiają operowanie na danych łańcuchowych. Co najważniejsze, te funkcje ignorują (lub wykluczają) brakujące / NaN wartości.

Prawie wszystkie te metody działają z funkcjami łańcuchowymi w języku Python (patrz: https://docs.python.org/3/library/stdtypes.html#string-methods). Więc przekonwertuj obiekt Series na obiekt typu String, a następnie wykonaj operację.

Zobaczmy teraz, jak przebiega każda operacja.

Sr.No Opis funkcji
1

lower()

Konwertuje ciągi w Serii / Indeksie na małe litery.

2

upper()

Konwertuje ciągi w Serii / Indeksie na wielkie litery.

3

len()

Oblicza długość ciągu ().

4

strip()

Pomaga usunąć białe znaki (w tym znak nowej linii) z każdego ciągu w serii / indeksie z obu stron.

5

split(' ')

Dzieli każdy ciąg z podanym wzorem.

6

cat(sep=' ')

Łączy elementy serii / indeksu z podanym separatorem.

7

get_dummies()

Zwraca DataFrame z wartościami One-Hot Encoded.

8

contains(pattern)

Zwraca wartość logiczną True dla każdego elementu, jeśli podciąg zawiera element, w przeciwnym razie False.

9

replace(a,b)

Zastępuje wartość a z wartością b.

10

repeat(value)

Powtarza każdy element określoną liczbę razy.

11

count(pattern)

Zwraca liczbę pojawiania się wzorca w każdym elemencie.

12

startswith(pattern)

Zwraca wartość true, jeśli element w serii / indeksie zaczyna się od wzorca.

13

endswith(pattern)

Zwraca wartość true, jeśli element w serii / indeksie kończy się wzorem.

14

find(pattern)

Zwraca pierwszą pozycję pierwszego wystąpienia wzorca.

15

findall(pattern)

Zwraca listę wszystkich wystąpień wzorca.

16

swapcase

Zamienia małe / duże litery.

17

islower()

Sprawdza, czy wszystkie znaki w każdym ciągu w serii / indeksie są małymi literami, czy nie. Zwraca wartość logiczną

18

isupper()

Sprawdza, czy wszystkie znaki w każdym ciągu w serii / indeksie są dużymi literami, czy nie. Zwraca wartość logiczną.

19

isnumeric()

Sprawdza, czy wszystkie znaki w każdym ciągu w serii / indeksie są numeryczne. Zwraca wartość logiczną.

Stwórzmy teraz serię i zobaczmy, jak działają wszystkie powyższe funkcje.

import pandas as pd
import numpy as np

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

print s

Jego output wygląda następująco -

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

niższy()

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

Jego output wygląda następująco -

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

górny()

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

Jego output wygląda następująco -

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

Jego output wygląda następująco -

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

rozebrać się()

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

Jego output wygląda następująco -

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

podział (wzór)

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

Jego output wygląda następująco -

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

kot (sep = wzór)

import pandas as pd
import numpy as np

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

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

Jego output wygląda następująco -

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

Jego output wygląda następująco -

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

zawiera ()

import pandas as pd

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

print s.str.contains(' ')

Jego output wygląda następująco -

0   True
1   True
2   False
3   False
dtype: bool

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

Jego output wygląda następująco -

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

powtórzyć (wartość)

import pandas as pd

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

print s.str.repeat(2)

Jego output wygląda następująco -

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

count (wzorzec)

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

Jego output wygląda następująco -

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

zaczyna się (wzór)

import pandas as pd

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

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

Jego output wygląda następująco -

0  True
1  False
2  False
3  False
dtype: bool

endwith (wzór)

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

Jego output wygląda następująco -

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

znajdź (wzór)

import pandas as pd

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

print s.str.find('e')

Jego output wygląda następująco -

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

„-1” oznacza, że ​​w elemencie nie ma takiego wzorca.

findall (wzór)

import pandas as pd

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

print s.str.findall('e')

Jego output wygląda następująco -

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

Lista pusta ([]) wskazuje, że w elemencie nie ma takiego wzorca.

swapcase ()

import pandas as pd

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

Jego output wygląda następująco -

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

Jego output wygląda następująco -

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

Jego output wygląda następująco -

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

Jego output wygląda następująco -

0  False
1  False
2  False
3  False
dtype: bool