import streamlit as st import pandas as pd import matplotlib.pyplot as plt import pandas_bokeh # 글 쓰기(링크 삽입) st.title('경희대 인근 가성비 좋은 맛집 늘어 ... 건강식은 "글쎄"') st.header('대학생 대상 저렴하고 맛있는 음식점 인기') st.subheader('분식, 중식, 한식에 일식까지 다양한 음식 싸게 제공') st.subheader('축제 행사에 햄버거-핫도그 푸드트럭도 등장') st.write('''경희대 인근에는 최근 가성비 좋은 맛집들이 속속 들어서며 학생들 사이에서 인기를 끌고 있다. 한정된 대학생 지갑사정에 맞는 저렴한 가격과 다양하고 퀄리티 높은 메뉴로 입소문이 나면서 성업 중인 것이다. 이처럼 경희대 주변에는 학생들 사이에서 입소문이 자자한 가성비 맛집들이 많다. 뿐만 아니라 대학 축제 때면 다양한 [푸드트럭](https://namu.wiki/w/%ED%91%B8%EB%93%9C%20%ED%8A%B8%EB%9F%AD)들도 찾아와 저렴하고 맛있는 메뉴를 선보이며 큰 인기를 끈다. 최근 물가상승으로 인해 외 부담이 큰 대학생들에게 이런 가성비 높은 맛집과 푸드트럭은 환영받을 만하다.''' ) # 사진 삽입 st.image('photo1.jpg', caption='지난 4월20일 경희대 교내에서 학생들이 푸드트럭에서 음식을 구매하고 있다') st.image('photo2.jpg', caption='경희대 근처 맛집 지도(--- 제공)') st.header('싼 게 비지떡? 건강식은 "안 보이네"') st.subheader('저렴하고 푸짐하지만 영양과 건강은 실종') st.subheader('"대학가 먹거리, 건강의 균형을 잡아야 할 때"') st.write('''경희대 인근 맛집들의 메뉴를 자세히 보면 건강한 식재료나 영양은 크게 고려되지 않은 것 같아 아쉬움이 남는다. 대학가에서 건강에 대한 고민보다 싸고 배부르게 먹을 수 있는 곳이 인기인 점은 이해된다. 하지만 한번쯤은 영양과 건강을 생각해봐야 한다. 청년때부터 건강식을 섭취하고 올바른 식습관을 가져야하기 때문이다.''' ) # 데이터 보여주기 df_경희대맛집 = pd.read_excel('data_blogs.xlsx', index_col=0) st.write('취재팀은 네이버 블로그에서 "경희대 맛집"을 검색해 글 300개를 수집했다', df_경희대맛집) df_경희대맛집_keyword = pd.read_excel('data_keywords.xlsx', index_col=0) st.write('블로그 글에서 가장 많이 출현한 단어는 ~~~ 설명~~~', df_경희대맛집_keyword) # 워드클라우드 st.write('주요 단어들을 워드클라우드로 보여주면 다음과 같다') st.image('wordcloud.png') # 연결망 분석 st.write('''취재팀은 주요 단어들 간에 공동출현하는 관계를 바탕으로 의미연결망을 그려보았다. 분석결과, ~~설명~~''') st.image('network.png') # 데이터(교통사고) 보여주기 df_교통사고 = pd.read_excel('data_traffic_accidents.xlsx', index_col=0) st.write('다음 데이터는 전국의 교통사고를 지역별로 집계한 것이다', df_교통사고) # 검색어 입력 받아 출력 query = st.text_input('이 곳에 지역명(시군구동읍면)을 입력하면 관련 데이터만 검색해 보여줍니다', key='region1_input') df_교통사고['select1']=df_교통사고['사고지역위치명'].apply(lambda x: 1 if query in x else 0) st.write('검색 결과:', df_교통사고[df_교통사고['select1']==1]) # 교통사고 유형과 연도에 따른 pivot table 보여주기 df_교통사고_pivot=df_교통사고.pivot_table(index='사고유형구분', columns='사고연도', values='사고건수', aggfunc='sum') df_교통사고_heatmap=df_교통사고_pivot.style.background_gradient(cmap='Oranges').format("{:.2f}") st.write('다음 표는 교통사고 건수를 유형과 연도에 따라 구분한 것이다', df_교통사고_heatmap) # 검색어 입력 받아 pivot table 출력 query_pivot = st.text_input('이 곳에 지역명(시군구)을 입력하면 관련 데이터만 검색해 보여줍니다', key='region2_input') df_교통사고['select2']=df_교통사고['사고지역위치명'].apply(lambda x: 1 if query_pivot in x else 0) df_교통사고_pivot_selected=df_교통사고[df_교통사고['select2']==1].pivot_table(index='사고유형구분', columns='사고연도', values='사고건수', aggfunc='sum') df_교통사고_heatmap_selected=df_교통사고_pivot_selected.style.background_gradient(cmap='Oranges').format("{:.2f}") st.write('검색 결과:', df_교통사고_heatmap_selected) # pandas_bokeh 그래프 보여주기 st.write('전국 교통사고 데이터에 따르면, 사고건수와 중상자수는 밀접한 관련을 맺고 있다. ~~~설명~~. *그래프 내 점에 커서를 대면 지역명이 나타난다') p_scatter = df_교통사고.plot_bokeh.scatter( x="사고건수", y="중상자수", title="사고건수와 중상자수", size=10, hovertool_string="""
위치:@{사고지역위치명}
""" ) st.bokeh_chart(p_scatter, use_container_width=True) # 선택한 조건에 따라 출력 option = st.selectbox('연도를 선택하면 해당 시기의 그래프를 보여줍니다', (2012, 2013, 2014, 2015, 2016, 2018, 2017, 2019, 2020, 2021), key='year_input') p_scatter_selected = df_교통사고[df_교통사고['사고연도']==option].plot_bokeh.scatter( x="사고건수", y="중상자수", title="사고건수와 중상자수", size=10, hovertool_string="""
위치:@{사고지역위치명}
""" ) st.write('검색 결과:') st.bokeh_chart(p_scatter_selected, use_container_width=True)