뒤죽박죽 데이터분석 일기장
AI School 8기 11주차 WIL 본문
안녕하세요! 오랜만에 다시 마음을 잡아 블로그에 작성하기로 마음을 먹었습니다.
앞으로 저의 목표는 다시 1일 최소 1 포스트로 더 활발한 활동 보여드리겠습니다.
이번 포스트는 멋쟁이 사자 AI School 8기 11주차에 배운 내용을 정리하는 WIL 포스트를 작성해 보도록 하겠습니다.
이번주에는 '비즈니스 데이터 분석'라는 주제를 가지고 수업을 진행했습니다.
개념 정리
마케팅 용어 정리
CAC | CPA | CPL | LTV | |
번역 | 고객 확보 비용 | 확보 고객당 비용 | 플랫폼 별 확보 고객당 비용 | 고객 생애 가치 |
영어 | Customer Acquisition Cost | Cost per acquisition | Cost per lead | (Customer) Lifetime value |
의미 | 유료 결제 고객 1명 확보에 들어간 비용 | 개인 정보 제공한 고객 1명을 확보하는데 들어간 비용 | 플랫폼 별로 가입 개인 정보를 제공한 1명을 확보하는데 들어간 비용 | 고객이 평생 동안 창출할 것으로 예상되는 평균 수익 |
리테일에서 사용되는 머신러닝
고객 분석
- 고객 데이터를 수집하고 분석하여 구매 패턴, 구매 선호도, 구매력 등을 파악합니다.
- 머신러닝을 활용하여 고객 데이터를 분석하면 고객의 취향과 관심사에 대한 인사이트를 얻을 수 있으며, 이를 기반으로 개별 고객에게 맞춤형 서비스를 제공할 수 있습니다.
재고 관리
- 머신러닝을 활용하여 소매업체는 과거 판매 이력, 계절성 및 트렌드 등을 고려하여 재고를 관리합니다.
- 머신러닝 모델은 판매 이력을 분석하고, 트렌드를 파악하여 재고 수준을 최적화하고 재고 부족 현상을 예측합니다.
가격 설정
- 머신러닝을 활용하여 경쟁 업체의 가격 변화를 모니터링하고, 이를 기반으로 자동으로 가격을 조정한다.
추천 시스템
- 머신러닝을 활용하여 추천 시스템을 구축할 수 있습니다. 이는 고객 구매 이력과 관련 상품, 구매 내역, 구매 인기도 등을 고려하여 개별 고객에게 맞춤형 상품을 추천할 수 있습니다. 이를 통해 고객 만족도와 매출을 증대할 수 있습니다.
사기 탐지
- 머신러닝을 활용하여 이상 거래를 탐지할 수 있습니다.
- 머신러닝 모델은 고객 구매 이력과 관련 데이터를 분석하여 이상 거래를 탐지하고, 이에 대한 대응 조치를 취할 수 있습니다.
실습에 사용된 함수
결측치 확인 함수
# 결측치 합계 구하기
df.isnull().sum()
# 결측치 비율 구하기
df.isnull().mean()
# 결측치 시각화 하기 - 바그래프
plt.figsize(figsize=(12,4))
df.isnull().mean().plot.bar(rot=0)
# 결측치 시각화 하기 - 히트맵
import seaborn as sns
sns.heatmap(df.isnull())
< TIP >
결측치 시각화를 위한 라이브러리를 소개합니다.
https://github.com/ResidentMario/missingn
전체 데이터 중 수치형 데이터 히스토그램으로 흐름 파악하기
df.hist(bins=50, figsize=(12,6))
Groupby 후 특정 컬럼 평균, 합계 구하기 + 상위 10개 값 출력 + 숫자 포맷 변경
df.groupby("country")["TotalPrice"].agg(['mean','sum']).nlargest(10,'sum').style.format('{:,.0f}')
→ agg()는 groupby로 나라를 묶고 Totalprice를 평균 합계를 출력해 주는 기능
→ nlargest(출력할 숫자, 출력할 컬럼)
→ style.format() 출력할 숫자의 포멧 지정
Groupby에 agg 지정할 때 특정 컬럼값으로 계산
stock_sale = df.groupby(["StockCode"]).agg({"InvoiceNo": "count",
"Quantity": "sum",
"TotalPrice": "sum"
}).nlargest(10, "InvoiceNo")
→"InvoiceNo" 는 개수, "Quantity"는 합계, "TotalPrice"는 합계
중복값 제거
stock_desc = stock_desc.drop_duplicates("StockCode")
→ drop_duplicates(중복값 제거할 column 지정)
날짜 데이터 타입 추출하기
1. string 데이터 타입을 날짜 데이터 타입으로 변경
df["InvoiceDate"] = pd.to_datetime(df["InvoiceDate"])
2. 연,월,일,시간,요일 등을 추출해 파생 변수에 저장
df["InvoiceYear"] = df["InvoiceDate"].dt.year
df["InvoiceMonth"] = df["InvoiceDate"].dt.month
df["InvoiceDay"] = df["InvoiceDate"].dt.day
df["InvoiceDow"] = df["InvoiceDate"].dt.dayofweek
빈도수 구하는 Seaborn 시각화
# 월별 구매 빈도수 시각화
sns.countplot(data=df, x="InvoiceMonth")
# 다른 column을 그룹화 해서 표현
sns.countplot(data=df, x="InvoiceDow", hue="Cancel")
Background_gradient로 데이터 프레임에 히트맵 그리기
df.style.background_gradient(cmap='flare_r')
Seaborn으로 히트맵 구하기
plt.figure(figsize=(12, 8))
sns.heatmap(df, cmap ='Greens', annot=True, fmt=',.0f')
→ 앞에 plt.figure()을 통해서 seaborn 시각화 plot의 크기를 정할 수 있다.
이번주는 미드프로젝트 발표도 있고 해서 비즈니스 데이터 분석에서 배운 내용이 다른 주에 비해서 짧습니다. 저는 급히 마무리하고 미드 프로젝트 review 포스트로 또 찾아뵙겠습니다. 😀
'Likelion AI School 8기' 카테고리의 다른 글
AI School 8기 14주차 (0) | 2023.03.23 |
---|---|
AI School 8기 13주차 (0) | 2023.03.16 |
AI School 8기 12주차 WIL (0) | 2023.03.09 |