Spaces:
Sleeping
Sleeping
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="""<h6>์์น:@{์ฌ๊ณ ์ง์ญ์์น๋ช }</h6>""" | |
) | |
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="""<h6>์์น:@{์ฌ๊ณ ์ง์ญ์์น๋ช }</h6>""" | |
) | |
st.write('๊ฒ์ ๊ฒฐ๊ณผ:') | |
st.bokeh_chart(p_scatter_selected, use_container_width=True) | |