Извлечение числовых значений из строк в DataFrame: методы и примеры кода

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

Метод 1: регулярные выражения (регулярные выражения)
Регулярные выражения предоставляют мощный и гибкий способ поиска шаблонов в строках. Модуль reв Python позволяет нам использовать регулярные выражения для извлечения числовых значений. Вот пример:

import re
def extract_numeric_value(text):
    pattern = r'\d+'  # Matches one or more digits
    matches = re.findall(pattern, text)
    return [int(match) for match in matches]
# Applying the function to a DataFrame column
df['numeric_value'] = df['text_column'].apply(extract_numeric_value)

Метод 2: разделение и фильтрация
Если числовое значение окружено нечисловыми символами, мы можем разделить строку и отфильтровать нечисловые части. Вот пример:

def extract_numeric_value(text):
    parts = text.split()
    numeric_parts = [part for part in parts if part.isdigit()]
    return [int(numeric_part) for numeric_part in numeric_parts]
# Applying the function to a DataFrame column
df['numeric_value'] = df['text_column'].apply(extract_numeric_value)

Метод 3: Метод str.extract()Pandas
Pandas предоставляет удобный метод под названием str.extract(), который позволяет нам извлекать подстроки с помощью регулярных выражений. Вот пример:

df['numeric_value'] = df['text_column'].str.extract(r'(\d+)', expand=False).astype(float)

Метод 4. Использование библиотеки numba.
Если вы работаете с большими наборами данных и вам необходимо повысить производительность, вы можете использовать библиотеку numba, которая предоставляет компиляция точно в срок. Вот пример:

from numba import jit
@jit(nopython=True)
def extract_numeric_value(text):
    numeric_value = 0
    for char in text:
        if char.isdigit():
            numeric_value = numeric_value * 10 + int(char)
    return numeric_value
# Applying the function to a DataFrame column
df['numeric_value'] = df['text_column'].apply(extract_numeric_value)

Извлечение числовых значений из строк в DataFrame — распространенная задача предварительной обработки данных. В этой статье мы рассмотрели несколько методов выполнения этой задачи, включая регулярные выражения, разделение и фильтрацию, использование метода str.extract()Pandas и использование библиотеки numbaдля повышения производительности. Применяя эти методы, вы можете эффективно извлекать числовые значения и улучшать рабочие процессы анализа данных и моделирования.

Не забудьте выбрать метод, который лучше всего соответствует вашим конкретным требованиям, принимая во внимание такие факторы, как производительность, гибкость и структура ваших данных.