제 2강. 데이터 처리가 쉬워지는 SAS University Edition "SQL 잘해야만 분석하나요?"
[SAS University Edition에서 불러올 수 있는 파일의 종류]
다양한 데이터를 불러올 수 있습니다.
[이용할 데이터]
E-commerce 상거래 데이터
고객정보: 고객번호, 성별, 나이, 지역번호
거래정보: 거래 단위로 발생하는 데이터로 거래번호, 고객번호 상품번호, 상품가격
상품정보: 상품번호, 상품대분류, 상품가격
E-commerce 상거래 데이터를 이용하여 구매금액, 빈도가 상위 5%인 VIP 고객을 찾아보겠습니다.
내폴더에 새로운 폴더(002_원천데이터와 003_프로세스플로우)를 생성하겠습니다.
방법: 내 폴더 -> 새로 만들기 -> 폴더
시각적 프로그래머는 프로세스플로우 단위로 진행됩니다.
원천데이터에는 강의에서 진행하는 데이터를 업로드하겠습니다.(데이터는 첨부파일을 참고하세요)
업로드방법: [서버 파일 및 폴더 -> 4번째 icon (빨간 박스로 표시)
<프로세스 플로우>
[프로세스 플로우 -> 작업 및 유틸리티: 유틸리티: 데이터 가져오기]
[데이터 가져오기 더블클릭]
데이터 가져오기 더블클릭시 프로세스 플로우데 데이터를 로드할 수 있습니다.
원천데이터파일에 로드한 데이터를 드래그앤드롭이나 파일선택으로 데이터를 가져올 수 있습니다.
제공하는 데이터의 확장자는 csv로 저장되어 SAS data-set 형태로 바꿔야 됩니다.
[업로드한 데이터 더블클릭 -> 출력 데이터: 변경 -> 라이브러리:MYTASK , 데이터셋: CUSTOMER_DEMO]로 변경합니다.
[옵션: CSV(쉼표로 구분된 파일) -> Run icon 클릭]
*Run Icon을 꼭 클릭하셔야 로드가 됩니다.
2강에서는 3개의 데이터가 필요하기 때문에 CUSTOMER_DEMO뿐 아니라, PRODUCT_DEMO, TRANSACTION 까지 같은 방법으로 데이터를 로드해주시면 됩니다.
Run icon(사람이 달리는 모형) 하시면, 실행결과가 출력됩니다.
*데이터셋 이름에 MYTASK.CUSTOMER_DEMO를 확인하실 수 있습니다.
[출력데이터]에서는 raw data를 확인하실 수 있습니다.
*테이블에 MYTASK.CUSTOMER_DEMO를 확인하실 수 있습니다.
[노드(=데이터 가져오기 박스) -> 이름: ]에서 이름을 바꿀 수 있습니다.
본 강의에서는 customer_demo로 변경하였습니다. (다른 2개의 데이터도 이름을 변경했습니다.)
3개의 노드가 생성됩니다.
모든 데이터가 로드되면 노드옆에 초록색 체크 표시가 표시됩니다.
*
PRODUCT_DEMO의 출력데이터를 보면, 데이터로드가 잘 되지 않은 경우가 발견됬습니다.
(데이터 로드시 출력데이터를 통해서 결과를 확인)
PRODUCT_DEMO데이터가 총 1200개이므로 행 추측을 1000으로 해줬습니다.
다시 프로세스 플로우로 돌아가서, CUSTOMER_DEMO에서
[작업 -> 데이터 -> 테이블 특성리스트를 클릭후 플로우 창에 드래그 앤 드롭]
CUSTOMER_DEMO data에 데이터 특성리스트 작업을 하기 위해서 컨트롤 포트(노드 옆 양쪽 조그만한 네모박스)를 연결해주었습니다.
[데이터 특성 리스트 더블 클릭 -> MYTASK: CUSTOMER_DEMO]
아래의 3개의 노드에 위와 같은 방식으로 각각의 데이터를 로드시켰습니다.
본격적으로 데이터 분석을 하기 위해 [유틸리티 -> 질의 드래그앤 드롭]
[질의 더블클릭 -> '+:테이블' -> CUSTINER_DEMO 와 TRANSACTION 데이터 불러오기 -> '+:조인' -> 왼쪽 테이블에는 CUSTOMER_DEMO, 오른쪽 테이블에는 TRANSACTION, 조인유형은 왼쪽 조인]
[조인 조건:id에서 transaction_id에서 customer_id]로 변경
[칼럼-> CUSTOMER_DEMO: id, sex, age변수와 TRANSACTION: transactio_id,buy_amt변수를 선택 화면에 드래그 앤 드롭]
구하고자 하는 것은 customer_id를 기준으로 얼마나 많은 구매를 했는지, buy_amt를 사용해서 총 구매금액을 구할 수 있습니다.
[그룹(무엇을 기준으로 summary할 것인가?를 의미)-> TRANSACTION변수들을 삭제합니다.
[선택-> TRANSACTION변수 칼럼이름을 transaction_id -> buy_cnt, buy_amt -> buy_amt로 이름을 변경]
[buy_cnt를 Count Distinct, but_amt를 합계 -> RUN]
이렇게 취합된 정보를 가지고 VIP고객을 찾아보겠습니다.
[작업 -> 데이터 -> 데이터 순위화 -> 플로우에 드래그 앤 드롭]
[옵션 -> 순위화 방법: 분위수, 비율 순위, 백분율, 순위의 정규 스코어, 순위의 savage 스코어]를 선택할 수 있습니다.
<데이터>
[순위화할 칼럼 : buy_date와 buy_amt 지정하여 어떤 변수를 ]
[출력 데이터셋 > 데이터셋 이름:MYTASK의 CUSTOMER_rank로 변경]
<칼럼>
[순위화 방법: 비율순위]
[값이 같을 때 사용: 높은 순위]
[순위 순서: 큰 값에서 작은 값으로 ]
-> RUN
이제까지한 과정은 데이터 전처리입니다.
이제는 새로운 노드 '데이터 필터'를 사용하여 상위 5% 고객을 찾아보겠습니다.
[데이터 필터 더블클릭 -> 데이터]
데이터에는 위 노드에서 만든 MYTASK의 CUSTOMER_RANK로 지정합니다.
[필터1]
변수 1: rank_buy_cnt
비교: 보다 작음
값 유형: 값 입력
값: 0.05
논리: AND
변수2: rank_buy_cnt
비교: 보다 작음
값 유형: 값 입력
값: 0.05
논리: AND
[출력 데이터셋]
데이터셋 이름:CUSTOMER_VIP로 변경한다.
-> RUN
실행 후 결과 창 입니다.
전체 행은 75개로 5000개의 데이터 중 75명이 상위 5% 고객임임을 알 수 있습니다.
이러한 데이터 플로우는 재사용이 가능합니다.
[디스크모양 -> 003_프로세스플로우 : 001_데이터처리(VIP고객찾기)]로 저장했습니다.
혹시 첨부파일은 어디서 다운받나요? 답변주시면 감사하겠습니다!
데이터 해당 게시글에 첨부하였습니다.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Lock in the best rate now before the price increases on April 1.