Spaces:
Sleeping
Sleeping
import os | |
import streamlit as st | |
import pandas as pd | |
import requests | |
# API Key for fetching mental health articles | |
news_api_key = "fe1e6bcbbf384b3e9220a7a1138805e0" # Replace with your News API key | |
def load_data(file): | |
return pd.read_csv(file) | |
def provide_observed_advice(data): | |
"""Generate detailed advice based on the user's data.""" | |
advice = [] | |
# Mental Health Advice | |
if data['depression'] > 7 or data['anxiety_level'] > 7: | |
advice.append( | |
"You are experiencing high levels of depression or anxiety. It’s critical to prioritize your mental health. " | |
"Please consider scheduling an appointment with a mental health professional. Additionally, practice mindfulness or meditation daily, " | |
"engage in hobbies you enjoy, and spend time in nature to help reduce negative emotions." | |
) | |
elif data['depression'] > 5 or data['anxiety_level'] > 5: | |
advice.append( | |
"You are showing moderate signs of depression or anxiety. Try incorporating regular physical activity into your routine, " | |
"such as walking, yoga, or light exercise. Build a support system by reaching out to trusted friends or family members. " | |
"Consider journaling your thoughts or keeping a gratitude diary to refocus your mind on positive aspects of your life." | |
) | |
if data['stress_level'] > 7: | |
advice.append( | |
"High stress levels detected. Stress can negatively affect your physical and mental health. To manage stress effectively, " | |
"practice relaxation techniques such as deep breathing, progressive muscle relaxation, or guided imagery. " | |
"Identify your stressors and try to address them one by one. Seek professional counseling if stress becomes overwhelming." | |
) | |
if data['mental_health_history'] > 5: | |
advice.append( | |
"Your mental health history indicates potential ongoing challenges. Consistent therapy or counseling might provide the support you need. " | |
"Stay proactive in tracking your mood changes and avoid isolating yourself when you're feeling low." | |
) | |
# Physical Health Advice | |
if data['headache'] > 5: | |
advice.append( | |
"Frequent headaches reported. Ensure you’re staying hydrated and maintaining a balanced diet. Avoid prolonged screen time " | |
"and practice proper posture to reduce physical strain. If headaches persist, consult a doctor to rule out underlying conditions." | |
) | |
if data['blood_pressure'] > 5: | |
advice.append( | |
"Elevated blood pressure detected. Reduce your salt intake and focus on a heart-healthy diet rich in fruits, vegetables, and lean proteins. " | |
"Engage in light exercises like walking or swimming, and monitor your blood pressure regularly. Consult a doctor for long-term management strategies." | |
) | |
if data['sleep_quality'] < 5: | |
advice.append( | |
"Poor sleep quality reported. Establish a consistent bedtime routine, avoid caffeine and heavy meals before sleeping, and create a dark, quiet sleeping environment. " | |
"Try relaxation techniques like reading or listening to soothing music before bed. Seek medical advice if sleep problems persist." | |
) | |
if data['breathing_problem'] > 5: | |
advice.append( | |
"Breathing problems reported. If this is linked to allergies or asthma, ensure you’re avoiding triggers and using prescribed medications. " | |
"Practice deep breathing exercises or try yoga to improve lung function. Consider consulting a pulmonologist for further evaluation." | |
) | |
# Environmental and Social Advice | |
if data['noise_level'] > 7: | |
advice.append( | |
"High noise levels detected in your environment. Use noise-canceling headphones or soundproofing techniques to create a quieter space. " | |
"Spend some time in peaceful locations, such as parks or libraries, to recharge mentally." | |
) | |
if data['living_conditions'] < 5 or data['safety'] < 5: | |
advice.append( | |
"Suboptimal living conditions or low safety levels detected. Seek resources or community support to improve your living environment. " | |
"Consider reaching out to local authorities or organizations for assistance in addressing safety concerns." | |
) | |
# Academic and Social Support Advice | |
if data['study_load'] > 7: | |
advice.append( | |
"High academic workload reported. Create a detailed study plan to prioritize tasks and allocate sufficient time for breaks. " | |
"Avoid multitasking and focus on one task at a time to improve efficiency. Consider seeking help from teachers or peers if you feel overwhelmed." | |
) | |
if data['future_career_concerns'] > 7: | |
advice.append( | |
"High concerns about future career prospects detected. Break down your career goals into smaller, actionable steps. " | |
"Research potential career paths, network with professionals, and consider attending career counseling for guidance." | |
) | |
if data['social_support'] < 5: | |
advice.append( | |
"Low social support detected. Building meaningful connections can significantly improve your well-being. " | |
"Join social groups, clubs, or community activities that align with your interests. Don’t hesitate to reach out to friends or family for emotional support." | |
) | |
if data['peer_pressure'] > 7: | |
advice.append( | |
"High peer pressure detected. Stay true to your values and goals. Politely decline requests that make you uncomfortable, " | |
"and remember that it's okay to say no. Surround yourself with individuals who respect your boundaries." | |
) | |
if data['extracurricular_activities'] < 5: | |
advice.append( | |
"Low engagement in extracurricular activities detected. Participating in activities such as sports, arts, or volunteering can help you develop new skills, " | |
"reduce stress, and expand your social circle. Consider trying out an activity that interests you." | |
) | |
return advice | |
def main(): | |
st.set_page_config(page_title="Student Well-being Advisor", layout="wide") | |
st.title("🔍 Analyze Your Well-being") | |
# File uploader | |
uploaded_file = st.file_uploader("Upload your dataset (CSV)", type=["csv"]) | |
if uploaded_file: | |
df = load_data(uploaded_file) | |
st.write("### Dataset Preview:") | |
st.dataframe(df.head()) | |
# Validate dataset columns | |
required_columns = [ | |
'anxiety_level', 'self_esteem', 'mental_health_history', 'depression', | |
'headache', 'blood_pressure', 'sleep_quality', 'breathing_problem', | |
'noise_level', 'living_conditions', 'safety', 'basic_needs', | |
'academic_performance', 'study_load', 'teacher_student_relationship', | |
'future_career_concerns', 'social_support', 'peer_pressure', | |
'extracurricular_activities', 'bullying', 'stress_level' | |
] | |
missing_columns = [col for col in required_columns if col not in df.columns] | |
if missing_columns: | |
st.error(f"The uploaded dataset is missing the following required columns: {', '.join(missing_columns)}") | |
else: | |
# Handle missing values in the dataset | |
if df.isnull().values.any(): | |
st.warning("The dataset contains missing values. Rows with missing values will be skipped.") | |
df = df.dropna() | |
st.markdown("### Select a Row for Analysis") | |
selected_row = st.selectbox( | |
"Select a row (based on index) to analyze:", | |
options=df.index, | |
format_func=lambda x: f"Row {x} - Depression: {df.loc[x, 'depression']}, Anxiety: {df.loc[x, 'anxiety_level']}, Stress: {df.loc[x, 'stress_level']}", | |
) | |
# Extract data for the selected row | |
row_data = df.loc[selected_row].to_dict() | |
# Show extracted details | |
st.write("### Selected User Details:") | |
st.json(row_data) | |
# Generate advice | |
st.subheader("🔔 Personalized Advice") | |
advice = provide_observed_advice(row_data) | |
if advice: | |
for i, tip in enumerate(advice, 1): | |
st.write(f"📌 **{i}.** {tip}") | |
else: | |
st.warning("No specific advice available based on this user's data.") | |
if __name__ == "__main__": | |
main() | |