Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import matplotlib.pyplot as plt
|
4 |
+
import datetime as dt
|
5 |
+
|
6 |
+
# Initialize session state for storing mood logs
|
7 |
+
if "mood_data" not in st.session_state:
|
8 |
+
st.session_state.mood_data = pd.DataFrame(columns=["Date", "Mood", "Activity", "Notes"])
|
9 |
+
|
10 |
+
# App title and description
|
11 |
+
st.title("Mood Tracker")
|
12 |
+
st.write("A simple app to log and track your mood over time.")
|
13 |
+
|
14 |
+
# Sidebar for mood input
|
15 |
+
st.sidebar.header("Log Your Mood")
|
16 |
+
mood = st.sidebar.selectbox("How are you feeling today?", ["Happy", "Neutral", "Sad", "Anxious", "Excited", "Angry"])
|
17 |
+
activity = st.sidebar.text_input("What activity were you doing?")
|
18 |
+
notes = st.sidebar.text_area("Add any notes (optional):")
|
19 |
+
log_button = st.sidebar.button("Log Mood")
|
20 |
+
|
21 |
+
# Log the mood
|
22 |
+
if log_button:
|
23 |
+
new_entry = pd.DataFrame({
|
24 |
+
"Date": [dt.datetime.now()],
|
25 |
+
"Mood": [mood],
|
26 |
+
"Activity": [activity],
|
27 |
+
"Notes": [notes]
|
28 |
+
})
|
29 |
+
st.session_state.mood_data = pd.concat([st.session_state.mood_data, new_entry], ignore_index=True)
|
30 |
+
st.success("Mood logged successfully!")
|
31 |
+
|
32 |
+
# Display mood data
|
33 |
+
st.header("Mood History")
|
34 |
+
if not st.session_state.mood_data.empty:
|
35 |
+
st.dataframe(st.session_state.mood_data.sort_values(by="Date", ascending=False))
|
36 |
+
else:
|
37 |
+
st.write("No mood data logged yet. Use the sidebar to add entries.")
|
38 |
+
|
39 |
+
# Visualize mood trends
|
40 |
+
st.header("Mood Trends")
|
41 |
+
if not st.session_state.mood_data.empty:
|
42 |
+
# Convert date column to datetime for grouping
|
43 |
+
st.session_state.mood_data["Date"] = pd.to_datetime(st.session_state.mood_data["Date"])
|
44 |
+
mood_counts = st.session_state.mood_data.groupby(["Mood"]).size()
|
45 |
+
|
46 |
+
# Bar chart for mood distribution
|
47 |
+
fig, ax = plt.subplots()
|
48 |
+
mood_counts.plot(kind="bar", color="skyblue", ax=ax)
|
49 |
+
ax.set_title("Mood Distribution")
|
50 |
+
ax.set_ylabel("Count")
|
51 |
+
ax.set_xlabel("Mood")
|
52 |
+
st.pyplot(fig)
|
53 |
+
|
54 |
+
# Trend over time
|
55 |
+
mood_over_time = st.session_state.mood_data.groupby(st.session_state.mood_data["Date"].dt.date).size()
|
56 |
+
fig, ax = plt.subplots()
|
57 |
+
mood_over_time.plot(ax=ax, marker="o", color="orange")
|
58 |
+
ax.set_title("Mood Over Time")
|
59 |
+
ax.set_ylabel("Entries")
|
60 |
+
ax.set_xlabel("Date")
|
61 |
+
st.pyplot(fig)
|
62 |
+
else:
|
63 |
+
st.write("No data available for visualizations.")
|
64 |
+
|
65 |
+
# Resources for mental health
|
66 |
+
st.header("Mental Health Resources")
|
67 |
+
st.write("Here are some tips and resources to help improve your mental health:")
|
68 |
+
st.markdown("- Practice mindfulness and deep breathing.")
|
69 |
+
st.markdown("- Stay physically active.")
|
70 |
+
st.markdown("- Talk to a trusted friend or counselor.")
|
71 |
+
st.markdown("- [Find a therapist](https://www.psychologytoday.com)")
|