Regex для науки о данных

Регулярные выражения - это специальные последовательности символов, которые определяют шаблоны поиска в текстах. В этом посте мы обсудим, как использовать один из самых основных методов регулярных выражений в Python, «re.findall ()», для извлечения начала строковых выражений.

Давайте начнем!

Для начала давайте импортируем модуль регулярных выражений python «re»:

import re

Предположим, у нас есть следующая строка:

test_string1 = 'Python is Amazing!'

Мы можем передать выражение r «^ \ w +» в «re.findall ()» вместе с нашей строкой, которая вернет начало нашей входной строки:

regex_1 = re.findall(r"^\w+",test_string1)
print(regex_1)

В выражении r «^ \ w +» символ «^» соответствует началу строки, а «\ w +» находит буквенно-цифровые символы в строке.

Если мы удалим "^", мы получим:

regex_1 = re.findall(r"\w+",test_string1)
print(regex_1)

Давайте попробуем вытянуть начало другого примера строки:

test_string2 = 'Java is Amazing!'

Теперь давайте применим «re.findall ()», чтобы найти первое слово этой строки:

regex_2 = re.findall(r"^\w+",test_string2)
print(regex_2)

Затем давайте рассмотрим более реалистичный сценарий, в котором этот метод может быть полезен. Предположим, у нас есть список названий видео на YouTube и соответствующих просмотров на YouTube. Нам может быть интересно проанализировать взаимосвязь между первым словом заголовка видео и соответствующим количеством просмотров видео. Рассмотрим следующий список кортежей заголовков / представлений:

youtube_titles = [("How to Tell if We're Beating COVID-19", 2200000), ("Extreme Closet Clean Out",326000), ("This is $1,000,000 in Food",8800000), ("How To Tell If Someone Truly Loves You ", 2800000), ("How to Tell Real Gold from Fake", 2300000), ("Extreme living room transformation ", 25000)]

Мы можем найти первое слово каждого заголовка следующим образом:

for title in youtube_titles:
    print(re.findall(r"^\w+",title[0])[0])

Мы можем добавить эти значения в список:

first_words = []
for title in youtube_titles:
    first_words.append(re.findall(r"^\w+",title[0])[0])
print(first_words)

Мы также можем добавить представления в список:

first_words = []
views = []
for title in youtube_titles:
    first_words.append(re.findall(r"^\w+",title[0])[0])
    views.append(title[1])

Затем мы можем создать фрейм данных из значений первого слова и просмотров видео:

import pandas as pd
df = pd.DataFrame({'first_words': first_words, 'views':views})
print(df)

Затем мы можем выполнить группировку и вычислить среднее количество просмотров для каждого первого слова:

df = df.groupby('first_words')['views'].mean()
print(df)

Давайте также отсортируем эти значения в порядке убывания:

df = df.groupby('first_words')['views'].mean().sort_values(ascending = False)
print(df)

Если предположить, что эти результаты получены на основе достаточно большого набора данных, скажем, с тысячами заголовков и просмотров, этот тип анализа может помочь нам в выборе оптимальных заголовков видео на YouTube.

На этом я остановлюсь, но я рекомендую вам поиграть с методом re.findall () самостоятельно.

ВЫВОДЫ

Подводя итог, в этом посте мы обсудили, как использовать метод re.findall () из модуля регулярных выражений в Python. Мы применили этот метод к двум простым строкам, чтобы вытащить первые слова каждой строки. Затем мы рассмотрели более реалистичный вариант использования, в котором мы использовали метод для извлечения первого слова из заголовков видео YouTube и вычислили соответствующее среднее количество просмотров видео для каждого первого слова. Я надеюсь, что вы нашли этот пост интересным / полезным. Код из этого поста доступен на GitHub. Спасибо за чтение!