프로그래밍 언어/Python

연관 키워드 경쟁 강도 분석 및 웹 앱 만들기

· 코딩마이데이

streamlit 패키지를 사용해서 지금까지 분석한 연관 키워드 경쟁 강도 분석 데이터를 웹 앱으로 만들어 봅시다.

비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_3_1.py'로 저장하세요. 다음 코드를 입력한 후, 비주얼 스튜디오 코드에서 터미넣을 열고, 'streamlit run ch_08/step_3_1.py' 명령어로 웹 서버를 실행합니다.

ch_08/step_3_1.py

import pandas as pd
import streamlit as st
from step_2_1 import rel_kwd_to_csv # 이전에 작성한 모듈을 불러옵니다.
from step_2_2 import data_cleaning
from step_2_3 import shop_cnt_to_csv
from step_2_4 import OUT_2_4, comp_lev_to_csv

def init_page():
    st.set_page_config(layout="wide") # 웹 페이지 레이아웃을 넓게 설정 # 08
    st.header("🧐 만들면서 배우는 연관키워드 경쟁강도 분석")  # 웹 앱 제목 설정
    if "keywords" not in st.session_state: # 11
        st.session_state["keywords"] = "" # 'keywords' 세션 값 초기화 # 12
    with st.form(key="my_form", border=False): # 폼 위젯 생성 # 13
        col_1, col_2 = st.columns([3, 1]) # 3:1 비율로 두 개의 열 위젯 생성 
        with col_1 : # 첫 번째 열 # 15
            st.text_input("키워드", key='keywords', label_visibility="collapsed")
        with col_2: # 두 번째 열
            st.form_submit_button(label="분석하기", use_container_width=True) # 18

def analyze_keywords (keywords: str = None, event: int = None): # 20
    rel_kwd_to_csv(keywords=keywords, event=event) # 연관키워드 수집
    data_cleaning() # 데이터 정제
    shop_cnt_to_csv() # 키워드별 상품 개수 수집
    comp_lev_to_csv() # 키워드별 경쟁강도 수집

def print_dataframe(keywords: str = None):
    if keywords:
        with st.spinner("잠시만 기다려주세요..."): # 스피너 위잿 생성
            analyze_keywords(st.session_state["keywords"]) # 연관 키워드 분석
        df_result = pd.read_csv(OUT_2_4) # 분석 결과를 데이터프레임으로 변환 # 30
        st.dataframe(df_result, use_container_width=True) # 데이터프레임 출력 # 31

if __name__ == "__main__":
    init_page() # 웹 앱 기반 설정 및 텍스트 입력 위젯 출력
    keywords = st.session_state["keywords"] # 연관 키워드 텍스트 입력 위젯 데이터
    print_dataframe(keywords=keywords) # 데이터프레임 출력

 

08 페이지 설정 및 기본 위젯을 출력하는 함수 init_page()를 정의합니다.

11~12 'keywords'를 키로 하는 streamlit 세션이 없는 경우 해당 키에 대한 세션값을 초기화 합니다.

13 streamlit 패키지의 함수 form()를 사용하여 폼 위젯을 생성합니다. 폼 위젯은 폼 제풀 버튼을 클릭해야 이후 작업을 처리합니다.

16 함수 text_input()를 사용하여 텍스트 입력 위젯을 생성합니다. 매개변수 key에 streamlit 세션 관리에 사용할 키 값을 전달합니다. 

18 함수 form_submit()를 사용하여 폼 제출 버튼 위젯을 생성합니다.

20 매개변수 keywords에 주어진 키워드를 바탕으로 연관키워드 분석을 처리하는 함수 analyze_keywords()를 정의합니다. 매개변수 keywords는 분석할 키워드를, event는 분석할 시준 테마 코드값을 저장합니다.

30~31 분석 결과를 데이터프레임으로 변환하고, steamlit 패키지의 함수 dataframe()를 사용하여 데이터프레임 화면에 출력합니다.