Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import seaborn as sns | |
| import matplotlib.pyplot as plt | |
| from pytrends.request import TrendReq | |
| # Set up pytrends | |
| trends = TrendReq() | |
| # Function to get data | |
| def get_data(keywords, geo, timeframe): | |
| trends.build_payload(kw_list=keywords, geo=geo, timeframe=timeframe) | |
| data = trends.interest_over_time() | |
| data = data.drop(columns=['isPartial']) | |
| return data.reset_index() | |
| # Streamlit app | |
| st.title("Google Trends Analysis") | |
| # User inputs | |
| keywords = st.text_input("Enter keywords (comma-separated)", "yapay zeka, makine öğrenmesi, derin öğrenme").split(',') | |
| geo = "TR" # Automatically set to TR | |
| timeframe = st.text_input("Enter timeframe (e.g., today 5-y, 2022-01-01 2023-01-01)", "today 5-y") | |
| # Display the selected geo | |
| st.write(f"Selected location: Turkey (TR)") | |
| # Get data | |
| if st.button("Fetch Data"): | |
| data = get_data(keywords, geo, timeframe) | |
| st.session_state['data'] = data | |
| st.success("Data fetched successfully!") | |
| # Visualization options | |
| if 'data' in st.session_state: | |
| viz_options = [ | |
| "Line Plot", | |
| "Heatmap", | |
| "Bar Plot", | |
| "Area Plot", | |
| "Violin Plot", | |
| "Box Plot", | |
| "Scatter Plot", | |
| "Pair Plot" | |
| ] | |
| selected_viz = st.selectbox("Select Visualization", viz_options) | |
| if selected_viz == "Line Plot": | |
| fig, ax = plt.subplots(figsize=(10, 6)) | |
| sns.lineplot(data=st.session_state['data'].melt(id_vars=['date'], var_name='term', value_name='searches'), | |
| x='date', y='searches', hue='term', ax=ax) | |
| st.pyplot(fig) | |
| elif selected_viz == "Heatmap": | |
| fig, ax = plt.subplots(figsize=(10, 8)) | |
| sns.heatmap(st.session_state['data'].drop('date', axis=1).corr(), annot=True, cmap='coolwarm', ax=ax) | |
| st.pyplot(fig) | |
| elif selected_viz == "Bar Plot": | |
| fig, ax = plt.subplots(figsize=(10, 6)) | |
| st.session_state['data'].drop('date', axis=1).mean().plot(kind='bar', ax=ax) | |
| ax.set_ylabel('Average Search Interest') | |
| st.pyplot(fig) | |
| elif selected_viz == "Area Plot": | |
| fig, ax = plt.subplots(figsize=(10, 6)) | |
| st.session_state['data'].set_index('date').plot.area(ax=ax) | |
| ax.set_ylabel('Search Interest') | |
| st.pyplot(fig) | |
| elif selected_viz == "Violin Plot": | |
| fig, ax = plt.subplots(figsize=(10, 6)) | |
| sns.violinplot(data=st.session_state['data'].melt(id_vars='date', var_name='term', value_name='searches'), | |
| x='term', y='searches', ax=ax) | |
| st.pyplot(fig) | |
| elif selected_viz == "Box Plot": | |
| fig, ax = plt.subplots(figsize=(10, 6)) | |
| sns.boxplot(data=st.session_state['data'].melt(id_vars='date', var_name='term', value_name='searches'), | |
| x='term', y='searches', ax=ax) | |
| st.pyplot(fig) | |
| elif selected_viz == "Scatter Plot": | |
| fig, ax = plt.subplots(figsize=(10, 6)) | |
| sns.scatterplot(data=st.session_state['data'].melt(id_vars='date', var_name='term', value_name='searches'), | |
| x='date', y='searches', hue='term', ax=ax) | |
| st.pyplot(fig) | |
| elif selected_viz == "Pair Plot": | |
| fig = sns.pairplot(st.session_state['data'].drop('date', axis=1), diag_kind='kde') | |
| st.pyplot(fig) |