Today's Goals
1. 기초 프로젝트 - RFM 분석을 통한 고객 세그먼트와 그룹별 특징 파악을 해보자
으ㅏ아아아아....! 불태웠다
1. 기초프로젝트 진행 과정
[상황 설정]
- 데이터 분석 상황 및 목표 설정 > 프로모션 기간 종료 후 성과 확인, 프로모션 개선 계획 수립
[전처리]
- 컬럼에 대한 정의를 명확하게 합의하고자 노력함
- json형태의 저장 데이터를 처리함 > 새로운 컬럼 생성
[RFM 분석을 통한 고객 세그먼트]
- 분석 대상 기간동안 구매 이력이 없는 고객은 제외함
- 총 구매 금액, 단위기간 동안 구매 횟수, 최근 구매 시점을 기준으로 세그먼트
- 사분위수를 기준으로 4그룹으로 구분, 각 그룹별 점수를 부여하여 최종 고객 그룹 4개로 분류
[고객 세그먼트 기반 특징 파악]
- 팀원별로 작업 나눔 > 고객 그룹별, 프로모션별 참여율 및 수익율 파악
2. Python 함수 더 알아가기
[json 형태로 저장된 값을 가진 컬럼의 전처리, json.loads]
- 위와 같이, 리스트 형태의 값과 딕셔너리 형태의 값을 가지는 두 데이터프레임을 활용하려면 전처리가 필요함
- json 모듈 사용 필요, import json
transcript_copy['parsed_data'] = transcript_copy['value'].apply(json.loads)
- 위와 같은 코드를 썼는데, ' 이 홑따옴표를 " 이 쌍따옴표로 바꾸라는 오류가 떴음
transcript_copy['value_dict'] = transcript_copy['value'].apply(lambda x: json.loads(x.replace("'", '"')))
- 위 코드로 변경 후 오류 해결, 새로운 컬럼을 생성하여 json 형태 데이터 재구성
[집합을 만들어 주는 set() 함수, list와의 차이는?]
- set()함수는 중복을 없앤 집합을 만들어줌
- 따로 list 형태는 아니고, list로 활용하려면 변형해주는 과정 필요
- 순서가 없어 index 접근은 불가능, for문을 이용하여 요소를 하나씩 불러낼 수 있음
- update 메서드를 이용하여 요소 추가
[컬럼별 합이 아닌, 인덱스별 합을 구하고 싶다면]
- sum(aixs=1) 을 해주면 됨
- axis = 0은 행방향 동작(위에서 아래), =1은 열방향 동작(왼쪽에서 오른쪽)
[특정 조건에 해당하는 행의 개수 세기]
- shape 또는 len을 활용할 수 있음
#방법1
x.loc[x['event'] == 'offer completed'].shape[0]
#방법2
len(x.loc[x['event'] == 'offer completed'])
https://jimmy-ai.tistory.com/267
[결측값 대체, 그런데 이제 앞의 행과 뒤의 행을 참조하는...]
- fillna(method=)를 통해 결측값을 대체할 행을 정할 수 있음(윗 행이나 아래 행)
- ffill은 윗행의 값으로 결측값을 채우는 것, bfill은 아래행의 값으로 결측값을 채우는 것
'데이터 부트캠프 - Today I Learned' 카테고리의 다른 글
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_6주차_24.12.30 (0) | 2024.12.30 |
---|---|
[스파르타 내일배움캠프 / 데이터 분석 트랙] WIL(Weekly I Learned)_5주차 (0) | 2024.12.29 |
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_5주차_24.12.26 (0) | 2024.12.26 |
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_5주차_24.12.24 (1) | 2024.12.24 |
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_5주차_24.12.23 (0) | 2024.12.23 |