DevGang
Авторизоваться

Как убрать грязные имена столбцов Pandas

Данные реального мира беспорядочны. Мы часто получаем данные из нескольких источников с разным форматом именования столбцов, и их стандартизация может быть проблемой. Несмотря на проблему, по-прежнему важно стандартизировать имена столбцов в общем формате на ранней стадии процесса очистки данных, чтобы облегчить последующие задачи. Регулярное выражение обычно используется для очистки запутанных имен столбцов, однако может быть довольно утомительно писать регулярное выражение для покрытия различных запутанных сценариев. В этот момент входит Skimpy.

Skimpy

Skimpy обычно используется для предоставления сводной статистики о переменных в Pandas DataFrame. Однако не это нас сегодня интересует. Менее используемая функция Skimpy — это функция clean_columms, которая помогает решить проблему беспорядочных имен столбцов Pandas.

Skimpy предоставляет несколько распространенных форматов для стандартизации имен столбцов. В таблице ниже показаны результирующие имена столбцов для разных стилей регистра. Эти стили регистра различаются используемым регистром и разделителем.

Давайте посмотрим, как мы можем использовать skimpy для очистки имени столбца.

Установка:

pip install skimpy

Импорт:

import pandas as pd
from skimpy import clean_columns

Давайте создадим игрушечный набор данных, чтобы увидеть, как работает Skimpy.

columns = ['_Customer__name',
           'customer_génder',
           'customer age',
           'billingAddress',
           'delivery** address  ',
           'item(Description)',
           'quantity/Volume',
           'total.price']
messy_df = pd.DataFrame(data = [], columns=columns, index=[0])

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

Snake Case

Формат по умолчанию, который стандартизируется skimpy - это snake стиль регистра. Стиль Snake Case заменяет пробелы и разделители символов подчеркиванием и преобразует все символы в нижний регистр.

clean_df = clean_columns(messy_df)
clean_df.columns.tolist()
>>
['customer_name',
 'customer_gender',
 'customer_age',
 'billing_address',
 'delivery_address',
 'item_description',
 'quantity_volume',
 'total_price']

Kebab Case

Стиль kebab case аналогичен snake, за исключением того, что вместо подчеркивания используется разделитель тире.

clean_df = clean_columns(messy_df, case = 'kebab')
clean_df.columns.tolist()
>> 
['customer-name',
 'customer-gender',
 'customer-age',
 'billing-address',
 'delivery-address',
 'item-description',
 'quantity-volume',
 'total-price']

Camel Case

Camel case стиль использует символы верхнего регистра в качестве разделителя, а первый символ каждой строки находится в нижнем регистре.

clean_df = clean_columns(messy_df, case = 'camel')
clean_df.columns.tolist()
>>
['customerName',
 'customerGender',
 'customerAge',
 'billingAddress',
 'deliveryAddress',
 'itemDescription',
 'quantityVolume',
 'totalPrice']

Pascal Case

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

clean_df = clean_columns(messy_df, case = 'pascal')
clean_df.columns.tolist()
>>
['CustomerName',
 'CustomerGender',
 'CustomerAge',
 'BillingAddress',
 'DeliveryAddress',
 'ItemDescription',
 'QuantityVolume',
 'TotalPrice']

Constant Case

Стиль constant case использует разделитель подчеркивания и изменяет все символы на верхний регистр.

clean_df = clean_columns(messy_df, case = 'const')
clean_df.columns.tolist()
>>
['CUSTOMER_NAME',
 'CUSTOMER_GENDER',
 'CUSTOMER_AGE',
 'BILLING_ADDRESS',
 'DELIVERY_ADDRESS',
 'ITEM_DESCRIPTION',
 'QUANTITY_VOLUME',
 'TOTAL_PRICE']

Замена строки

clean_columns() также предоставляет возможность заменить строку. Это может быть полезно для исправления неправильно написанных имен столбцов или для переименования столбца в стандартный формат. Например, мы могли бы сократить Address до Addr и Description до Desc

clean_df = clean_columns(messy_df, case = 'pascal', replace = {'Address':'Addr', 'Description':'Desc'})
clean_df.columns.tolist()
>>
['CustomerName',
 'CustomerGender',
 'CustomerAge',
 'BillingAddr',
 'DeliveryAddr',
 'ItemDesc',
 'QuantityVolume',
 'TotalPrice']
#Python #Pandas
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В подарок 100$ на счет при регистрации

Получить