JUNGU commited on
Commit
9a5311f
Β·
verified Β·
1 Parent(s): 49032a8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -38
app.py CHANGED
@@ -9,6 +9,9 @@ import matplotlib.font_manager as fm
9
  from scipy import stats
10
  import os
11
 
 
 
 
12
  # ν•œκΈ€ 폰트 μ„€μ •
13
  def set_font():
14
  font_path = "Pretendard-Bold.ttf" # μ‹€μ œ 폰트 파일 경둜둜 λ³€κ²½ν•΄μ£Όμ„Έμš”
@@ -39,6 +42,18 @@ def manage_session_state():
39
  if 'filtered_data' not in st.session_state:
40
  st.session_state.filtered_data = None
41
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
  SAMPLE_DATA_FILES = [
44
  {"name": "κ³Όλͺ©λ³„ λ…Έλ ₯κ³Ό 성취도", "file": "subject.xlsx"},
@@ -204,23 +219,39 @@ def perform_analysis():
204
 
205
  # μŠ¬λΌμ΄μ„œ 생성
206
  create_slicers(st.session_state.processed_data)
207
-
208
- # μš”μ•½ 톡계
209
- st.write("μš”μ•½ 톡계:")
210
- st.write(st.session_state.filtered_data.describe())
211
 
212
- # 상관관계 히트맡
213
- st.subheader("상관관계 히트맡")
214
- plot_correlation_heatmap(st.session_state.filtered_data)
 
 
 
 
 
 
 
 
 
215
 
216
- # μ‚¬μš©μžκ°€ μ„ νƒν•œ 두 λ³€μˆ˜μ— λŒ€ν•œ 산점도 및 νšŒκ·€ 뢄석
217
- st.subheader("두 λ³€μˆ˜ κ°„μ˜ 관계 뢄석")
218
- x_var = st.selectbox("XμΆ• λ³€μˆ˜ 선택", options=st.session_state.numeric_columns, key='x_var')
219
- y_var = st.selectbox("YμΆ• λ³€μˆ˜ 선택", options=[col for col in st.session_state.numeric_columns if col != x_var], key='y_var')
220
 
221
- if x_var and y_var:
222
- plot_scatter_with_regression(st.session_state.filtered_data, x_var, y_var)
 
 
 
 
 
 
 
223
 
 
 
 
 
 
224
  def main():
225
  st.title("μΈν„°λž™ν‹°λΈŒ EDA νˆ΄ν‚·")
226
 
@@ -246,41 +277,22 @@ def main():
246
  st.session_state.data = manual_data_entry()
247
 
248
  if st.session_state.data is not None:
249
- st.subheader("μ—΄ 이름 μˆ˜μ •")
250
- st.write("μ—΄ 이름을 ν™•μΈν•˜κ³  ν•„μš”ν•œ 경우 μˆ˜μ •ν•˜μ„Έμš”:")
251
-
252
- # μ—΄ 이름 νŽΈμ§‘μ„ μœ„ν•œ λ°μ΄ν„°ν”„λ ˆμž„ 생성
253
- column_names = pd.DataFrame({'ν˜„μž¬ μ—΄ 이름': st.session_state.data.columns})
254
- edited_column_names = st.data_editor(
255
- column_names,
256
- num_rows="fixed",
257
- key="column_name_editor",
258
- column_config={
259
- "ν˜„μž¬ μ—΄ 이름": st.column_config.TextColumn(
260
- "μ—΄ 이름",
261
- help="μƒˆλ‘œμš΄ μ—΄ 이름을 μž…λ ₯ν•˜μ„Έμš”",
262
- max_chars=50
263
- )
264
- }
265
- )
266
-
267
- # μˆ˜μ •λœ μ—΄ 이름 적용
268
- st.session_state.data.columns = edited_column_names['ν˜„μž¬ μ—΄ 이름']
269
-
270
  st.subheader("데이터 미리보기 및 μˆ˜μ •")
271
  st.write("데이터λ₯Ό ν™•μΈν•˜κ³  ν•„μš”ν•œ 경우 μˆ˜μ •ν•˜μ„Έμš”:")
272
 
273
  edited_data = st.data_editor(
274
  st.session_state.data,
275
  num_rows="dynamic",
276
- key="main_data_editor" # μ—¬κΈ°μ„œ ν‚€λ₯Ό λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€
277
  )
278
 
279
  if st.button("데이터 뢄석 μ‹œμž‘", key="start_analysis") or st.session_state.analysis_performed:
280
- if not st.session_state.analysis_performed:
281
- st.session_state.processed_data = preprocess_data(edited_data)
282
- st.session_state.analysis_performed = True
 
283
  perform_analysis()
284
 
 
285
  if __name__ == "__main__":
286
  main()
 
9
  from scipy import stats
10
  import os
11
 
12
+ #μ‚¬μ΄μ¦ˆ 크게
13
+ st.set_page_config(layout="wide")
14
+
15
  # ν•œκΈ€ 폰트 μ„€μ •
16
  def set_font():
17
  font_path = "Pretendard-Bold.ttf" # μ‹€μ œ 폰트 파일 경둜둜 λ³€κ²½ν•΄μ£Όμ„Έμš”
 
42
  if 'filtered_data' not in st.session_state:
43
  st.session_state.filtered_data = None
44
 
45
+ def reset_session_state():
46
+ # μ„Έμ…˜ μƒνƒœ μ΄ˆκΈ°ν™”
47
+ st.session_state.data = None
48
+ st.session_state.processed_data = None
49
+ st.session_state.filtered_data = None
50
+ st.session_state.numeric_columns = []
51
+ st.session_state.categorical_columns = []
52
+ st.session_state.x_var = None
53
+ st.session_state.y_var = None
54
+ st.session_state.slicers = {}
55
+ st.session_state.analysis_performed = False
56
+
57
 
58
  SAMPLE_DATA_FILES = [
59
  {"name": "κ³Όλͺ©λ³„ λ…Έλ ₯κ³Ό 성취도", "file": "subject.xlsx"},
 
219
 
220
  # μŠ¬λΌμ΄μ„œ 생성
221
  create_slicers(st.session_state.processed_data)
 
 
 
 
222
 
223
+ # 데이터가 변경될 λ•Œλ§ˆλ‹€ ν•„ν„°λ§λœ 데이터 μ—…λ°μ΄νŠΈ
224
+ st.session_state.filtered_data = apply_slicers(st.session_state.processed_data)
225
+
226
+ # 2μ—΄ λ ˆμ΄μ•„μ›ƒ 생성
227
+ col1, col2 = st.columns(2)
228
+
229
+
230
+ with col1:
231
+
232
+ # μš”μ•½ 톡계
233
+ st.write("μš”μ•½ 톡계:")
234
+ st.write(st.session_state.filtered_data.describe())
235
 
236
+ # 상관관계 히트맡
237
+ st.subheader("상관관계 히트맡")
238
+ plot_correlation_heatmap(st.session_state.filtered_data)
 
239
 
240
+ with col2:
241
+
242
+ # μ‚¬μš©μžκ°€ μ„ νƒν•œ 두 λ³€μˆ˜μ— λŒ€ν•œ 산점도 및 νšŒκ·€ 뢄석
243
+ st.subheader("두 λ³€μˆ˜ κ°„μ˜ 관계 뢄석")
244
+ x_var = st.selectbox("XμΆ• λ³€μˆ˜ 선택", options=st.session_state.numeric_columns, key='x_var')
245
+ y_var = st.selectbox("YμΆ• λ³€μˆ˜ 선택", options=[col for col in st.session_state.numeric_columns if col != x_var], key='y_var')
246
+
247
+ if x_var and y_var:
248
+ plot_scatter_with_regression(st.session_state.filtered_data, x_var, y_var)
249
 
250
+ # 'λ‹€λ₯Έ 데이터 λΆ„μ„ν•˜κΈ°' λ²„νŠΌ μΆ”κ°€
251
+ if st.button("λ‹€λ₯Έ 데이터 λΆ„μ„ν•˜κΈ°"):
252
+ reset_session_state()
253
+ st.experimental_rerun()
254
+
255
  def main():
256
  st.title("μΈν„°λž™ν‹°λΈŒ EDA νˆ΄ν‚·")
257
 
 
277
  st.session_state.data = manual_data_entry()
278
 
279
  if st.session_state.data is not None:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  st.subheader("데이터 미리보기 및 μˆ˜μ •")
281
  st.write("데이터λ₯Ό ν™•μΈν•˜κ³  ν•„μš”ν•œ 경우 μˆ˜μ •ν•˜μ„Έμš”:")
282
 
283
  edited_data = st.data_editor(
284
  st.session_state.data,
285
  num_rows="dynamic",
286
+ key="main_data_editor"
287
  )
288
 
289
  if st.button("데이터 뢄석 μ‹œμž‘", key="start_analysis") or st.session_state.analysis_performed:
290
+ st.session_state.processed_data = preprocess_data(edited_data)
291
+ st.session_state.analysis_performed = True
292
+
293
+ if st.session_state.analysis_performed:
294
  perform_analysis()
295
 
296
+
297
  if __name__ == "__main__":
298
  main()