본문 바로가기
08.개발&프로그래밍/1.파이썬

10. 포트폴리오용 프로젝트 종합 예제 만들기 - 실전 역량을 완성하는 통합 프로젝트

by JWJ Family 2025. 7. 13.
728x90

이제 단순한 실습은 그만, 실무에 가까운 프로젝트를 만들어볼 차례입니다. 이 글에서는 지금까지 배운 내용을 종합하여 실제 구직 시 포트폴리오로 활용 가능한 웹 기반 프로젝트를 구성합니다. 데이터 수집, 자동화, 분석, 시각화, 웹 앱 배포까지 한 번에 경험해보세요.

1. 프로젝트 개요: 뉴스 키워드 분석 웹 앱 만들기

이 프로젝트는 웹에서 뉴스를 스크래핑하거나 API로 수집한 후, 텍스트 분석을 통해 키워드를 추출하고 이를 시각화해 Flask 웹 앱으로 서비스하는 형태입니다.

  • 1단계: 뉴스 데이터 수집
  • 2단계: pandas로 정제 및 전처리
  • 3단계: 단어 빈도 분석
  • 4단계: matplotlib/seaborn 시각화
  • 5단계: Flask로 웹 앱 구축

2. 디렉터리 구조 예시


news_keyword_project/
│
├── app.py
├── static/
│   └── keyword.png
└── templates/
    └── result.html

3. 전체 코드: app.py


from flask import Flask, render_template
from collections import Counter
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os

app = Flask(__name__)

def process_news():
    titles = [
        "경제 성장률 발표", "부동산 시장 변화",
        "성장률과 금리의 관계", "정부, 경제 대책 발표",
        "AI 기술의 확산", "AI 산업 전망", "경제 회복 기대"
    ]

    df = pd.DataFrame({"제목": titles})
    df["제목"] = df["제목"].str.lower().str.replace(r"[^가-힣a-z\s]", "", regex=True)

    all_words = " ".join(df["제목"]).split()
    counter = Counter(all_words)
    most_common = counter.most_common(10)

    df_freq = pd.DataFrame(most_common, columns=["단어", "빈도"])
    sns.set(style="whitegrid")
    plt.figure(figsize=(8, 4))
    sns.barplot(x="빈도", y="단어", data=df_freq, palette="Blues_d")
    plt.title("뉴스 키워드 빈도수 Top 10")
    plt.tight_layout()

    os.makedirs("static", exist_ok=True)
    plt.savefig("static/keyword.png")
    plt.close()

@app.route("/")
def index():
    process_news()
    return render_template("result.html")

if __name__ == "__main__":
    app.run(debug=True)

4. HTML 템플릿: templates/result.html





  
  뉴스 키워드 분석 결과

뉴스 키워드 분석 결과
  


▶ 실행 방법

  1. 필요한 패키지 설치:
    pip install flask pandas matplotlib seaborn
  2. 앱 실행:
    python app.py
  3. 브라우저에서 http://localhost:5000 접속

5. 포트폴리오 효과 및 확장 아이디어

  • 실제 데이터 처리 + 시각화 + 웹 인터페이스 경험
  • Flask 웹 앱 기본 구조 익힘
  • 다음 확장 가능:
    • 실제 뉴스 스크래핑 연동
    • 워드클라우드로 시각화
    • 사용자 검색 기능 추가
    • DB에 분석 결과 저장

6. GitHub 포트폴리오 활용 팁

  • 전체 코드 업로드 + README.md에 사용 기술 명시
  • 실행 스크린샷 첨부
  • 배포 버전 링크 있으면 더 좋음 (e.g. Render, Replit, Vercel)

정리 및 다음 단계 안내

이번 글에서는 지금까지 배운 기술을 하나의 실전 프로젝트로 통합하여 실행 가능한 포트폴리오 형태로 완성해보았습니다. 다음 글은 보너스 챕터로, 실무 활용 팁과 배포, Git 관리 전략 등을 다룰 예정입니다.

 

반응형