우선 제시해주신 3주차 과제를 진행해보았습니다.
여러 일들이 많이 겹쳐서 최대한 과제 요구사항에 맞추어서라도 진행해보도록 하였습니다.
우선 과제에 제시되어진 내용을 그대로 프롬프트 상에 넣어서 진행해보았습니다.
우선 바로 Readme.md 파일과 requirements.txt 파일 작성을 요청하였다.
코드 실행 시 오류가 발생하여 오류에 대한 부분을 언급하고 수정을 요청함
터미널 창에 뜬 메세지를 프롬프트에 넣어 어떤 부분인지 물어보았다.
안내 되어진 내용을 토대로 제시되어진 명령어를 입력하여 진행하였다.
import streamlit as st
import pandas as pd
from plotly import express as px
def load_data(file): try: df = pd.read_csv(file) return df except Exception as e: st.error(f"파일 로딩 중 오류가 발생했습니다: {e}") return None
def filter_data(df, keyword): return df[df["제목"].str.contains(keyword, case=False, na=False)]
def plot_title_length_histogram(df): fig = px.histogram( df, x=df["제목"].str.len(), nbins=20, labels={"x": "제목 길이", "y": "빈도"}, title="뉴스 제목 길이 분포", ) st.plotly_chart(fig)
def main(): st.title("뉴스 대시보드")
uploaded_file = st.file_uploader("CSV 파일을 업로드하세요", type="csv")
if uploaded_file is not None: df = load_data(uploaded_file)
if df is not None: st.subheader("뉴스 데이터") st.dataframe(df)
keyword = st.text_input("키워드로 필터링:") if keyword: filtered_df = filter_data(df, keyword) st.subheader("필터링된 결과") st.dataframe(filtered_df)
st.subheader("뉴스 제목 길이 분포") plot_title_length_histogram(df)
st.subheader("개별 뉴스 정보") selected_news = st.selectbox("뉴스 선택:", df["제목"].tolist()) if selected_news: news_info = df[df["제목"] == selected_news].iloc[0] st.write(f"제목: {news_info['제목']}") st.write(f"내용: {news_info['내용']}") st.write(f"날짜: {news_info['날짜']}")
if __name__ == "__main__": main()
해당 완성 코드를 실행하였다.
전기차 배터리 관련 뉴스에 대한 크롤링 코드를 별도로 작성하여 CSV로 만든 다음 업로드
하는 형태로 진행되어졌다.
일부 에러가 발생한 부분을 클로드를 통해서 다시 수정해서 진행할 예정이다.
일정 상에 여러가지 일들이 겹쳐지면서 과제를 빠르게 수행하지 못한 아쉬움이 크지만
나머지 부분에 대한 진행을 토대로 마무리를 잘 지을 수 있도록 해보겠다.