• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (106) N
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (24) N
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • Pandas의 벡터 연산
      2025년 03월 06일
      • 31514
      • 작성자
      • 2025.03.06.오후02:32

      최근에 회사에서 ETL 작업을 수행하면서, DB에 있는 테이블을 불러와 변환 작업을 한 뒤 새로운 테이블에 적재하는 일을 진행했다.

      변환 작업은 Pandas를 사용했고, 이 과정에서 성능 향상을 고민하면서 알게된 벡터 연산에 대해 정리하려고 한다.

       

      데이터프레임을 다룰 때 여러 가지 방법이 존재한다.

      for문, iterrows() 메서드, apply() 메서드와 같이 레코드를 하나씩 다루는 방법과 벡터와 같이 모든 레코드를 한 번에 다루는 방법이 있다.

      당연하게도 처리 속도 측면에서 벡터 연산이 우월하며, for문, iterrows(), apply() 중에서는 apply()가 가장 빠르다.

       

      레코드를 하나씩 다루는 방법을 스칼라라고 하는데, 다음과 같은 특징을 가지고 있다.

      • for문 : 레코드를 하나씩 순회
      • iterrows() : 데이터프레임의 구조에 맞게 설계되어 레코드를 하나씩 효율적으로 순회
      • apply() : 원래는 데이터프레임에 함수를 적용하기 위해 설계된 것이지만, 속도 최적화도 가능

       

      끝으로 내가 사용한 벡터 연산 코드의 예시를 보여주고 마무리하고자 한다.

      # pixel_count에서 1,000을 나눠 KP 계산
      df_to_insert["kkpn"] = df["pixel_count"] / 1000

       

      더불어 numpy의 where 메서드도 벡터 연산이므로 참고하자.

      df_to_insert["latitude"] = np.where(df["tsi_lat"].isna() & df["tsi_lon"].isna(), df["pds_lat"], df["tsi_lat"])

       

      그리고 벡터 연산의 경우는 입력값의 데이터 개수와 출력값의 데이터 개수가 동일해야 한다는 점을 잊지말자!

      '개발' 카테고리의 다른 글

      LATERAL JOIN에 대해 알아보자.  (0) 2025.03.17
      SQLAlchemy와 psycopg2 중 어느 것을 사용할까?  (0) 2025.03.06
      Chunk를 사용하여 대용량 파일 전송하기  (0) 2025.01.17
      Synology Active Backup for Business 사용법 (Windows)  (0) 2025.01.06
      postgres 마이그레이션  (0) 2024.12.31
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바

      개인정보

      • 티스토리 홈
      • 포럼
      • 로그인

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.