Spaces:
Build error
Build error
| # utils_eda.py | |
| import streamlit as st | |
| import pandas as pd | |
| import numpy as np | |
| import plotly.express as px | |
| import os | |
| _this_file_dir = os.path.dirname(os.path.abspath(__file__)) | |
| def load_data(): | |
| """Loads the cleaned datasets required for the app.""" | |
| try: | |
| # --- Construct absolute paths to the data files --- | |
| path_engineered = os.path.join(_this_file_dir, 'cleaned_engineered_data.csv') | |
| path_merged = os.path.join(_this_file_dir, 'cleaned_merged_data.csv') | |
| engineered_data = pd.read_csv(path_engineered) | |
| engineered_data['Date'] = pd.to_datetime(engineered_data['Date']) | |
| ts_data = pd.read_csv(path_merged) | |
| ts_data['Date'] = pd.to_datetime(ts_data['Date']) | |
| return engineered_data, ts_data | |
| except FileNotFoundError as e: | |
| st.error(f"Error loading data: {e}. Make sure 'cleaned_engineered_data.csv' and 'cleaned_merged_data.csv' are present in the main directory.") | |
| return None, None | |
| def create_target_variable_plots(df): | |
| """Creates all plots related to the target variable analysis.""" | |
| st.markdown("#### Distribution of Insect Counts") | |
| fig_hist = px.histogram(df, x='Number of insects', labels={'Number of insects': 'Number of Insects', 'count': 'Frequency'}, nbins=30, color_discrete_sequence=['skyblue']) | |
| st.plotly_chart(fig_hist, use_container_width=True) | |
| st.markdown("#### Insect Counts by Location") | |
| fig_box = px.box(df, x='Location', y='Number of insects', color='Location', labels={'Number of insects': 'Number of Insects'}) | |
| st.plotly_chart(fig_box, use_container_width=True) | |
| st.markdown("#### Daily Insect Activity Over Time") | |
| daily_stats = df.groupby('Date')['Number of insects'].agg(['sum', 'mean']).reset_index() | |
| fig_time = px.line(daily_stats, x='Date', y=['sum', 'mean'], labels={'value': 'Number of Insects', 'variable': 'Metric'}) | |
| st.plotly_chart(fig_time, use_container_width=True) | |
| def create_correlation_plots(df): | |
| """Creates all plots related to correlation analysis.""" | |
| numeric_cols = df.select_dtypes(include=np.number).columns | |
| corr_matrix = df[numeric_cols].corr() | |
| st.markdown("#### Full Feature Correlation Matrix") | |
| fig_corr_full = px.imshow(corr_matrix, text_auto=True, aspect="auto", color_continuous_scale="RdBu_r", zmin=-1, zmax=1) | |
| st.plotly_chart(fig_corr_full, use_container_width=True) | |
| def create_weather_analysis_plots(df): | |
| """Creates all plots for the weather patterns section.""" | |
| st.markdown("#### Temperature vs. Insect Activity") | |
| fig_temp = px.scatter(df, x='Average Temperature', y='Number of insects', color='Number of insects', color_continuous_scale='Viridis') | |
| st.plotly_chart(fig_temp, use_container_width=True) | |
| st.markdown("#### Humidity vs. Insect Activity") | |
| fig_humidity = px.scatter(df, x='Average Humidity', y='Number of insects', color='Number of insects', color_continuous_scale='Plasma') | |
| st.plotly_chart(fig_humidity, use_container_width=True) | |