
Regex w Pandas – przykłady zastosowania
Istnieje kilka metod w pandas, które akceptują regex (regular expressions), pomagając znaleźć wzorzec (pattern) w takich obiektach jak Series czy Dataframe. Przyda Ci się to, gdy chcesz znaleźć nazwy zaczynające się od określonego znaku lub wyszukać wzorzec w kolumnie lub wyodrębnić daty z tekstu. W skrócie: regex w pandas się przydaje.
I tu przyjrzymy się kilku przykładom.
Regex Pandas Methods
Zacznijmy od wypisania kilku metod które, akceptują regular expressions:
count() | Sprawdza ile razy dany wzór się pojawił |
replace() | Zamienia wyszukany wzór na podaną wartość |
contains() | Sprawdza czy wzór zawiera się w stringu i zwraca True / False |
extract() | Wyodrębnia wzorzec z tekstu |
findall() | Znajduje wszystkie pozycje gdzie wzór się zgadza |
match() | Sprawdza czy wzór = string i zwraca True / False |
split() | Dzieli tekst przy użyciu wzoru |
Tworzymy Dataframe do potestowania regex w pandas
Na początku po prostu stworzymy sobie dataframe. Będzie nam łatwiej obserwować co taki regex w pandas nam daje.
import pandas as pd
df = pd.read_csv('./happiness-report.csv')
df.head()

Cały kod możesz pobrać z mojego githuba stąd. Dane też tam są.
👨💻 extract regex pandas
Za pomocą extract() znajdziemy pierwsze wystąpienie ‘e’ w tekście i wyciągniemy jedną {1} dodatkową literę [a-z].
df['letter_after_first_e']=df['Country (region)'].str.extract(r'(e[a-z]{1})')
df.head()

👨💻 count regex pandas
Tym razem sprawdzamy ile państw zaczyna się na F. Oczywiście wszystkie państwa piszemy wielką literą więc szukamy po dużym F
df[df['Country (region)'].str.count(r'(^F.*)')==1]

Wychodzi na m tylko Francja i Finlandia.
Oczywiście, możemy po prostu policzyć ile rekordów spełnia takie kryteria.
df['Country (region)'].str.count(r'(^F.*)').sum()
Rezultat: 2
Prawda, że regex w pandas może się przydać? 🙂
👨💻 match regex pandas
W kolejnym przykładzie skorzystamy z match(), które zwraca boolen (prawda / fałsz). Chcemy pokazać tylko te rekordy, gdzie kraj zaczyna się od R.
df[df['Country (region)'].str.match('^R.*')== True]

👨💻 contains regex pandas
Podobny przykład do match(). W tym przypadku contains() sprawdza czy podany wzór zawiera się w tekście.
df[df['Country (region)'].str.contains('^.i.*')==True]

Podsumowanie
Jak widzisz zastosowanie regex w pandas jest dość proste. Pozwala filtrować dane na dosyć zaawansowane sposoby albo wyciągać fragmenty tekstu, które nas interesują. Czyli na zadania dla analityka typu czyszczenie danych i walidacja jak znalazł 😉
O innych niezłych zabawach z tekstem w Pythonie poczytasz tutaj.
To tyle w tym temacie. Analizujcie w pokoju! 📊📈
Podobał Ci się ten artykuł?
Podziel się nim w Social Mediach:
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego 💻
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych 💗
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości 💡
Wolisz oglądać 📺 niż czytać – nie ma problemu 😉
>>> Obserwuj i oglądaj KajoData na YouTube
A jeśli chcesz się dowiedzieć czegoś więcej o Pythonie – zajrzyj tutaj.