Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import pandas_bokeh | |
import seaborn as sns | |
from pytrends.request import TrendReq | |
import time | |
import random | |
# ๊ธ ์ฐ๊ธฐ(๋งํฌ ์ฝ์ ) | |
st.title('VIETNAM DONGDAEMUN FOOOOOOOOOD!!!!!!!!!') | |
st.header('Selection of Vietnamese Restaurants in Dongdaemun Area') | |
st.subheader('Variety of dishes from different region in Vietnam, made affordable and delicious for local taste') | |
st.subheader('Items such as Pho Soup, Bun Bo Hue, Cha Gio or Com Chien') | |
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) | |
.''' ) | |
# ์ฌ์ง ์ฝ์ | |
st.image('final_image_2.jpg', caption='A Spread of Vietnamese Dishes You Might Be Able To Find') | |
st.image('final_image_4.jpg', caption='A popular choice everywhere: Vietnamese Pho Soup') | |
st.image('final_image_3.jpg', caption='Hidden Gem: Banh Xeo') | |
st.header('Cheap and Delicious: One can find a variety of Vietnamese Restaurant in Dongdaemun Area') | |
st.subheader('Hosting dishes from North to South Vietnam') | |
st.subheader('The almost infinite choices will leave you looking for reviews!') | |
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''' ) | |
# ๋ฐ์ดํฐ ๋ณด์ฌ์ฃผ๊ธฐ | |
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง = pd.read_excel('vietnam_food_dongdaemun_BLOGS.xlsx', index_col=0) | |
st.write('We have narrowed down to 150 most relevant blogs!!',df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง) | |
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_keyword = pd.read_excel('vietnam_food_KEYWORDS.xlsx', index_col=0) | |
st.write('๋ธ๋ก๊ทธ ๊ธ์์ ๊ฐ์ฅ ๋ง์ด ์ถํํ ๋จ์ด๋ ~~~ ์ค๋ช ~~~', df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_keyword) | |
# ์๋ํด๋ผ์ฐ๋ - WORDCLOUD | |
st.write('์ฃผ์ ๋จ์ด๋ค์ ์๋ํด๋ผ์ฐ๋๋ก ๋ณด์ฌ์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค') | |
st.image('final_WORDCLOUD.png') | |
# ์ฐ๊ฒฐ๋ง ๋ถ์ - NETWORK | |
st.write('''์ทจ์ฌํ์ ์ฃผ์ ๋จ์ด๋ค ๊ฐ์ ๊ณต๋์ถํํ๋ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก ์๋ฏธ์ฐ๊ฒฐ๋ง์ ๊ทธ๋ ค๋ณด์๋ค. | |
๋ถ์๊ฒฐ๊ณผ, ~~์ค๋ช ~~''') | |
st.image('final_NETWORK.png') | |
#### The Section Below Is Extra Stuff We Gotta Think About | |
# | |
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2 = pd.read_excel('vietnam_food_dongdaemun_BLOGS.xlsx', index_col=0) | |
st.write('Again, the list of blog posts on Dongdaemun Vietnamese Restaurant', df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2) | |
# ๊ฒ์์ด ์ ๋ ฅ ๋ฐ์ ์ถ๋ ฅ | |
query = st.text_input('Enter Keyword such as: food name, restaurant name', key='region1_input') | |
df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2['select1']=df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2['text'].apply(lambda x: 1 if query in x else 0) | |
st.write('๊ฒ์ ๊ฒฐ๊ณผ:', df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2[df_๋๋๋ฌธ๊ตฌ_๋ฒ ํธ๋จ_๋ง์ง_2['select1']==1]) | |
##### HEATMAP ##### | |
# List of user-agents to rotate | |
USER_AGENTS = [ | |
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', | |
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0', | |
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0', | |
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0' | |
] | |
def fetch_trends_data(kw_list, timeframe, geo): | |
pytrends = TrendReq(hl='en-US', tz=360) | |
pytrends.build_payload(kw_list, timeframe=timeframe, geo=geo) | |
df_trends = pytrends.interest_over_time() | |
# Introduce random delays to avoid being blocked | |
time.sleep(random.uniform(1, 5)) | |
# Rotate user-agents | |
user_agent = random.choice(USER_AGENTS) | |
pytrends = TrendReq(hl='en-US', tz=360, custom_useragent=user_agent) | |
pytrends.build_payload(kw_list, timeframe=timeframe, geo=geo) | |
df_trends = pytrends.interest_over_time() | |
return df_trends | |
# Fetch data for the year 2023 | |
kw_list = ['๋ฒ ํธ๋จ ์์'] | |
timeframe = '2023-01-01 2023-12-31' | |
geo = 'KR' | |
df_trends = fetch_trends_data(kw_list, timeframe, geo) | |
# Streamlit app | |
st.title('Monthly Google Trends Data for Vietnamese Food in Seoul (2023)') | |
if not df_trends.empty: | |
df_trends = df_trends.drop(columns=['isPartial']) | |
df_trends.reset_index(inplace=True) | |
# Extract month from date | |
df_trends['month'] = df_trends['date'].dt.to_period('M') | |
monthly_counts = df_trends.groupby('month')[kw_list].sum().reset_index() | |
# Display the data | |
st.write('Number of searches for each month:') | |
st.write(monthly_counts) | |
# Create the heatmap | |
plt.figure(figsize=(10, 6)) | |
monthly_counts_pivot = monthly_counts.pivot_table(index='month', values=kw_list) | |
sns.heatmap(monthly_counts_pivot.T, annot=True, fmt="d", cmap='YlGnBu', cbar=False) | |
st.pyplot(plt) | |
else: | |
st.write("No data received from Google Trends.") | |
# ๊ตํต์ฌ๊ณ ์ ํ๊ณผ ์ฐ๋์ ๋ฐ๋ฅธ 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) | |