데이터 시각적 검사

PySpark로 하는 Feature Engineering

John Hogue

Lead Data Scientist, General Mills

DataFrame.describe()로 기술 통계 확인

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
PySpark로 하는 Feature Engineering

다양한 기술 통계 함수 활용 가능

  • 평균
    • pyspark.sql.functions.mean(col)
  • 왜도
    • pyspark.sql.functions.skewness(col)
  • 최솟값
    • pyspark.sql.functions.min(col)
  • 공분산
    • cov(col1, col2)
  • 상관관계
    • corr(col1, col2)
PySpark로 하는 Feature Engineering

mean() 사용 예시

  • mean(col)
  • 집계 함수: 그룹 내 값의 평균을 반환합니다.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
PySpark로 하는 Feature Engineering

cov() 사용 예시

  • cov(col1, col2)
  • 매개변수:
    • col1 – 첫 번째 열
    • col2 – 두 번째 열
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
PySpark로 하는 Feature Engineering

seaborn: 통계 데이터 시각화

Seaborn

PySpark로 하는 Feature Engineering

시각화 관련 유의사항

Seaborn 등 표준 라이브러리로 PySpark DataFrame을 시각화하려면 Pandas로 변환해야 합니다.

경고: 변환 전에 PySpark DataFrame을 샘플링하세요!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement 샘플 내 반복 허용
    • fraction 유지할 레코드 비율(%)
    • seed 재현성을 위한 랜덤 시드
# PySpark DataFrame의 50%를 샘플링하고 행 수 확인
df.sample(False, 0.5, 42).count()
2504
PySpark로 하는 Feature Engineering

분포 시각화 준비

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, 1차원 배열 또는 리스트. 관측 데이터.
# 시각화 라이브러리 임포트
import seaborn as sns

# DataFrame 샘플링 sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# 샘플을 Pandas DataFrame으로 변환 pandas_df = sample_df.toPandas()
# 시각화 sns.distplot(pandas_df)
PySpark로 하는 Feature Engineering

판매 최종 가격 분포 플롯

분포 플롯

PySpark로 하는 Feature Engineering

관계 시각화

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : 문자열, 입력 변수; 데이터의 열 이름이어야 합니다.
  • data : Pandas DataFrame
# 시각화 라이브러리 임포트
import seaborn as sns

# 열 선택 s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # DataFrame 샘플링 s_df = s_df.sample(False, 0.5, 42)
# Pandas DataFrame으로 변환 pandas_df = s_df.toPandas()
# 시각화 sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
PySpark로 하는 Feature Engineering

지상 면적(SQFT)과 판매 가격 간의 선형 모델 플롯

선형 모델 플롯

PySpark로 하는 Feature Engineering

연습해 봅시다!

PySpark로 하는 Feature Engineering

Preparing Video For Download...