🤔pandas.style.background_gradient()
와 seaborn.heatmap()
의 차이?
🤔아래 히스토그램을 어떻게 해석할 수 있을까?
🤔결제 테이블에는 무엇이 있을까? (어트리뷰트)
🤔라이브러리 버전이 업데이트 될 때마다 노티를 받을 수 있는 방법이 있을까?
🤔라이브러리 최신버전을 사용하고 싶은데 다른 라이브러리와 호환 문제로 최신 버전을 사용할 수 없을 때는?
🤔실제 비즈니스에서 중복 데이터는 왜 생길까?
# 계산
arppu = df_valid.groupby('InvoiceYM').agg({"TotalPrice" : "sum", "CustomerID" : "nunique"})
arppu.columns = ["sale_sum", "customer_count"]
arppu["ARPPU"] = arppu["sale_sum"] / arppu["customer_count"]
arppu.style.format("{:,.0f}")
# 시각화
arppu["ARPPU"].plot(figsize=(12,4), title="Monthly ARPPU");
# 고객별 구매 빈도수, 평균 구매 금액, 총 구매금액
cust_agg = df_valid.groupby("CustomerID").agg({"InvoiceNo" : ["nunique", "count"], "TotalPrice" : ["mean", "sum"]})
cust_agg.columns = ['nunique', 'count', 'mean', 'sum'] # 컬럼값이 튜플 형태로 들어가 있어서 바꿔줌
count
가 아닌 nunique
사용# 계산
mau = df_valid.groupby("InvoiceYM")[["CustomerID"]].nunique()
# 시각화
mau.plot.bar(figsize=(12,4), rot=0, title="MAU(Monthly Active User)");
# 월별, 주문건, 중복을 제외한 주문제품 종류 수, 고객 수, 총 주문금액
df.groupby("InvoiceYM").agg({"InvoiceNo" : "count",
"StockCode": "nunique",
"CustomerID": "nunique",
"UnitPrice" : "sum",
"Quantity" : "sum",
"TotalPrice" : "sum"
})
🤔리텐션은 무엇일까?
🤔개월수로 구한다면 어떻게 구할까?
# 월단위 데이터 처리
df_valid["해당구매월"] = pd.to_datetime(df_valid["InvoiceYM"])
# 모든 데이터에 적용하기 위해 transform 사용
df_valid["최초구매월"] = df_valid.groupby("CustomerID")["해당구매월"].transform("min")
# 첫 구매일로부터 몇 달 째의 구매일까?
year_diff = df_valid["해당구매월"].dt.year - df_valid["최초구매월"].dt.year
month_diff = df_valid["해당구매월"].dt.month - df_valid["최초구매월"].dt.month
# 같은 년도의 같은 월을 0이 아닌 1로 표시
df_valid["CohortIndex"] = (year_diff * 12) + month_diff + 1
# 리텐션 시각화
sns.countplot(data=df_valid, x="CohortIndex")
# 잔존 빈도 구하기
cohort_count = df_valid.groupby(["최초구매월", "CohortIndex"])["CustomerID"].nunique().unstack()
cohort_count.index = cohort_count.index.astype(str).str[:7]
# 잔존율 구하기
cohort_norm = cohort_count.div(cohort_count[1], axis=0)
# 시각화
sns.heatmap(cohort_norm, annot=True, fmt=".2f", cmap="Blues")
RFM은 가치있는 고객을 추출해내 이를 기준으로 고객을 분류할 수 있는 분석방법
구매 가능성이 높은 고객을 선정하기 위한 데이터 분석 방법
R(Recency) - 최근에 구매했는지?
F(Frequency) - 얼마나 자주 구매했는지?
M(Monetary) - 얼마나 많은 금액을 구매했는지?
가장 큰 과제는 그룹 경계를 정의하는 것
출처 : nc soft 면접관 관점에서 채용후기
https://m.blog.naver.com/rlawoals93/221372472680
[서류전형]
1. 전반적으로 지원서의 수준 및 스펙(어학연수, 공모전, 아르바이트, 학점, 영어점수)이 매우 훌륭.
2. 서류를 통해서 개인의 전문성이나 직무에서의 역량을 파악하기는 힘들다.
3. 지원자의 성실함과 꼼꼼함을 확인하기 위한 자료
4. 대다수의 서류 형식이 비슷. 지원자의 90%가 핵심 주제를 대괄호([])로 묶는 등등..
5. 공모전 수상자의 우대조건이 명시되어 있었으나, 절반 가까운 지원자가 대회 참여 혹은 수상 경험이 존재
6. 정성적인 표현(ex. '끈기를 갖고 ~~ 뿌듯했다')보다는 정략적인 표현(ex. ~ 라이브러리를 이용하여 전처리, ~모델을 만들어 AUC가 높은 모델 선택)이 더 호감이 간다.
7. 전문 용어, 최신 기술을 어설프게 서술할 경우 반대 효과가 존재. 'LSTM을 활용하여 ~하겠다.'와 같이 기술의 이론을 잘 모른채 표현하는 것 처럼..
8. github, 블로그 등의 문서 외 자료가 인상적. 다만 방치해 놓은 사이트는 크게 도움이 되지 않을 듯.
9. 과도한 포부, 어설픈 조언은 오히려 역효과
[면접]
1. 공통질의
질의 내용
면접 피드백
좋았던 점
1) 긴장하지 않는 태도
2) 회사, 팀 업무에 대한 질문을 적극적으로 하는 태도
3) 입사할 경우 하고 싶은 일을 구체적으로 제시하는 태도
4) 포트폴리오에 정성이 보이는 지원자
5) 직무관련 프로젝트를 경험한 지원자
6) 면접관 입장에서 새롭고 흥미로운 얘기를 설득력있게 전달할 수 있는 태도
아쉬웠던 점
1) 분류 모델링 기법을 잘못 표현(Latent Dirichlet Allocation, Linear Discriminant Analysis 혼용)
2) 면접관의 입맛에 맞는 모범 답안만을 준비한 지원자
3) 개인의 종교적인 신념을 지속적으로 강조하는 태도
4) 과도하게 긴장한 지원자
5) 자신감이 부족한 지원자(서류 전형을 통과할 생각을 못함, 학과 관련 전문성이 떨어짐)