DataFrame 열 연산

PySpark로 데이터 정제하기

Mike Metzger

Data Engineering Consultant

DataFrame 복습

DataFrame:

  • 행과 열로 구성됨
  • 불변(Immutable)
  • 변환 연산으로 데이터를 수정
# 이름이 "M"으로 시작하는 행 반환
voter_df.filter(voter_df.name.like('M%'))

# name과 position만 반환 voters = voter_df.select('name', 'position')
PySpark로 데이터 정제하기

자주 쓰는 DataFrame 변환

  • Filter / Where
    voter_df.filter(voter_df.date > '1/1/2019') # 또는 voter_df.where(...)
    
  • Select
    voter_df.select(voter_df.name)
    
  • withColumn
    voter_df.withColumn('year', voter_df.date.year)
    
  • drop
    voter_df.drop('unused_column')
    
PySpark로 데이터 정제하기

데이터 필터링

  • null 제거
  • 비정상 값 제거
  • 합쳐진 소스 분리
  • ~로 부정
    voter_df.filter(voter_df['name'].isNotNull())
    voter_df.filter(voter_df.date.year > 1800)
    voter_df.where(voter_df['_c0'].contains('VOTE'))
    voter_df.where(~ voter_df._c1.isNull())
    
PySpark로 데이터 정제하기

문자열 열 변환

  • pyspark.sql.functions에 포함
    import pyspark.sql.functions as F
    
  • 열 단위 변환으로 적용
    voter_df.withColumn('upper', F.upper('name'))
    
  • 중간 열 생성 가능
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • 다른 타입으로 캐스팅 가능
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
PySpark로 데이터 정제하기

ArrayType() 열 함수

ArrayType()과 상호작용하는 유틸 함수/변환

.size(<column>) - ArrayType() 열의 길이 반환

.getItem(<index>) - 리스트 열에서 해당 인덱스의 항목 반환

PySpark로 데이터 정제하기

연습해 봅시다!

PySpark로 데이터 정제하기

Preparing Video For Download...