FarrelAD commited on
Commit
23ab98a
Β·
1 Parent(s): 284ecbc

init project

Browse files
Files changed (7) hide show
  1. .gitignore +10 -0
  2. .python-version +1 -0
  3. data/dummy_data.csv +201 -0
  4. helpers/__init__.py +28 -0
  5. main.py +43 -0
  6. pyproject.toml +10 -0
  7. uv.lock +0 -0
.gitignore ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.12
data/dummy_data.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Age,Income,Gender,Purchased,Satisfaction
2
+ 56,1066000,Female,Yes,3
3
+ 46,593000,Male,No,3
4
+ 32,579000,Male,No,3
5
+ 25,1183000,Female,No,3
6
+ 38,1933000,Male,No,1
7
+ 56,497000,Male,No,3
8
+ 36,1281000,Female,No,4
9
+ 40,1834000,Male,No,4
10
+ 28,1051000,Female,Yes,1
11
+ 28,443000,Male,Yes,3
12
+ 41,908000,Female,No,3
13
+ 53,1524000,Female,No,3
14
+ 57,1447000,Female,No,5
15
+ 41,486000,Female,Yes,2
16
+ 20,1649000,Male,No,5
17
+ 39,763000,Female,No,2
18
+ 19,1672000,Female,Yes,3
19
+ 41,959000,Female,Yes,3
20
+ 47,1063000,Male,No,5
21
+ 55,1254000,Female,No,5
22
+ 19,702000,Male,Yes,2
23
+ 38,1669000,Female,Yes,4
24
+ 50,1834000,Male,Yes,2
25
+ 29,446000,Male,Yes,5
26
+ 39,1471000,Female,No,5
27
+ 42,1163000,Male,No,1
28
+ 44,788000,Female,Yes,5
29
+ 59,1228000,Female,No,1
30
+ 45,1963000,Female,No,4
31
+ 33,850000,Male,No,2
32
+ 32,637000,Male,No,2
33
+ 20,1171000,Female,Yes,1
34
+ 54,940000,Female,Yes,2
35
+ 24,772000,Male,No,5
36
+ 38,450000,Female,No,3
37
+ 26,1738000,Female,Yes,1
38
+ 56,1621000,Female,No,2
39
+ 35,1934000,Male,No,1
40
+ 21,562000,Male,Yes,1
41
+ 42,443000,Male,No,3
42
+ 31,645000,Female,No,5
43
+ 26,923000,Female,No,1
44
+ 43,1316000,Female,Yes,2
45
+ 19,1895000,Male,No,4
46
+ 37,1180000,Female,No,1
47
+ 45,301000,Female,No,1
48
+ 24,1196000,Female,No,3
49
+ 25,1627000,Female,No,5
50
+ 52,553000,Male,No,4
51
+ 31,1975000,Male,No,2
52
+ 34,752000,Female,No,4
53
+ 53,1360000,Male,No,2
54
+ 57,1483000,Male,Yes,5
55
+ 21,1314000,Female,Yes,2
56
+ 19,308000,Female,No,3
57
+ 23,1556000,Male,Yes,3
58
+ 59,1422000,Female,No,3
59
+ 21,1982000,Male,Yes,3
60
+ 46,1115000,Female,No,4
61
+ 35,507000,Male,No,5
62
+ 43,1454000,Female,No,2
63
+ 51,703000,Male,Yes,2
64
+ 27,451000,Male,No,3
65
+ 53,353000,Male,No,3
66
+ 31,1443000,Female,Yes,1
67
+ 48,1996000,Male,No,5
68
+ 32,927000,Male,No,4
69
+ 25,886000,Female,Yes,2
70
+ 31,1948000,Female,No,1
71
+ 40,1743000,Male,Yes,1
72
+ 57,1745000,Male,Yes,2
73
+ 38,403000,Female,No,4
74
+ 33,553000,Female,Yes,1
75
+ 35,1550000,Female,No,1
76
+ 41,1435000,Female,No,5
77
+ 43,809000,Female,No,4
78
+ 42,1796000,Male,No,1
79
+ 58,398000,Female,No,4
80
+ 46,452000,Male,No,2
81
+ 32,1213000,Male,No,3
82
+ 18,1177000,Male,Yes,1
83
+ 42,637000,Female,No,5
84
+ 24,1121000,Male,No,2
85
+ 26,1486000,Male,Yes,4
86
+ 41,1256000,Female,No,2
87
+ 18,460000,Male,No,1
88
+ 25,1903000,Male,No,4
89
+ 41,1100000,Female,No,3
90
+ 28,697000,Male,No,2
91
+ 34,1600000,Male,Yes,1
92
+ 25,1115000,Male,Yes,5
93
+ 52,1827000,Female,No,4
94
+ 52,1715000,Female,No,2
95
+ 50,1458000,Female,Yes,2
96
+ 22,1518000,Male,No,3
97
+ 59,700000,Male,Yes,3
98
+ 56,939000,Female,Yes,5
99
+ 58,1356000,Male,Yes,5
100
+ 45,987000,Male,Yes,1
101
+ 24,759000,Female,No,1
102
+ 26,1254000,Female,No,5
103
+ 25,769000,Male,Yes,5
104
+ 29,1698000,Male,No,4
105
+ 51,1345000,Male,No,3
106
+ 50,1049000,Female,No,1
107
+ 40,1993000,Female,Yes,3
108
+ 41,337000,Female,Yes,3
109
+ 54,529000,Female,Yes,5
110
+ 52,1688000,Male,Yes,4
111
+ 57,862000,Female,Yes,2
112
+ 39,737000,Female,No,4
113
+ 44,1606000,Female,Yes,4
114
+ 52,326000,Female,Yes,3
115
+ 18,525000,Female,Yes,4
116
+ 52,1600000,Male,Yes,1
117
+ 54,1097000,Male,Yes,3
118
+ 31,1932000,Female,No,1
119
+ 20,583000,Male,Yes,2
120
+ 18,1178000,Female,Yes,3
121
+ 22,1259000,Female,No,2
122
+ 43,1804000,Male,No,3
123
+ 31,752000,Male,Yes,5
124
+ 56,1319000,Female,Yes,4
125
+ 44,1115000,Female,Yes,5
126
+ 26,958000,Female,No,2
127
+ 32,1839000,Male,No,4
128
+ 32,846000,Female,No,3
129
+ 43,1515000,Female,No,4
130
+ 59,1372000,Female,Yes,1
131
+ 30,1835000,Male,No,4
132
+ 49,316000,Female,No,1
133
+ 56,1495000,Female,Yes,4
134
+ 49,1543000,Male,No,1
135
+ 21,457000,Female,No,2
136
+ 47,776000,Female,No,5
137
+ 54,1369000,Male,No,3
138
+ 40,1696000,Female,Yes,4
139
+ 56,817000,Male,No,5
140
+ 32,398000,Male,Yes,3
141
+ 46,1360000,Female,No,3
142
+ 53,579000,Female,No,1
143
+ 30,1672000,Female,Yes,2
144
+ 49,796000,Female,Yes,2
145
+ 24,601000,Male,Yes,5
146
+ 39,480000,Female,Yes,2
147
+ 45,906000,Male,Yes,4
148
+ 19,1422000,Female,No,2
149
+ 59,999000,Female,No,5
150
+ 23,1292000,Female,No,2
151
+ 45,1439000,Male,No,4
152
+ 45,490000,Female,No,1
153
+ 37,552000,Female,No,5
154
+ 47,1280000,Female,No,1
155
+ 28,1227000,Female,Yes,1
156
+ 45,1484000,Male,Yes,1
157
+ 42,1579000,Female,Yes,3
158
+ 56,1646000,Male,Yes,3
159
+ 50,427000,Male,Yes,1
160
+ 18,317000,Male,Yes,5
161
+ 44,865000,Male,No,4
162
+ 30,869000,Male,No,4
163
+ 58,1646000,Male,Yes,2
164
+ 20,985000,Female,Yes,5
165
+ 56,925000,Male,Yes,3
166
+ 23,1611000,Male,No,1
167
+ 25,1153000,Male,No,2
168
+ 44,1986000,Female,No,4
169
+ 26,1261000,Female,Yes,3
170
+ 54,1962000,Male,No,3
171
+ 50,454000,Female,No,1
172
+ 59,789000,Male,Yes,4
173
+ 41,1709000,Male,No,5
174
+ 32,1084000,Female,No,3
175
+ 49,1427000,Male,No,1
176
+ 49,1716000,Female,No,5
177
+ 41,545000,Female,No,4
178
+ 58,1499000,Male,No,3
179
+ 29,1362000,Male,No,5
180
+ 56,1800000,Female,No,5
181
+ 19,1058000,Male,No,5
182
+ 20,837000,Male,No,3
183
+ 54,1220000,Male,No,3
184
+ 34,707000,Female,No,2
185
+ 19,824000,Female,No,4
186
+ 19,1127000,Male,Yes,1
187
+ 45,1829000,Female,No,5
188
+ 40,1202000,Female,No,2
189
+ 54,335000,Female,No,1
190
+ 49,984000,Female,No,2
191
+ 50,319000,Female,Yes,3
192
+ 18,620000,Male,No,5
193
+ 36,811000,Male,No,1
194
+ 19,699000,Male,No,1
195
+ 43,953000,Female,No,1
196
+ 49,1271000,Female,No,1
197
+ 23,770000,Male,No,1
198
+ 49,1466000,Female,Yes,2
199
+ 21,1415000,Male,Yes,5
200
+ 28,1677000,Male,No,3
201
+ 34,1133000,Male,Yes,3
helpers/__init__.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ A file that contains some helpers functions
3
+
4
+ """
5
+
6
+
7
+ from typing import IO
8
+ import pandas as pd
9
+ import plotly.express as px
10
+ from plotly.graph_objs._figure import Figure
11
+
12
+
13
+ def load_data(file: IO) -> tuple[str
14
+ , str]:
15
+ global df
16
+ df = pd.read_csv(file.name)
17
+ return df.head().to_html(), f"Rows: {df.shape[0]}, Cols: {df.shape[1]}"
18
+
19
+ def show_summary() -> str:
20
+ if df is None:
21
+ return "Please upload a dataset first."
22
+ return df.describe().to_html()
23
+
24
+ def plot_column(colname: str) -> Figure | str:
25
+ if df is None:
26
+ return "Please upload a dataset first."
27
+ fig = px.histogram(df, x=colname)
28
+ return fig
main.py ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Any
2
+ import gradio as gr
3
+ import pandas as pd
4
+ import helpers
5
+
6
+ # --- Global Variables ---
7
+ df = None
8
+
9
+ # --- Gradio App ---
10
+ with gr.Blocks() as demo:
11
+ gr.Markdown("# πŸ“Š Datathon Dashboard with Gradio")
12
+
13
+ with gr.Tab("Dataset Overview"):
14
+ file_input = gr.File(label="Upload CSV", file_types=[".csv"])
15
+ preview = gr.HTML()
16
+ shape = gr.Textbox(label="Dataset Info")
17
+
18
+ file_input.change(helpers.load_data, inputs=file_input, outputs=[preview, shape])
19
+
20
+ with gr.Tab("Exploratory Data Analysis"):
21
+ gr.Markdown("## πŸ” EDA Section")
22
+ col_dropdown = gr.Dropdown(label="Select column to visualize", choices=[], interactive=True)
23
+ plot = gr.Plot()
24
+
25
+ # When file uploaded, update dropdown
26
+ def update_dropdown(file) -> dict[str, Any]:
27
+ d = pd.read_csv(file.name)
28
+ return gr.update(choices=d.columns.tolist())
29
+
30
+ file_input.change(update_dropdown, inputs=file_input, outputs=col_dropdown)
31
+ col_dropdown.change(helpers.plot_column, inputs=col_dropdown, outputs=plot)
32
+
33
+ with gr.Tab("Modeling (Optional)"):
34
+ gr.Markdown("You can add ML model training or predictions here.")
35
+
36
+ with gr.Tab("Insights"):
37
+ gr.Markdown("## πŸ“Œ Insights & Conclusion")
38
+ gr.Markdown("Write your story, insights, and recommendations here.")
39
+
40
+
41
+
42
+ if __name__ == "__main__":
43
+ demo.launch()
pyproject.toml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "gradio-dashboard-test"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ dependencies = [
8
+ "gradio>=5.44.0",
9
+ "plotly>=6.3.0",
10
+ ]
uv.lock ADDED
The diff for this file is too large to render. See raw diff