본문 바로가기

마케팅/데이터 분석22

RFM 분석 RFM 분석이란RFM은 Recency, Frequency, Monetary 각각의 앞 글자를 따서 만들어진 약자이다.Recency: 고객이 얼마나 최근에 상품을 구매했는가?Frequency: 고객이 얼마나 자주 상품을 구매했는가?Monetary: 고객이 상품 구매에 얼마나 많은 돈을 썼는가?RFM 분석을 한다는 건 위 세 항목을 토대로 고객의 가치를 판단해 고객을 분류한다는 뜻이다. 더 최근에 구매할수록, 더 자주 구매할수록, 그리고 돈을 더 많이 쓸수록 가치가 큰 고객으로 여기는 것이다. 예) 최근 1년 동안의 데이터를 기반으로 두 고객의 구매 패턴을 비교한다. 고객 A는 고객 B보다 더 최근에 상품을 구매했다. 그리고 고객 A는 고객 B에 비해 1년 동안 구매 횟수도 많고 구매 금액도 더 크다. Re.. 2025. 3. 17.
[파이썬] 그룹별로 분석하기 Groupby데이터를 불러온다.정보들을 본다. 결측값은 없다. groupby()장르를 기준으로 그룹으로 묶어준다.count()함수를 사용하면 결과를 데이터프레임으로 보여준다.size()함수를 사용하면 결과를 시리즈로 보여준다. 최소, 최대, 평균, 합계 모두 구할 수 있다. numeric_only는 숫자만 보여주는 파라미터이다.지금까지 런타임과 스코어가 같이 나왔는데 스코어만 보고 싶다면 []를 이용한다.물론 [] 안에 리스트처럼 여러 컬럼명을 넣을수도 있다. 실습import pandas as pdolympic_df = pd.read_csv('data/olympic.csv')# 여기에 코드를 작성하세요.olympic_df.groupby('sport')['height', 'weight'].mean()cat.. 2025. 3. 14.
[파이썬] 데이터 합치기 같은 형식의 데이터 합치기 : concat()데이터 프레임을 만들어줬다.각각 데이터프레임을 확인하면 아래와 같다.어차피 같은 영어 점수를 보여주는 데이터 프레임이라 두개를 합친다.concat()함수를 사용하여 리스트를 넘겨준다.그러나 인덱스가 이상하게 나온다.ignore_index파라미터를 사용해 True로 지정해주면 인덱스도 깔끔하게 나온다.이를 새로운 변수로 저장해준다. 이번에는 수학점수 데이터프레임을 만들어주었다.영어 점수와 수학 점수를 합쳐주었더니 그냥 컬럼 하나를 더 만들어 붙였다. 이상한 결과다.axis=1 파라미터를 사용하여 옆으로 붙여준다. 실습import pandas as pdsales_2020_df = pd.read_csv('data/sales_2020.csv')sales_2021_df.. 2025. 3. 14.
[파이썬] 날짜와 시간 데이터 다루기 날짜와 시간을 위한 데이터 타입 설정하기기본 데이터 불러오기 데이터프레임의 데이터타입을 확인해본다.order_time과 shiping_time이 오브젝트로 되어 있다. to_datetime()판다스에는 데이트함수 타입으로 바꾸는 함수가 있다. order_time과 shiping_time의 데이터 타입을 바꿔서 저장해주고 결과를 확인하면 타입이 바뀐 것을 볼 수 있다. 처음부터 데이터타입을 지정해서 불러올수도 있다. 현재 데이터프레임을 보면 결측값이 하나 있다.결측값이 더 없는지 확인해보니 1개만 있다.1개만 있으니까 그냥 지워준다. dt.date원하는 날짜, 연도, 월, 일, 시간, 분, 초, 요일 등 불러올 수 있다.이때 문자열엔 str을 쓴 것처럼 dt를 써준다.dayofweek는 요일을 의미한다. .. 2025. 3. 14.
[파이썬] 숫자 데이터 가공하기 새로운 값 계산하기 기존 데이터 불러오기 허리둘레/엉덩이 둘레로 비만도를 계산한다. round()함수를 사용해 소수점 2번째 자리까지 표시되게 만든다. 새로운 컬럼을 만들어 저장해준다. 이런 새로운 데이터로 비만도와 당뇨(diabetes) 사이에 어떤 상관관계가 있는지도 알아볼 수 있겠다. 실습 1 import pandas as pdpatient_df = pd.read_csv('data/patient.csv')# 여기에 코드를 작성하세요.bmi = round(patient_df['weight'] / (patient_df['height'] * patient_df['height']), 1)patient_df['bmi'] = bmipatient_df 제곱을 **2라고 표현하는 방법을 몰랐다. 기억해둬야지. .. 2025. 3. 14.
[파이썬] 문자 데이터 가공하기 대소문자 처리하기 기본 데이터단어들이 대문자, 소문자 다 섞여 있다. str.lower()모두 소문자로 바꿔주기 str.upper()모두 대문자로 바꿔주기 str.capitalize()앞글자만 대문자로 바꿔주기  데이터 프레임에 적용 문자열 분리하기 기본 데이터 str.split('구분점')해당 함수로 문자열을 나누어준다. 나눈 문자열의 0번 인덱스 값을 가져와서 새로운 컬럼에 저장한다. 나눈 문자열의 1번 인덱스 값을 가져와서 새로운 컬럼에 저장한다. 원래 나누기 전 문자열 컬럼을 삭제한다. 불필요한 문자 제거하기 원하는 값이 안나온다. unique()함수로 확인해보니 앞에 공백도 있고, 뒤에 .도 있다. str.strip() 위 함수를 써서 공백을 없애준다. 그리고 저장해준다. str.replace(.. 2025. 3. 13.
[파이썬] 데이터 다듬기 데이터가 제대로 되어 있지 않으면 이상한 결과가 나온다.원본 데이터를 다듬는 것이 중요하다.  결측값 찾기기본 데이터 불러오기 info()결측값 찾는 법 1713개의 row 중에 rating(별점)만 700개라는 걸 알 수 있다. isna()결측값이 있으면 True, 없으면 False 로 데이터 프레임으로 보여준다. isna().sum()그냥 데이터프레임으로 보면 불편하다.sum()함수를 사용하면 데이터프레임에서 true 값(1)을 더해준다. rating에 13개의 결측값이 있다는 것을 알 수 있다. isna().any(axis=1)모든 row를 검사하는 함수0행부터 712행까지 결측값이 있는 행은 True로 보여준다. 위에서 찾은 값만 데이터프레임으로 가져오면 결측값이 있는 row만 출력된다.데이터를 .. 2025. 3. 13.
[파이썬] DataFrame 기본기 DataFrame 살펴보기  info()데이터 프레임의 정보 확인하기 describe()데이터 통계량 확인하기 include='all' (파라미터)모든 컬럼에 대한 요약 sort_values(by='칼럼명')특정 칼럼을 기준으로 정렬 (기본이 오름차순)내림차순 기타괄호가 붙어있는 것은 함수, 괄호가 없는 것은 변수라고 보면 된다.head() # 데이터프레임의 앞에서 5행tail() # 데이터프레임의 뒤에서 5행info() # 데이터프레임 정보sort_values()describe()dtypes # 데이터 프레임 타입shape # 데이터프레임 크기엑셀 파일 불러오기 항상 csv만 불러왔는데 excel을 불러오고 싶다면 아래와 같이 작성하면 된다.loan_df = pd.read_excel('data/loan.. 2025. 3. 13.
[파이썬] seaborn seaborn으로 그래프 그리기seaborn : 간편하게 근사한 그래프 생성matplotlib : 원하는대로 커스텀하게 그래프 생성 사용 방법 일별 데이터로 자동으로 평균값을 구해 month로 그래프를 그려줌디자인  set_theme()함수로 그래프 커스터마이징하기  실습import pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltbike_df = pd.read_csv('data/bike.csv')sns.set_theme(rc={'figure.figsize': (10, 5)}, style='white')# 여기에 코드를 작성하세요.sns.barplot(data=bike_df, x='quarter', y='registered', errorb.. 2025. 3. 13.