Spaces:
Sleeping
Sleeping
File size: 5,746 Bytes
6211115 0f3dda5 6211115 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
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)
|