챗GPT+데이터분석 : 캐글 브라질이커머스 olist 판매 데이터
본문 바로가기
파이썬(Python)/챗GPT+파이썬

챗GPT+데이터분석 : 캐글 브라질이커머스 olist 판매 데이터

by 뚱구리 2024. 8. 5.

 
 
오늘은 , 캐들 데이터를 가지고, 챗GPT랑 놀아보기로 했다
전체코드는 ㅋㅋㅋ 나의 깃허브에 올려둠 ㅋㅋㅋㅋㅋ
(깃허브... 파일 폴더이동은 어떻게 하는거임...????)

 

Chat-GPT-Python/챗GPT+데이터분석_01_브라질_이커머스_olist.ipynb at main · leo-contigo/Chat-GPT-Python

Contribute to leo-contigo/Chat-GPT-Python development by creating an account on GitHub.

github.com

 

참고 유튜브 ㅋㅋ

 

 

내가 분석하고자 하는 데이터를 첨부하고, 
이 데이터가 어떤 건지 설명하면서, 제일 중요한 한국어로 안내해달라 라고 이야기함
유튜브 강좌 보면서 나온 결과와 나랑 다른 점은
나는 그냥 챗 GPT를 사용하고, 유튜브 강좌는 GPT4.0 버전이라 
다름ㅋㅋㅋ


EDA(Exploratory Data Analysis) : 탐색적 데이터 분석

 

일변량 EDA : 하나의 칼럼에 대해서만 분석
다변량 EDA : 두 개 이상의 칼럼을 종합해서 인사이트를 얻어냄


일변량 EDA : 구매건에 대한 제품의 가격이 어떻게 분포되어 있는지, 평균가격, 제일 비싼가격, 저렴한 가격 등등 확인
다변량 EDA : 판매 물건의 가격과 배송비 사이의 관계, 카테고리별 평균 가격, 등등
 
(딴소리지만,,, 야구 경기 시작했는데 집중할 수 있을까..........????....)
 

오 ㅋㅋㅋㅋ
이게 무언가를 해달라고 요구할때 정확하게 하면 ㅋㅋㅋㅋㅋㅋ 다 알려주네 
 

분석까지 잘해줘 ㅋㅋㅋㅋㅋ
 

 
그래프까지 ㅋㅋㅋ 다 알려주는데 
저기 보이는 파란색 ㅋㅋㅋ 클릭하면 ㅋㅋ 해당 코드가 나온다 
그걸 ㅋㅋㅋ 나는 코랩으로 실행 ㄱㄱ
 
(하.. 집중몬하겟다 ㅋㅋㅋㅋㅋㅋㅋ 1회부터 안타~~~~~~~ 이러다가...또 막판에 절망을 주는건 아니겟지...)
 

코드 실행해보면
오오오오오오오오오호호호홓홓ㅎㅎㅎㅎㅎㅎ
 

챗GPT는 내가 어떤 분석을 할건지 방향성과 키워드만 알고 있으면 될 듯!!!
 

RFM 분석
- R(Recency, 얼마나 최근)
- F(Frequency, 얼마나 자주)
- M(Monetary, 얼마나 많이)

 
하쒸.... 챗GPT 무료.....ㅋㅋㅋㅋ 끝남ㅋ
일단 여기까지 하고, 나머지는 내일 다시 해봐야지 일단 저장 ㄱㄱ 하고 
야구봐야지

컴백 ㅋㅋㅋㅋ
위 데이터 하나로 RFM 분석을 하기에 내용이 부족한것 같다. 
챗 GPT가 그랬음.... 그래서 ㅋㅋㅋㅋ

데이터를 추가해서 분석을 하고 싶다고 했다.

고객정보와 그 사람들이 뭘 주문했고, 리뷰를 어떻게 남겼는지에 대한 데이터가 있어야 ㅋㅋ
뭔가 분석이 가능한것 같아서 저렇게 선택해봄
(이게 정답은 아님ㅋㅋㅋㅋㅋ 나도 잘 모름)
 

마지막까지 ㅋㅋ 이렇게 알려주더니....
 
