Streamlit을 이용한 실시간 트렌드 분석 도구만들기

Streamlit을 이용한 실시간 트렌드 분석 도구만들기

Streamlit을 이용해 구글 트렌드와 같은 실시간 트렌드 분석 도구를 만들 수 있습니다. Python의 **Google Trends API(pytrends)**를 사용해 데이터를 가져오고, Streamlit을 통해 실시간으로 대시보드를 구성해 원하는 시간대에 특정 키워드의 트렌드를 추적할 수 있습니다.


프로젝트 개요

  • 사용자가 조사하고자 하는 키워드를 입력합니다.
  • 특정 시간대에 Google Trends 데이터를 자동으로 조회합니다.
  • 결과를 그래프로 시각화하고, 트렌드가 어떻게 변화하는지 실시간으로 확인합니다.

1. 프로젝트 구조

bash
trend_project/ 
├── app.py # 메인 애플리케이션 파일 
├── requirements.txt # 필요한 라이브러리 목록 
└── README.md # 프로젝트 설명 파일

2. 코드 예제 (app.py)

python
import streamlit as st
from pytrends.request import TrendReq
import pandas as pd
import matplotlib.pyplot as plt

# Streamlit 앱 제목 설정
st.title("실시간 Google 트렌드 분석")

# pytrends 객체 생성
pytrends = TrendReq(hl='en-US', tz=360)

# 키워드 입력받기
keywords = st.text_input("조사할 키워드를 입력하세요 (쉼표로 구분)", "Python, Data Science")

# 시간대 선택
timeframe = st.selectbox("조사할 시간 범위", 
                         ["now 1-H", "now 4-H", "now 7-d", "today 1-m", "today 12-m"])

if keywords:
    # 키워드 리스트로 변환
    keyword_list = [kw.strip() for kw in keywords.split(",")]

    # 트렌드 데이터 요청
    pytrends.build_payload(keyword_list, cat=0, timeframe=timeframe, geo='', gprop='')

    # 데이터프레임 생성
    data = pytrends.interest_over_time()

    if not data.empty:
        st.subheader("트렌드 데이터")
        st.write(data)

        # 그래프 시각화
        st.subheader("트렌드 변화 그래프")
        plt.figure(figsize=(10, 5))
        for keyword in keyword_list:
            plt.plot(data.index, data[keyword], label=keyword)

        plt.legend()
        plt.title("Google 트렌드 변화")
        plt.xlabel("시간")
        plt.ylabel("인기 점수")
        st.pyplot(plt.gcf())
    else:
        st.write("해당 키워드에 대한 데이터가 없습니다.")

3. 실행방법

  1. 필수 라이브러리 설치:

    bash
    pip install streamlit pytrends matplotlib pandas
  2. 앱 실행:

    bash
    streamlit run app.py

4. 주요 기능 설명

  • pytrends 라이브러리: Google Trends API에 연결해 데이터를 가져옵니다.
  • 실시간 키워드 분석: 선택한 시간 범위에 따라 트렌드 데이터를 확인할 수 있습니다.
  • 인터랙티브 그래프: 각 키워드의 트렌드 변화를 그래프로 시각화합니다.

5. 확장 아이디어

  • 자동화된 주기적 업데이트: 일정 시간마다 트렌드 데이터를 자동으로 갱신하도록 스케줄링.
  • CSV로 데이터 저장: 수집한 트렌드 데이터를 파일로 저장해 향후 분석에 활용.
  • 다중 언어 지원: 다양한 지역과 언어의 트렌드 데이터를 비교 분석.

이 프로젝트를 통해 실시간 트렌드 분석 도구를 쉽게 만들 수 있습니다. Streamlit의 간단한 인터페이스 덕분에 데이터 과학자뿐만 아니라 일반 사용자도 쉽게 활용할 수 있는 웹 애플리케이션을 완성할 수 있습니다.

댓글 쓰기