Подготовка имен столбцов для БД (Python/Pandas)

При импорте данных из CSV в базы данных (PostgreSQL, SQLite и др.) важно, чтобы имена столбцов были «SQL-friendly»: без пробелов, спецсимволов и в едином регистре.

Почему это важно?

  • Удобство: Не нужно постоянно использовать кавычки "" в SQL-запросах (например, SELECT "Customer ID" FROM... превращается в SELECT customer_id FROM...).
  • Стабильность: Исключаются ошибки из-за скрытых символов или разного регистра.

Скрипт для нормализации

Этот код приводит заголовки к формату snake_case:

import pandas as pd
 
# Загрузка
df = pd.read_csv("data.csv")
 
# Нормализация имен столбцов
df.columns = (
    df.columns
      .str.strip()               # Убираем пробелы по краям
      .str.lower()               # Приводим к нижнему регистру
      .str.replace(" ", "_")     # Заменяем пробелы на подчеркивания
      .str.replace(r"[^\w]+", "_", regex=True) # Заменяем спецсимволы на подчеркивания
)

Что делает регулярное выражение [^\w]+?

  • [^\w] — находит любой символ, который не является буквой, цифрой или подчеркиванием.
  • + — находит один или несколько таких символов подряд.
  • _ — заменяет их на одно подчеркивание.

Когда применять?

  • Перед записью в базу данных через to_sql.
  • Перед сохранением промежуточных CSV-файлов для дальнейшего импорта.
  • При автоматизации обработки отчетов, приходящих от коллег или из внешних систем.

Reference:

  • ChatGPT