susinlee 님의 블로그

문자열 관련 함수, 최적화 및 안정성 본문

코드카타/SQL, Pandas

문자열 관련 함수, 최적화 및 안정성

susinlee 2025. 4. 2. 09:53

MySQL 

소문자, 대문자 변환 및 문자열 슬라이싱

 

소문자 / 대문자로 바꾸는 함수

LOWER(str)

예) SELECT LOWER('HELLO'); → 'hello'

 

UPPER(str) 

예) SELECT UPPER('hello'); → 'HELLO'

 

문자열 슬라이싱 (부분 문자열 추출)

SUBSTR(str, pos, len) : pos 위치부터 len 길이만큼 추출 

예) SELECT SUBSTR('abcdef', 2, 3) → 'bcd' 

  • pos는 1부터 시작함
  • 음수를 쓰면 뒤에서부터 위치를 계산

문자열 길이를 구하는 함수

CHAR_LENGTH(str)

예) SELECT CHAR_LENGTH('안녕하세요');  → 5

SELECT CHAR_LENGTH('hello'); → 5

 

바이트 수를 구하는 함수

LENGTH(str) 

예) SELECT LENGTH('안녕하세요') → 15

SELECT LENGTH('hello') → 5

 

 

Pandas

문자열 관련 함수

 

소문자/대문자 변환

lower()

upper()

 

문장의 첫 글자만 대문자, 나머지는 소문자

capitalize()

 

각 단어의 첫 글자만 대문자로 변환

title()

 

대소문자를 서로 뒤바꿈

swapcase()

 

최적화 및 안정화

1. 사이드 이펙트 : 입력값 외의 외부 상태(변수, 객체 등)를 변경하는 것

→ 최대한 피해야 함

  • 예측하기 어려운 버그 발생 가능
  • 재사용성, 테스트 용이성이 떨어짐
  • 함수형 프로그래밍의 핵심 원칙 중 하나는 사이드 이펙트 프리

2. .str 접근 vs apply

.str 접근자

  • 문자열을 일괄 처리하는 pandas 전용 기능
  • 내부적으로 벡터화 되어 있어 속도가 빠르고 메모리 효율적

apply()

  • 각 원소에 대해 파이썬 함수를 일일히 적용
  • 일반적인 파이썬 루프 방식으로 속도가 느림

3. df.속성 vs  df['속성']

df.속성

  • 속기법
  • 내부적으로는 __getattr__() 를 호출
  • 간단하고 보기좋지만
    • 열 이름이 python 키워드 이거나
    • 공백이나 특수문자가 있으면 에러
    • DataFrame의 속성과 충돌할 수 있음

df['속성']

  • 보다 안전하고 일반적인 방식
  • 어떤 열 이름이든 문자열로 명시적으로 지정 가능
  • 실무에서는 이 방식을 더 권장함