연관 키워드 경쟁 강도 분석하기 - 키워드별 경쟁 강도 분석하기
키워드별 상품 개수 수집
비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_2_3.py'로 저장합니다. 다음 코드를 입력한 후, 대화형 창에서 실행하면, 'output' 폴더에 키워드별 상품 개수가 포함된 'step_2_3.csv' 파일이 생성됩니다.
ch08/step_2_3.py
import time
from pathlib import Path
import pandas as pd
from tqdm import tqdm # 진행 표시줄 관리를 위한 tqdm 클래스
from step_1_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_1_2 import query_naver_shop
from step_2_2 import OUT_2_2
OUT_2_3 = OUT_DIR / f"{Path(__file__).stem}.csv"
def shop_cnt_to_csv(): # 11
df_raw = pd.read_csv(OUT_2_2) # CSV 파일에서 데이터프레임 생성
kwd_list = df_raw["키워드"].to_list() # '키워드' 열을 리스트 타입으로 변환 # 13
item_cnt = [] # 키워별 네이버 쇼핑 상품 개수
with tqdm(total=len(kwd_list)) as pbar: # tqdm 객체 생성 # 15
for kwd in kwd_list:
resp = query_naver_shop(query=kwd) # 네이버 쇼핑 상품 검색 # 17
total = resp.get("total", 0) # 전체 등록 상품 개수 # 18
item_cnt.append({"키워드": kwd, "상품수": total}) # 19
time.sleep(0.5) # 0.5초간 일시 정지 # 20
pbar.set_description(kwd) # 진행 표시줄 메시지 수정 # 21
pbar.update() # 진행 표시줄 업데이트 # 22
df_raw = pd.DataFrame(item_cnt) # 데이터프레임 생성
df_raw.to_csv(OUT_2_3, index=False) # CSV 파일로 저장
if __name__ == "__main__":
shop_cnt_to_csv() # 키워드별 상품 개수 수집
실행 결과
키워드,상품수
나이키,5594340
나이키운동화,2247215
자라키즈,87736
11 키워드별 상품 개수를 CSV 파일로 저장하는 함수 shop_cnt_to_csv()를 정의합니다
12 함수 to_list()를 사용하여 키워드 열을 리스트 형식으로 변환합니다.
15 tqdm 객체를 생성하고, 변수 pbar에 저장합니다. 매개변수 total에 반복 처리할 전체 데이터 개수를 전달합니다.
17 함수 query_naver_shop()를 호출하여 네이버 쇼핑에 등록된 상품을 검색합니다.
18 total 키 값을 추출하여 네이버 쇼핑에 등록된 전체 상품 개수를 구합니다.
19 검색한 키워드와 전체 상품 개수를 딕셔너리로 만들고, 이를 item_cnt 리스트에 추가합니다.
20 안정적인 API 호출 결과를 얻기 위해 time 패키지의 함수 sleep()를 호출하여 0.5초간 일시정지합니다.
21 tqdm 객체의 함수 set_description()를 호출하여 진행 표시줄 메시지를 수정합니다.
22 tqdm 객체의 함수 update()를 호출하여 진행 표시줄을 업데이트합니다.
키워드별 경쟁 강도 분석
비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_2_4.py'로 저장합니다. 다음 코드를 입력하고, 대화형 창에서 실행하면, 'output' 폴더에 키워드별 경쟁 강도가 내림차순으로 정렬된 'step_2_4.csv' 파일이 생성됩니다.
ch08/step_2_4.py
from pathlib import Path
import pandas as pd
from step_1_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_2_2 import OUT_2_2
from step_2_3 import OUT_2_3
OUT_2_4 = OUT_DIR / f"{Path(__file__).stem}.csv"
def comp_lev_to_csv(): # 09
df_kwd = pd.read_csv(OUT_2_2) # 정제 처리된 연관 키워드
df_shop = pd.read_csv(OUT_2_3) # 키워드별 상품 개수
df_merge = pd.merge(df_kwd, df_shop, left_on="키워드", right_on="키워드") # 12
df_merge["경쟁강도"] = (df_merge["상품수"] / df_merge["검색수M"]).round(6) # 13
df_filtered = df_merge.filter(["키워드", "검색수M", "클릭수M", "클릭률M", # 14
"상품수", "경쟁강도"]) # 15
df_sorted = df_filtered.sort_values("경쟁강도", ascending=False) # 16
df_sorted.to_csv(OUT_2_4, index=False) # CSV 파일로 저장
if __name__ == "__main__":
comp_lev_to_csv() # 키워드별 경쟁강도 분석
실행 결과
키워드,검색수M,클릭수M,클릭률M,상품수,경쟁강도
나이키신발,29900,높음,431.9,2580135,86.29214
나이키러닝화,19300,높음,324.9,1241171,64.309378
GAP,12200,높음,46.8,476345,39.044672
09 키워드별 경쟁 강도를 분석하는 함수 comp_lev_to_csv()를 정의합니다.
12 pandas 패키지의 함수 merge()를 사용하여 df_kwd와 df_shop을 입력값으로 전달하고, 키워드 열의 값이 정확히 일치하는 행만 결합합니다.
13 상품수 열을 검색수M 열로 나눠 키워드별로 경쟁 강도를 분석하고, 그 결과를 경쟁강도 열에 저장합니다.
14~15 함수 filter()를 사용하여 경쟁 강도 분석에 필요한 열만 필터링합니다.
16 함수 sort_values()를 사용하여 경쟁강도 열을 기준으로 내림차순 정렬합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 연관 키워드 분석 앱 만들기 - 데이터프레임 시각화하기 (0) | 2026.04.04 |
|---|---|
| 연관 키워드 경쟁 강도 분석 및 웹 앱 만들기 (0) | 2026.04.01 |
| 연관 키워드 경쟁 강도 분석하기 - 데이터 정제하기 (0) | 2026.03.26 |
| 연관 키워드 경쟁 강도 분석하기 - 연관 키워드 수집하기 (1) | 2026.03.23 |
| 네이버 쇼핑 연관 키워드 검색하기 - 연관 키워드 검색하기 (0) | 2026.03.20 |