Spaces:
Runtime error
Runtime error
myquyen242
commited on
Commit
โข
86f5e7c
1
Parent(s):
763392a
Upload app.py
Browse files
app.py
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import matplotlib.pyplot as plt
|
4 |
+
import pandas_bokeh
|
5 |
+
import seaborn as sns
|
6 |
+
|
7 |
+
# ๊ธ ์ฐ๊ธฐ(๋งํฌ ์ฝ์
)
|
8 |
+
st.title('VIETNAM DONGDAEMUN FOOOOOOOOOD!!!!!!!!!')
|
9 |
+
|
10 |
+
st.header('Selection of Vietnamese Restaurants in Dongdaemun Area')
|
11 |
+
st.subheader('Variety of dishes from different region in Vietnam, made affordable and delicious for local taste')
|
12 |
+
st.subheader('Items such as Pho Soup, Bun Bo Hue, Cha Gio or Com Chien')
|
13 |
+
st.write('''Write something here about the booming of Vietnamese Restaurant in Korea - particularly the fast growing food scene in Dongdaemun [ํธ๋ํธ๋ญ](https://namu.wiki/w/%EB%B2%A0%ED%8A%B8%EB%82%A8%20%EC%9A%94%EB%A6%AC)
|
14 |
+
.''' )
|
15 |
+
|
16 |
+
# ์ฌ์ง ์ฝ์
|
17 |
+
st.image('final_image_2.jpg', caption='A Spread of Vietnamese Dishes You Might Be Able To Find')
|
18 |
+
|
19 |
+
st.image('final_image_4.jpg', caption='A popular choice everywhere: Vietnamese Pho Soup')
|
20 |
+
|
21 |
+
st.image('final_image_3.jpg', caption='Hidden Gem: Banh Xeo')
|
22 |
+
|
23 |
+
|
24 |
+
st.header('Cheap and Delicious: One can find a variety of Vietnamese Restaurant in Dongdaemun Area')
|
25 |
+
st.subheader('Hosting dishes from North to South Vietnam')
|
26 |
+
st.subheader('The almost infinite choices will leave you looking for reviews!')
|
27 |
+
st.write('''Before deciding on which dish you'd want ~ carefully browse through the Blog section for an intimate look at the local food joints''' )
|
28 |
+
|
29 |
+
# ๋ฐ์ดํฐ ๋ณด์ฌ์ฃผ๊ธฐ
|
30 |
+
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง = pd.read_excel('vietnam_food_dongdaemun_BLOGS.xlsx', index_col=0)
|
31 |
+
st.write('We have narrowed down to 150 most relevant blogs!!',df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง)
|
32 |
+
|
33 |
+
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_keyword = pd.read_excel('vietnam_food_KEYWORDS.xlsx', index_col=0)
|
34 |
+
st.write('๋ธ๋ก๊ทธ ๊ธ์์ ๊ฐ์ฅ ๋ง์ด ์ถํํ ๋จ์ด๋ ~~~ ์ค๋ช
~~~', df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_keyword)
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
# ์๋ํด๋ผ์ฐ๋ - WORDCLOUD
|
39 |
+
st.write('์ฃผ์ ๋จ์ด๋ค์ ์๋ํด๋ผ์ฐ๋๋ก ๋ณด์ฌ์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค')
|
40 |
+
st.image('final_WORDCLOUD.png')
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
# ์ฐ๊ฒฐ๋ง ๋ถ์ - NETWORK
|
45 |
+
st.write('''์ทจ์ฌํ์ ์ฃผ์ ๋จ์ด๋ค ๊ฐ์ ๊ณต๋์ถํํ๋ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก ์๋ฏธ์ฐ๊ฒฐ๋ง์ ๊ทธ๋ ค๋ณด์๋ค.
|
46 |
+
๋ถ์๊ฒฐ๊ณผ, ~~์ค๋ช
~~''')
|
47 |
+
st.image('final_NETWORK.png')
|
48 |
+
|
49 |
+
#### The Section Below Is Extra Stuff We Gotta Think About
|
50 |
+
|
51 |
+
#
|
52 |
+
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2 = pd.read_excel('vietnam_food_dongdaemun_BLOGS.xlsx', index_col=0)
|
53 |
+
st.write('Again, the list of blog posts on Dongdaemun Vietnamese Restaurant', df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2)
|
54 |
+
|
55 |
+
# ๊ฒ์์ด ์
๋ ฅ ๋ฐ์ ์ถ๋ ฅ
|
56 |
+
query = st.text_input('Enter Keyword such as: food name, restaurant name', key='region1_input')
|
57 |
+
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2['select1']=df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2['text'].apply(lambda x: 1 if query in x else 0)
|
58 |
+
st.write('๊ฒ์ ๊ฒฐ๊ณผ:', df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2[df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2['select1']==1])
|
59 |
+
|
60 |
+
##### HEATMAP #####
|
61 |
+
|
62 |
+
# Load the data from the Excel file
|
63 |
+
file_path = 'vietnam_food_by_month.xlsx'
|
64 |
+
final_df = pd.read_excel(file_path)
|
65 |
+
|
66 |
+
# Ensure the 'month' column is present
|
67 |
+
if 'month' not in final_df.columns:
|
68 |
+
final_df['month'] = pd.to_datetime(final_df['date']).dt.month
|
69 |
+
|
70 |
+
# Count the number of blog posts per month
|
71 |
+
monthly_counts = final_df['month'].value_counts().sort_index()
|
72 |
+
|
73 |
+
# Prepare data for heatmap
|
74 |
+
heatmap_data = monthly_counts.reset_index()
|
75 |
+
heatmap_data.columns = ['Month', 'Number of Posts']
|
76 |
+
heatmap_data = heatmap_data.set_index('Month').T
|
77 |
+
|
78 |
+
# Streamlit application
|
79 |
+
st.title('Monthly Blog Posts about Vietnamese Food in Seoul (2023)')
|
80 |
+
st.write('Number of blog posts for each month:')
|
81 |
+
st.write(heatmap_data)
|
82 |
+
|
83 |
+
fig, ax = plt.subplots(figsize=(10, 6))
|
84 |
+
sns.heatmap(heatmap_data, annot=True, cmap='YlGnBu', ax=ax)
|
85 |
+
st.pyplot(fig)
|
86 |
+
|
87 |
+
# ๊ตํต์ฌ๊ณ ์ ํ๊ณผ ์ฐ๋์ ๋ฐ๋ฅธ pivot table ๋ณด์ฌ์ฃผ๊ธฐ
|
88 |
+
#df_๊ตํต์ฌ๊ณ _pivot=df_๊ตํต์ฌ๊ณ .pivot_table(index='์ฌ๊ณ ์ ํ๊ตฌ๋ถ', columns='์ฌ๊ณ ์ฐ๋', values='์ฌ๊ณ ๊ฑด์', aggfunc='sum')
|
89 |
+
#df_๊ตํต์ฌ๊ณ _heatmap=df_๊ตํต์ฌ๊ณ _pivot.style.background_gradient(cmap='Oranges').format("{:.2f}")
|
90 |
+
#st.write('๋ค์ ํ๋ ๊ตํต์ฌ๊ณ ๊ฑด์๋ฅผ ์ ํ๊ณผ ์ฐ๋์ ๋ฐ๋ผ ๊ตฌ๋ถํ ๊ฒ์ด๋ค', df_๊ตํต์ฌ๊ณ _heatmap)
|
91 |
+
|
92 |
+
# ๊ฒ์์ด ์
๋ ฅ ๋ฐ์ pivot table ์ถ๋ ฅ
|
93 |
+
#query_pivot = st.text_input('์ด ๊ณณ์ ์ง์ญ๋ช
(์๊ตฐ๊ตฌ)์ ์
๋ ฅํ๋ฉด ๊ด๋ จ ๋ฐ์ดํฐ๋ง ๊ฒ์ํด ๋ณด์ฌ์ค๋๋ค', key='region2_input')
|
94 |
+
#df_๊ตํต์ฌ๊ณ ['select2']=df_๊ตํต์ฌ๊ณ ['์ฌ๊ณ ์ง์ญ์์น๋ช
'].apply(lambda x: 1 if query_pivot in x else 0)
|
95 |
+
#df_๊ตํต์ฌ๊ณ _pivot_selected=df_๊ตํต์ฌ๊ณ [df_๊ตํต์ฌ๊ณ ['select2']==1].pivot_table(index='์ฌ๊ณ ์ ํ๊ตฌ๋ถ', columns='์ฌ๊ณ ์ฐ๋', values='์ฌ๊ณ ๊ฑด์', aggfunc='sum')
|
96 |
+
#df_๊ตํต์ฌ๊ณ _heatmap_selected=df_๊ตํต์ฌ๊ณ _pivot_selected.style.background_gradient(cmap='Oranges').format("{:.2f}")
|
97 |
+
#st.write('๊ฒ์ ๊ฒฐ๊ณผ:', df_๊ตํต์ฌ๊ณ _heatmap_selected)
|
98 |
+
|
99 |
+
# pandas_bokeh ๊ทธ๋ํ ๋ณด์ฌ์ฃผ๊ธฐ
|
100 |
+
#st.write('์ ๊ตญ ๊ตํต์ฌ๊ณ ๋ฐ์ดํฐ์ ๋ฐ๋ฅด๋ฉด, ์ฌ๊ณ ๊ฑด์์ ์ค์์์๋ ๋ฐ์ ํ ๊ด๋ จ์ ๋งบ๊ณ ์๋ค. ~~~์ค๋ช
~~. *๊ทธ๋ํ ๋ด ์ ์ ์ปค์๋ฅผ ๋๋ฉด ์ง์ญ๋ช
์ด ๋ํ๋๋ค')
|
101 |
+
#p_scatter = df_๊ตํต์ฌ๊ณ .plot_bokeh.scatter(
|
102 |
+
# x="์ฌ๊ณ ๊ฑด์",
|
103 |
+
# y="์ค์์์",
|
104 |
+
# title="์ฌ๊ณ ๊ฑด์์ ์ค์์์",
|
105 |
+
# size=10,
|
106 |
+
# hovertool_string="""<h6>์์น:@{์ฌ๊ณ ์ง์ญ์์น๋ช
}</h6>"""
|
107 |
+
#)
|
108 |
+
#st.bokeh_chart(p_scatter, use_container_width=True)
|
109 |
+
|
110 |
+
# ์ ํํ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ถ๋ ฅ
|
111 |
+
#option = st.selectbox('์ฐ๋๋ฅผ ์ ํํ๋ฉด ํด๋น ์๊ธฐ์ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค',
|
112 |
+
# (2012, 2013, 2014, 2015, 2016, 2018, 2017, 2019, 2020, 2021), key='year_input')
|
113 |
+
|
114 |
+
#p_scatter_selected = df_๊ตํต์ฌ๊ณ [df_๊ตํต์ฌ๊ณ ['์ฌ๊ณ ์ฐ๋']==option].plot_bokeh.scatter(
|
115 |
+
# x="์ฌ๊ณ ๊ฑด์",
|
116 |
+
# y="์ค์์์",
|
117 |
+
# title="์ฌ๊ณ ๊ฑด์์ ์ค์์์",
|
118 |
+
# size=10,
|
119 |
+
# hovertool_string="""<h6>์์น:@{์ฌ๊ณ ์ง์ญ์์น๋ช
}</h6>"""
|
120 |
+
#)
|
121 |
+
#st.write('๊ฒ์ ๊ฒฐ๊ณผ:')
|
122 |
+
#st.bokeh_chart(p_scatter_selected, use_container_width=True)
|