January 28, 2021

Обработка отдельных элементов таблицы в Pandas

Для  демонстрационных целей будем работать с таблицей актуальных цен на  недвижимость в Республике Северная Осетия-Алания, часть которой  приведена на рисунке ниже:

Обработка элементов посредством строковых векторизованных операций

Предположим,  что мы хотим привести столбец date_time, имеющий строковый тип, к  унифицированному виду. Заметим, что по-разному в нем записаны только  названия месяцев, поэтому числа трогать не будем. Для построения системы  правил преобразования сначала визуализируем все названия месяцев,  встречающиеся в этом столбце. Для этого воспользуемся механизмом векторизованных строковых операций, который позволяет через свойство str объектов Series  (столбцов) применять ко всем содержащимся в них значениям ряд полезных  методов. При этом отсутствующие данные будут пропускаться и не вызывать ошибки. Список возможных методов включает аналоги многих традиционных для Python функций работы со строками, также предусмотрена возможность  использования регулярных выражений.

Итак, посредством метода findall вернем все вхождения следующего шаблона re.compile('[А-Яа-я]+'), который задает сущности из одного или более букв русского алфавита:

Обработка элементов посредством метода map

Затем для каждого списка вернем первый элемент, для чего можно воспользоваться методом map, применяющим заданную функцию к каждому элементу объекта Series, а затем удалим дубликаты посредством метода drop_duplicates:

После визуализации можно заключить, что названия месяцев отличаются регистром первой буквы и окончанием.

Для преобразования столбца date_time вызовем метод map  для ненулевых элементов со специальной функцией. Она произведет разбор  строки по пробельным символам и для второй группы (где и находятся наши  слова) осуществит серию преобразований (приведение к нижнему регистру и в  случае необходимости возврат отображения слова в словаре соответствий),  а затем опять соберет и вернет итоговую строку.

Словарь соответствий имеет следующий вид:

Не пропустите ничего интересного и подписывайтесь на страницы канала в других социальных сетях:

Instagram

Яндекс Дзен

Telegram