실무로 배우는 파이썬/outsrc1. Rumi_marketing

파이썬으로 마케팅 CPI trend분석, raw data.csv 중복 없이 하나의 데이터프레임으로 concat하기 feat. 리스트 컴프리헨션

에스도비91 2025. 2. 6. 23:34
반응형

오늘은 외주(?)받은 아웃소싱 프로젝트를 진행

해보려 합니다. 마케팅에 중요한 지표라는 CPI !!

Cost per Install : 설치 건 당 쓴 광고비

 

파이썬 코드를 이용해서 일자별 CPI trend를

pivot분석하고 엑셀의 조건부 서식까지

자동화하는 것이 목표입니다.

 

Campaign, creative는 보안을 위해 blur 처리하였습니다.

 

코드를 돌려 생성된 엑셀파일을 딱 열기만

하면 위 그림처럼 되도록!!

일단, 이번 소목표는 os로 폴더 내 raw csv파일을

싹 긁어와 병합하고, 중복 제거하는 단계까지!!

 

** os : operating system(운영체제)

유저 인터페이스를 제공하는 시스템 소프트웨어

 

 

마케팅 분야는 잘 모르지만, 대충 들어보니

Spend 광고비로 지출한 금액

Install 유저가 광고를 보고 설치한 수

CPI = Spend/Install

 

즉, 위에서 언급했든 유저를 끌어오는데

얼마나 썼냐는 지표입니다.

CPI가 작을수록 광고가 효과적이라는 뜻이죠.

 

 

자, 이제 본격적으로 들어가봅시다.

'outsrc_CPI'라는 이름으로 코드 파일을 하나 파고

같은 경로에 raw file들이 담긴 'raw'라는 폴더를

가져옵니다. 이건 의뢰자에게 받았습니다.

raw file은 3개 이상도 되고,

contents의 날짜, 데이터가 중복이여도 됩니다.

 

import pandas as pd ; import os

def get_csv(directory):
    files=os.listdir(directory)
    return [file for file in files if file.endswith('.csv')]
    
list_csv=get_csv('raw') ; print(list_csv) ; df=pd.DataFrame()
for i in list_csv:
    df_raw=pd.read_csv('raw/'+i) ; df=pd.concat([df,df_raw])

df=df.drop_duplicates() ; df

 

엑셀 테이블 기반의 csv 파일은 기본적으로

dataframe의 형태이기 때문에 pandas 모듈을

그리고, os 모듈도 같이 import해줍니다.

 

폴더 내에 .csv로 끝나는 파일들만 불러오는건

자주 쓰기에 get_csv라는 함수로 만들어

directory(폴더) path에 있는 파일들을 os.listdir해주고

 

AI로 생성한 리스트 컴프리헨션의 직관적 이미지

 

대괄호[ ]로 둘러쌓인 list comprehension을 사용해

.csv로 끝나는 파일들만 필터해서 리스트 형태로

불러오도록 작성합니다.

 

** 코드 간결성을 위해 리스트 컴프리헨션은 필수!!

[표현식 for 변수 in 반복 가능한 객체 if 조건]

 

Campaign, creative는 보안을 위해 blur 처리하였습니다.

 

위 함수로 list_csv변수에 raw_file들의 이름들을

리스트에 저장해주고, print(list_csv)로 확인해보면

['crt_file1.csv', 'crt_file2.csv'] 잘 출력되었죠?

 

다음은 pandas로 빈 dataframe의 틀

df를 생성합니다. pd.DataFrame()

 

이제, for문을 이용해 list_csv의 raw file들을

하나하나 read_csv로 불러와 concat으로

df에 차곡차곡 아래로 쌓습니다.(중복 有)

 

이제 for loop을 벗어나 .drop_duplicates()로

중복 데이터를 제거하면~ 끝!!

raw file들을 단 하나의 dataframe으로 중복 없이

만들었고 이제, 이걸 가공 전처리하면 됩니다.