pandas로 데이터 변환

Python으로 ETL과 ELT

Jake Roach

Data Engineer

파이프라인에서 데이터 변환

데이터는 다운스트림 사용자에게 가치를 주도록 적절히 변환해야 합니다

데이터 변환 워크플로

pandas는 표 형식 데이터 변환을 위한 강력한 도구를 제공합니다

  • .loc[]
  • .to_datetime()
Python으로 ETL과 ELT

.loc[]로 레코드 필터링

.loc[]는 DataFrame의 두 차원을 모두 변환할 수 있습니다

# 0이 아닌 항목만 유지
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, :]
# 불필요한 열 제거
cleaned = raw_stock_data.loc[:, ["timestamps", "open", "close"]]
# 한 단계로 결합
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]

.iloc[]는 정수 인덱싱으로 DataFrame을 필터링합니다

cleaned = raw_stock_data.iloc[[0:50], [0, 1, 2]]
Python으로 ETL과 ELT

데이터 유형 변경

데이터 유형은 종종 다운스트림 활용을 위해 변환해야 합니다

  • .to_datetime()
# "timestamps" 열은 현재 "20230101085731"처럼 보임
# "timestamps" 열을 datetime으로 변환
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], format="%Y%m%d%H%M%S")
Timestamp('2023-01-01 08:57:31')
# "timestamps" 열은 현재 1681596000011처럼 보임
# "timestamps" 열을 datetime으로 변환
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], unit="ms")
Timestamp('2023-04-15 22:00:00.011000')
Python으로 ETL과 ELT

변환 검증

데이터 변환에는 위험이 따릅니다:

  • 정보 손실
  • 잘못된 데이터 생성
# DataFrame을 확인하는 여러 방법
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]
print(cleaned.head())
# 최소/최대 레코드 반환
print(cleaned.nsmallest(10, ["timestamps"]))
print(cleaned.nlargest(10, ["timestamps"]))
Python으로 ETL과 ELT

연습해 봅시다!

Python으로 ETL과 ELT

Preparing Video For Download...