이걸 왜 돈주고 유료버젼을 쓰는지 알겠다..ㅋㅋㅋㅋㅋㅋㅋㅋ

이렇게 세분화까지 알려준다 ㅋㅋㅋㅋㅋ
 
여기서 궁금한게 !

이 데이터를 가지고 신규고객이 충성고객이 될 수 있는 확률이 얼마나 되는지 예측하는 방법이 궁금했다

 
그래서 물어봤지
 

어떻게 진행할지 설명 해주고 

import pandas as pd
import numpy as np
from datetime import datetime
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix

# 예제 데이터 로드
orders_customers_df = pd.merge(orders_df, customers_df, on='customer_id')

# 현재 날짜를 2018-12-31로 설정
now = datetime(2018, 12, 31)

# 각 고객별로 Recency, Frequency, Monetary 값을 계산
rfm_df = orders_customers_df.groupby('customer_unique_id').agg({
    'order_purchase_timestamp': lambda x: (now - pd.to_datetime(x).max()).days,
    'order_id': 'count',
    'payment_value': 'sum'
}).reset_index()

# 컬럼 이름을 한글로 변경
rfm_df.columns = ['고객_고유_ID', '최근_구매일', '구매_빈도', '총_구매_금액']

# 충성 고객과 신규 고객 정의
loyal_customers = rfm_df[(rfm_df['최근_구매일'] <= 90) & (rfm_df['구매_빈도'] >= 4) & (rfm_df['총_구매_금액'] >= 100)]
new_customers = rfm_df[(rfm_df['최근_구매일'] <= 90) & (rfm_df['구매_빈도'] < 4) & (rfm_df['총_구매_금액'] < 100)]

# 충성 고객 여부를 나타내는 레이블 생성
loyal_customers['충성_고객'] = 1
new_customers['충성_고객'] = 0

# 충성 고객과 신규 고객 데이터를 결합
combined_df = pd.concat([loyal_customers, new_customers])

# 특징(Recency, Frequency, Monetary)와 레이블(충성 고객 여부) 설정
X = combined_df[['최근_구매일', '구매_빈도', '총_구매_금액']]
y = combined_df['충성_고객']

# 데이터가 너무 적은 경우 예제 데이터를 추가 (데모를 위해 가상의 데이터 생성)
if len(X) < 10:
    extra_data = pd.DataFrame({
        '최근_구매일': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
        '구매_빈도': [1, 2, 3, 1, 2, 3, 4, 5, 1, 2],
        '총_구매_금액': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
        '충성_고객': [0, 0, 0, 0, 1, 1, 1, 1, 0, 1]
    })
    X = pd.concat([X, extra_data[['최근_구매일', '구매_빈도', '총_구매_금액']]])
    y = pd.concat([y, extra_data['충성_고객']])

# 훈련 데이터와 테스트 데이터로 분리 (테스트 비율을 줄임)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)

# 데이터 스케일링
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 모델 훈련
model = RandomForestClassifier(random_state=42)
model.fit(X_train_scaled, y_train)

# 예측
y_pred = model.predict(X_test_scaled)

# 모델 평가
print(classification_report(y_test, y_pred))
print(confusion_matrix(y_test, y_pred))

# 새로운 신규 고객 데이터 예측
new_customer_data = pd.DataFrame({
    '최근_구매일': [30, 60],
    '구매_빈도': [2, 1],
    '총_구매_금액': [50, 20]
})
new_customer_data_scaled = scaler.transform(new_customer_data)
predictions = model.predict(new_customer_data_scaled)
print(predictions)

코드 알려주고 ㅋㅋㅋㅋㅋㅋㅋ

설명까지 해줬다 ㅋㅋㅋㅋㅋㅋ
거기다가 ㅋㅋㅋㅋ
나온 결과 값에 대해서도 ㅋㅋㅋ 설명해달라하니까 친절하게 알려준다 ㅋㅋㅋㅋ

챗GPT는 ㅋㅋㅋㅋ 진챠 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
다 해주는구나 ㅋㅋㅋㅋㅋㅋㅋㅋ
 
오늘 해본거는 여기까지 기록해야지 끝~~~~~~~ 너무 길다 
나머진 깃허브에 올리야지

728x90