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()
pandas w regex

👨‍💻 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]
pandas w regex contains

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.