Hannah commited on
Commit
33ecdbc
·
1 Parent(s): addc7dc
Files changed (2) hide show
  1. app.py +123 -4
  2. healthdata.csv +71 -0
app.py CHANGED
@@ -1,7 +1,126 @@
1
  import gradio as gr
 
 
2
 
3
- def greet(name):
4
- return "Hello " + name + "!!"
5
 
6
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ import numpy as np
3
+ import pandas as pd
4
 
 
 
5
 
6
+ def load_health_data():
7
+ # Load the CSV file into a pandas DataFrame
8
+ df = pd.read_csv('healthdata.csv', header=2)
9
+ # Replace null values with empty strings
10
+ df = df.replace({np.nan: "", None: ""})
11
+ return df
12
+
13
+ def get_device_data(device):
14
+ df = load_health_data()
15
+
16
+ # Common columns for all devices
17
+ base_cols = ['Day', 'Date', 'Day of Week']
18
+
19
+ if device == "AppleWatch + AutoSleep":
20
+ # Get columns with AS suffix + base columns
21
+ device_cols = base_cols + [col for col in df.columns if 'AS' in col]
22
+ elif device == "8sleep Pod 4 Ultra":
23
+ # Get columns with 8S suffix + base columns
24
+ device_cols = base_cols + [col for col in df.columns if '8S' in col]
25
+ elif device == "Oura":
26
+ # Get columns with OU suffix + base columns
27
+ device_cols = base_cols + [col for col in df.columns if 'OU' in col]
28
+ elif device == "Whoop":
29
+ # Get columns with WH suffix + base columns
30
+ device_cols = base_cols + [col for col in df.columns if 'WH' in col]
31
+ else:
32
+ return df
33
+
34
+ # Add the Average and Notes columns if they exist
35
+ if 'Average' in df.columns:
36
+ device_cols.append('Average')
37
+ if 'Notes' in df.columns:
38
+ device_cols.append('Notes')
39
+
40
+ return df[device_cols]
41
+
42
+ def get_color_for_value(val, min_val, max_val):
43
+ """Return a color based on where the value falls in the range"""
44
+ if min_val == max_val:
45
+ return "" # No color if all values are the same
46
+
47
+ normalized = (val - min_val) / (max_val - min_val)
48
+
49
+ if normalized < 0.33:
50
+ return "" # Low values are blank
51
+ elif normalized < 0.66:
52
+ # Medium values are green
53
+ intensity = int(255 * ((normalized - 0.33) / 0.33))
54
+ return f"background-color: rgba(0, {intensity}, 0, 0.3)"
55
+ else:
56
+ # High values are red
57
+ intensity = int(255 * ((normalized - 0.66) / 0.34))
58
+ return f"background-color: rgba({intensity}, 0, 0, 0.3)"
59
+
60
+ def prepare_data_with_styling(df):
61
+ data = df.values.tolist()
62
+ headers = list(df.columns)
63
+
64
+ # Get min/max for each numeric column
65
+ col_ranges = {}
66
+ for i, col in enumerate(headers):
67
+ if col not in ['Day', 'Date', 'Day of Week', 'Notes']:
68
+ try:
69
+ values = [float(row[i]) for row in data if row[i] != "" and pd.notna(row[i])]
70
+ if values:
71
+ col_ranges[i] = {'min': min(values), 'max': max(values)}
72
+ except (ValueError, TypeError):
73
+ continue
74
+
75
+ # Create styling
76
+ styling = []
77
+ for row in data:
78
+ row_styling = []
79
+ for i, val in enumerate(row):
80
+ if i in col_ranges and val != "" and pd.notna(val):
81
+ try:
82
+ val_float = float(val)
83
+ style = get_color_for_value(val_float, col_ranges[i]['min'], col_ranges[i]['max'])
84
+ row_styling.append(["", f"width: var(--cell-width-3); left: auto; {style}"])
85
+ except (ValueError, TypeError):
86
+ row_styling.append(["", ""])
87
+ else:
88
+ row_styling.append(["", ""])
89
+ styling.append(row_styling)
90
+
91
+ return {
92
+ "data": data,
93
+ "headers": headers,
94
+ "metadata": {
95
+ "styling": styling
96
+ }
97
+ }
98
+
99
+ column_widths = [70,150,150,150,150]
100
+ # Create the Gradio application using Blocks
101
+ with gr.Blocks(title="@Andrej Karpathy's Sleep Data") as demo:
102
+ gr.Markdown("# @karpathy's Sleep Data")
103
+ gr.Markdown("This app displays Andrej Karpathy's sleep tracking data from multiple devices. See his [blog post](https://karpathy.bearblog.dev/finding-the-best-sleep-tracker/) to learn more about the data and the process of finding the best sleep tracker.")
104
+
105
+ with gr.Tabs():
106
+ with gr.TabItem("AppleWatch + AutoSleep"):
107
+ df = get_device_data("AppleWatch + AutoSleep")
108
+ gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
109
+
110
+ with gr.TabItem("8sleep Pod 4 Ultra"):
111
+ df = get_device_data("8sleep Pod 4 Ultra")
112
+ gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
113
+
114
+ with gr.TabItem("Oura"):
115
+ df = get_device_data("Oura")
116
+ gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
117
+
118
+ with gr.TabItem("Whoop"):
119
+ df = get_device_data("Whoop")
120
+ gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
121
+
122
+ with gr.TabItem("All Data"):
123
+ df = load_health_data()
124
+ gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
125
+ if __name__ == "__main__":
126
+ demo.launch()
healthdata.csv ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "NOTE: for Awake, REM, Light, Deep I am mixing the units of hours and minutes just for recording convenience. So e.g. ""1.39"" is 1 hour 39 minutes. So it's a little bit sketchy and non-linear scale but much easier to record",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
2
+ ,,,AppleWatch + AutoSleep,,,,,,,8sleep Pod 4 Ultra,,,,,,,Oura,,,,,,,Whoop,,,,,,,,
3
+ Day,Date,Day of Week,Awake AS,REM AS,Light AS,Deep AS,BPM AS,HRV (ms) AS,Score AS,Awake 8S,REM 8S,Light 8S,Deep 8S,BPM 8S,HRV (ms) 8S,Score 8S,Awake OU,REM OU,Light OU,Deep OU,BPM OU,HRV (ms) OU,Score OU,Awake WH,REM WH,Light WH,Deep WH,BPM WH,HRV (ms) WH,Score WH,Average,Notes
4
+ 1,"January 16, 2025",Thursday,0.30,1.31,6.03,0.26,54,54,69,,,,,,,,,,,,,,,1.22,0.51,4.32,1.43,52,51,87,,
5
+ 2,"January 17, 2025",Friday,0.10,1.39,4.52,1.05,53,52,84,,,,,,,,,,,,,,,0.34,1.22,4.07,1.39,52,52,85,,
6
+ 3,"January 18, 2025",Saturday,0.08,0.59,5.43,0.24,52,51,71,,,,,,,,0.29,1.15,4.59,0.53,51,56,79,0.32,1.13,4.31,1.14,51,62,81,,
7
+ 4,"January 19, 2025",Sunday,0.26,1.10,5.06,0.25,51,83,73,,,,,,,,1.17,1.34,4.03,1.01,51,52,75,0.48,0.59,3.44,1.24,51,56,71,,"slept in hotel 1/2, 2 drinks of alcohol"
8
+ 5,"January 20, 2025",Monday,1.09,1.46,5.38,0.18,52,122,80,,,,,,,,1.46,1.54,4.23,1.04,52,45,80,1.47,0.49,4.14,1.38,52,53,73,,"slept in hotel 2/2, 1 drink of alcohol"
9
+ 6,"January 21, 2025",Tuesday,0.13,1.54,5.49,1.04,52,65,97,,,,,,,,1.25,1.58,5.00,1.1,51,41,86,0.54,1.54,4.33,1.42,51,43,90,,"i only slept longer i think because i was catching up on sleep dept, and all the trackers got super excited about it."
10
+ 7,"January 22, 2025",Wednesday,0.30,1.08,6.33,0.07,56,115,70,,,,,,,,1.16,1.08,5.05,1.11,55,37,79,0.58,1.03,4.38,1.46,56,42,84,,very mild sickness symptoms
11
+ 8,"January 23, 2025",Thursday,0.07,1.44,5.25,0.4,54,57,89,,,,,,,,1.01,1.38,5.03,0.45,53,42,80,0.45,2.22,3.45,1.24,53,47,87,,slightly sick
12
+ 9,"January 24, 2025",Friday,0.19,1.50,5.19,0.08,50,58,76,,,,,,,,1.11,1.40,4.08,1.02,49,47,81,0.58,1.19,3.38,1.39,49,51,78,,
13
+ 10,"January 25, 2025",Saturday,0.21,1.26,6.46,0.27,49,71,82,,,,,,,,1.20,1.45,5.03,1.21,49,36,91,1.10,1.51,4.12,1.58,49,36,93,,
14
+ 11,"January 26, 2025",Sunday,0.15,2.04,6.32,0.12,52,82,79,,,,,,,,1.22,2.00,4.56,1.1,52,42,80,0.48,1.34,4.11,2.01,52,48,91,,very mild sickness symptoms again before bed
15
+ 12,"January 27, 2025",Monday,0.37,0.47,6.17,0.28,50,64,71,,,,,,,,2.27,1.53,4.04,1,50,52,67,0.51,1.08,4.25,1.53,50,50,86,,"not super what happened; didn't feel tired, felt tiny bit sick still, tossing and turning the whole night, both hot and cold, this night was all messed up tbh. I expected lower score from Whoop, probably in the 70s."
16
+ 13,"January 28, 2025",Tuesday,0.06,1.50,6.18,1,50,55,95,,,,,,,,0.56,2.03,5.37,0.53,50,41,88,0.52,1.52,5.05,1.3,49,47,100,,i felt great when i woke up and - wow first 100
17
+ 14,"January 29, 2025",Wednesday,0.42,1.32,5.23,0.28,50,55,82,,,,,,,,1.14,1.52,4.15,1,49,47,83,0.46,1.50,3.54,1.22,49,59,86,,
18
+ 15,"January 30, 2025",Thursday,0.16,1.28,5.31,0.42,50,85,87,,,,,,,,1.04,1.45,4.39,1,49,46,81,0.59,1.21,3.59,1.48,49,48,85,,
19
+ 16,"January 31, 2025",Friday,0.04,1.12,4.52,0.23,51,68,72,,,,,,,,1.13,1.14,3.23,1.05,50,55,65,0.37,1.01,3.50,1.07,51,74,69,,"slept in hotel 1/2, really late sleep (past midnight :( )"
20
+ 17,"February 1, 2025",Saturday,All scores changed today. AutoSleep is such a random number generator omg,,,,,,,,,,,,,,1.18,1.45,5.04,1.21,51,49,89,1.30,1.28,4.18,2.02,51,58,86,,"slept in hotel 2/2, made up some sleep debt, slept late again"
21
+ 18,"February 2, 2025",Sunday,,,,1.57,51,,97,,,,,,,,,,,,51,49,80,0.46,1.06,3.29,1.26,50,53,71,,
22
+ 19,"February 3, 2025",Monday,,,,2.42,53,,98,,,,,,,,,,,,52,49,92,0.39,1.03,4.30,2.07,52,53,81,,
23
+ 20,"February 4, 2025",Tuesday,,,,2.56,48,,100,,,,,,,,,,,,48,41,88,0.59,1.48,4.52,1,48,46,86,,
24
+ 21,"February 5, 2025",Wednesday,,,,2.31,51,,95,,,,,,,,,,,,51,39,77,0.51,1.40,3.57,1.01,50,47,79,,
25
+ 22,"February 6, 2025",Thursday,,,,2.35,49,,95,,,,,,,,,,,,50,47,86,1.25,1.27,3.44,1.51,49,51,81,,"injury, no exercise"
26
+ 23,"February 7, 2025",Friday,,,,2.09,52,,90,,,,,,,,,,,,52,41,67,2.13,1.12,2.49,2.25,51,44,77,,"injury, no exercise"
27
+ 24,"February 8, 2025",Saturday,,,,1.31,55,,87,,,,,,,,,,,,51,47,89,0.50,1.45,4.47,1.07,54,54,88,,"injury, no exercise"
28
+ 25,"February 9, 2025",Sunday,,,,1.57,55,,84,,,,,,,,,,,,49,45,75,0.45,1.12,3.33,1.27,53,47,75,,
29
+ 26,"February 10, 2025",Monday,,,,2.45,52,,98,,1.42,,1.04,48,44,94,1.07,1.43,4.53,0.52,51,50,81,1.05,2.03,3.05,1.59,51,52,78,,
30
+ 27,"February 11, 2025",Tuesday,,,,3.09,46,,97,,2.01,,1.01,44,66,96,1.22,2.07,5.35,0.41,46,65,83,1.05,1.57,3.36,2.28,46,75,90,91.5,trying new ultra-hardcore ear plugs. went to bed a bit late
31
+ 28,"February 12, 2025",Wednesday,,,,1.18,48,,77,,1.25,,1.19,44,70,79,1.29,1.20,3.50,1.07,47,67,66,0.37,1.29,2.47,1.27,47,65,67,72.25,
32
+ 29,"February 13, 2025",Thursday,,,,1.5,49,,91,,2.04,,1.06,46,53,90,1.49,2.00,4.02,0.49,49,48,73,0.52,2.24,2.55,1.53,49,61,80,83.5,
33
+ 30,"February 14, 2025",Friday,,,,2.58,49,,94,,2.01,,1.01,46,56,88,1.12,1.42,4.11,1.03,48,49,73,0.42,1.13,3.45,1.33,48,50,72,81.75,
34
+ 31,"February 15, 2025",Saturday,,,,2.56,52,,94,,1.39,,1.27,49,61,92,1.04,1.46,4.03,1.07,51,52,83,1.07,1.30,3.37,1.5,52,54,75,86,
35
+ 32,"February 16, 2025",Sunday,,,,2.18,50,,97,,2.34,,1.01,47,62,86,1.32,1.50,5.46,0.53,49,59,83,1.06,1.21,4.41,2.16,49,61,91,89.25,"i feel like again whoop most agrees with qualitative feeling, i had a good night here, felt better than last night"
36
+ 33,"February 17, 2025",Monday,,,,2.02,48,,88,,1.08,,1.38,45,61,87,1.41,1.08,4.14,0.48,47,54,66,0.29,1.29,2.36,1.49,47,61,72,78.25,
37
+ 34,"February 18, 2025",Tuesday,,,,1.58,47,,88,,1.29,,1.19,44,51,80,1.35,1.14,3.46,1.14,47,50,72,0.51,0.50,3.54,1.22,47,53,67,76.75,
38
+ 35,"February 19, 2025",Wednesday,,,,2.24,53,,100,,1.57,,1.29,49,46,90,1.09,1.15,5.19,1.04,52,42,83,0.40,2.34,3.32,1.33,52,49,81,88.5,"slightly sick, skipping exercise"
39
+ 36,"February 20, 2025",Thursday,,,,0.45,54,,75,,2.00,,1.47,50,42,92,0.48,1.48,4.40,0.58,53,41,83,1.07,1.31,3.20,2.09,53,49,80,82.5,"slightly sick, skipping exercise"
40
+ 37,"February 21, 2025",Friday,,,,2.03,51,,96,,2.15,,1.09,48,57,96,1.45,2.03,5.39,1.14,51,47,92,2.08,1.14,4.35,2.27,51,55,95,94.75,slightly sick; hardcore earplugs
41
+ 38,"February 22, 2025",Saturday,,,,1.43,48,,89,,1.55,,1.01,45,73,97,1.07,1.35,4.53,0.47,48,66,78,0.38,2.47,2.35,1.48,48,73,90,88.5,"slightly sick, skipping exercise; hardcore earplugs"
42
+ 39,"February 23, 2025",Sunday,,,,3.21,50,,100,,1.48,,1.13,47,58,94,0.26,1.52,5.04,0.55,50,49,87,0.37,1.43,3.52,1.57,50,56,94,93.75,hardcore earplugs
43
+ 40,"February 24, 2025",Monday,,,,2.14,48,,96,,2.02,,1.18,45,55,100,1.46,1.15,4.15,1.18,48,49,77,0.27,1.32,3.11,1.39,48,58,76,87.25,"i didn't feel that good when i woke up. i think i slept a bit too short. From 6 to 7 I was just tossing, not sleeping."
44
+ 41,"February 25, 2025",Tuesday,,,,3.18,48,,100,,1.44,,1.18,46,46,94,0.31,1.29,5.18,1.03,49,46,85,0.36,1.22,4.32,1.36,49,52,87,91.5,
45
+ 42,"February 26, 2025",Wednesday,,,,2.05,52,,95,,2.03,,1.09,47,52,91,1.08,1.36,5.13,1.44,52,45,88,0.51,1.33,4.30,2.07,51,48,98,93,felt great this morning. whoop changed its sleep alg allegedly...
46
+ 43,"February 27, 2025",Thursday,,,,1.48,50,,88,,1.57,,1.01,47,53,93,0.48,1.23,4.15,0.58,49,55,79,0.25,1.35,3.20,1.35,49,56,84,86,
47
+ 44,"February 28, 2025",Friday,,,,2.14,51,,97,,2.25,,0.56,48,43,84,1.08,1.53,4.52,0.49,51,47,82,0.33,1.20,4.28,1.2,51,54,81,86,
48
+ 45,"March 1, 2025",Saturday,,,,3.03,52,,99,,2.19,,0.41,49,49,84,1.14,1.40,4.34,1.1,51,49,85,0.23,0.51,4.33,1.51,52,53,83,87.75,
49
+ 46,"March 2, 2025",Sunday,,,,2.34,54,,98,,1.46,,2.04,52,41,84,0.33,1.36,4.11,1.35,54,43,84,0.25,1.31,3.29,1.56,49,54,74,85,
50
+ 47,"March 3, 2025",Monday,,,,3.31,48,,100,,1.46,,1.38,46,56,97,0.48,1.39,4.42,1.03,48,51,86,0.32,1.34,3.49,1.48,47,58,81,91,
51
+ 48,"March 4, 2025",Tuesday,,,,2.57,50,,95,,2.14,,1.3,48,43,93,0.38,1.41,3.58,1.19,50,43,85,0.27,1.37,3.22,1.52,50,49,77,87.5,
52
+ 49,"March 5, 2025",Wednesday,,,,2.2,49,,93,,2.52,,1.23,46,55,93,0.46,2.32,5.54,0.52,49,50,87,0.47,1.43,5.23,2,49,55,100,93.25,
53
+ 50,"March 6, 2025",Thursday,,,,2.27,52,,89,,1.24,,1.07,49,44,72,1.17,1.18,4.17,0.37,52,44,69,0.35,1.20,3.36,0.58,51,50,70,75,
54
+ 51,"March 7, 2025",Friday,,,,1.51,52,,86,,1.55,,1.4,50,42,88,1.15,1.35,3.21,1.21,52,41,79,0.17,1.59,3.08,1.22,52,47,72,81.25,
55
+ 52,"March 8, 2025",Saturday,,,,2.39,51,,97,,1.25,,1.21,48,51,96,0.48,1.47,3.58,1.15,50,49,81,0.31,1.18,3.49,1.45,50,58,77,87.75,
56
+ 53,"March 9, 2025",Sunday,,,,2.22,46,,93,,2.02,,1.44,43,60,97,0.46,1.37,4.16,1.18,46,53,82,0.40,1.58,3.28,1.28,46,64,79,87.75,
57
+ 54,"March 10, 2025",Monday,,,,0.15,48,,61,,2.42,,1.15,45,50,94,1.37,2.03,5.29,0.58,48,46,80,0.25,1.51,5.18,1.25,48,54,100,83.75,"the fact that whoop gave 100 on this night looks bad. i think it's because i spent a long time in bed, regardless of the quality of sleep (~9 hours)"
58
+ 55,"March 11, 2025",Tuesday,,,,3.15,47,,100,,2.58,,1.42,45,54,94,1.03,2.17,5.41,1.04,47,49,89,0.47,2.30,4.02,2.11,46,61,100,95.75,"this morning i felt amazing, *significantly* better than last morning. worked the entire day and felt awesome. damn if only every day was like this what the hell"
59
+ 56,"March 12, 2025",Wednesday,,,,,,,,,1.39,,1.07,44,51,77,1.35,1.28,4.00,1.03,45,51,70,0.41,1.09,4.05,1.21,45,58,85,58,
60
+ 57,"March 13, 2025",Thursday,,,,,,,,,1.24,,2.03,41,56,69,3.45,1.07,4.38,1.15,46,56,66,0.13,1.02,3.29,2.01,46,71,50,46.25,
61
+ 58,"March 14, 2025",Friday,,,,2.43,49,,98,,2.09,,1.25,47,42,84,1.52,1.46,4.32,1.08,49,46,83,1.08,1.35,4.34,1.52,48,52,100,91.25,
62
+ 59,"March 15, 2025",Saturday,,,,0.45,51,,74,,1.31,,0.54,49,36,56,1.46,1.43,4.57,0.58,51,38,80,1.11,1.55,4.18,1.33,51,48,100,77.5,
63
+ 60,"March 16, 2025",Sunday,,,,2.41,44,,91,,2.03,,1.2,43,68,98,0.48,2.02,5.26,1.08,45,63,92,0.41,1.44,4.54,1.46,45,69,100,95.25,feel great
64
+ 61,"March 17, 2025",Monday,,,,4.24,47,,100,,2.15,,1.23,45,56,97,1.30,1.41,5.40,0.52,47,50,86,0.46,1.48,5.17,1.12,47,56,100,95.75,
65
+ 62,"March 18, 2025",Tuesday,,,,1.51,48,,85,,1.06,,0.45,46,49,65,,,,,,,,0.18,1.15,3.16,1.33,48,56,76,,
66
+ 63,"March 19, 2025",Wednesday,,,,1.54,49,,88,,1.43,,0.5,46,48,87,0.41,1.45,3.53,0.57,48,45,79,0.22,1.27,3.34,1.31,48,53,71,81.25,
67
+ 64,"March 20, 2025",Thursday,,,,1.45,55,,78,,1.47,,0.43,53,40,72,1.07,1.08,3.31,0.59,55,39,69,0.29,1.36,2.39,1.4,55,45,64,70.75,"i ate a lot of fiber late at night, lol @ BPM. woke up early, too excited to work on a thing."
68
+ 65,"March 21, 2025",Friday,,,,2,52,,93,,1.26,,0.57,48,57,80,1.00,1.15,4.31,0.55,51,56,75,0.16,1.13,3.57,1.29,51,57,70,79.5,"obsessed with a technical problem, sleeping poorly"
69
+ 66,"March 22, 2025",Saturday,,,,2.06,50,,92,,1.47,,1.36,47,58,98,0.53,1.59,4.13,1.28,49,51,88,0.24,2.04,3.53,1.43,49,56,84,90.5,
70
+ 67,"March 23, 2025",Sunday,,,,2.38,50,,92,,1.51,,1.43,47,49,81,0.46,1.25,3.37,1.14,49,53,81,0.11,1.53,2.26,2.01,49,54,71,81.25,
71
+ 68,"March 24, 2025",Monday,,,,3.36,48,,100,,2.18,,1.25,45,55,95,1.35,2.19,4.47,1.06,48,54,86,1.29,1.28,5.40,1.35,48,66,94,93.75,