Kims12 commited on
Commit
ae3fa50
·
verified ·
1 Parent(s): f44c2f6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -16
app.py CHANGED
@@ -1,4 +1,3 @@
1
- # app.py
2
  import gradio as gr
3
  import pandas as pd
4
  from datetime import datetime
@@ -15,32 +14,50 @@ def analyze_reviews(file_path, selected_year):
15
  df = pd.read_excel(file_path)
16
  logger.info("엑셀 파일 읽기 완료")
17
 
18
- # 선택된 연도
19
  current_year = 2025
20
- selected_year = int(selected_year)
21
 
22
- logger.info(f"데이터 필터링: {selected_year}년")
23
- # B열이 리뷰 날짜라고 가정하고, '리뷰날짜' 열의 이름을 확인 변경
24
  if '리뷰날짜' not in df.columns:
25
  df.rename(columns={df.columns[1]: '리뷰날짜'}, inplace=True)
26
 
27
  # 리뷰 날짜를 datetime으로 변환
28
  df['리뷰날짜'] = pd.to_datetime(df['리뷰날짜'], errors='coerce')
29
- # 선택된 연도 데이터 필터링
30
- df_selected = df[df['리뷰날짜'].dt.year == selected_year]
31
- logger.info(f"{selected_year}년 데이터 필터링 완료")
32
 
33
  # 년월별 리뷰 건수 계산
34
  logger.info("월별 리뷰 건수 집계 시작")
35
- df_selected['년월'] = df_selected['리뷰날짜'].dt.strftime('%Y-%m')
36
- review_counts = df_selected.groupby('년월').size().reset_index(name='리뷰건수')
37
  logger.info("월별 리뷰 건수 집계 완료")
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  # 새로운 시트에 저장
40
  logger.info("새로운 시트 '선택월별 리뷰건수' 생성 시작")
41
  with pd.ExcelWriter(file_path, engine='openpyxl', mode='a') as writer:
42
- review_counts.to_excel(writer, sheet_name='선택월별 리뷰건수', index=False)
43
  logger.info("새로운 시트 '선택월별 리뷰건수' 생성 완료")
 
44
 
45
  return file_path
46
  except Exception as e:
@@ -54,14 +71,15 @@ def main():
54
  gr.Markdown("### 리뷰 분석 스페이스")
55
  with gr.Row():
56
  file_input = gr.File(label="원본 엑셀 파일 업로드", file_types=[".xlsx"])
57
- with gr.Column():
58
- current_year = 2025
59
- years = [str(current_year - i) for i in range(5)]
60
- year_radio = gr.Radio(label="분석할 연도 선택", choices=years, value=str(current_year))
61
  file_output = gr.File(label="분석된 엑셀 파일 다운로드", type="filepath")
 
 
 
 
62
  analyze_button = gr.Button("분석")
63
 
64
- analyze_button.click(fn=analyze_reviews, inputs=[file_input, year_radio], outputs=file_output)
 
65
 
66
  demo.launch()
67
 
 
 
1
  import gradio as gr
2
  import pandas as pd
3
  from datetime import datetime
 
14
  df = pd.read_excel(file_path)
15
  logger.info("엑셀 파일 읽기 완료")
16
 
17
+ # 현재 연도
18
  current_year = 2025
19
+ start_year = current_year - 3 # 최근 3년
20
 
21
+ logger.info(f"데이터 필터링: {start_year}년부터 {current_year}년까지")
22
+ # B열이 리뷰 날짜라고 가정하고, 'B' 열의 이름을 '리뷰날짜'로 변경
23
  if '리뷰날짜' not in df.columns:
24
  df.rename(columns={df.columns[1]: '리뷰날짜'}, inplace=True)
25
 
26
  # 리뷰 날짜를 datetime으로 변환
27
  df['리뷰날짜'] = pd.to_datetime(df['리뷰날짜'], errors='coerce')
28
+ # 최근 3년 데이터 필터링
29
+ df_recent = df[df['리뷰날짜'].dt.year >= start_year]
30
+ logger.info("최근 3년 데이터 필터링 완료")
31
 
32
  # 년월별 리뷰 건수 계산
33
  logger.info("월별 리뷰 건수 집계 시작")
34
+ df_recent['년월'] = df_recent['리뷰날짜'].dt.strftime('%Y-%m')
35
+ review_counts = df_recent.groupby('년월').size().reset_index(name='리뷰건수')
36
  logger.info("월별 리뷰 건수 집계 완료")
37
 
38
+ # 새로운 시트에 저장
39
+ logger.info("새로운 시트 '월별 리뷰건수' 생성 시작")
40
+ with pd.ExcelWriter(file_path, engine='openpyxl', mode='a') as writer:
41
+ review_counts.to_excel(writer, sheet_name='월별 리뷰건수', index=False)
42
+ logger.info("새로운 시트 '월별 리뷰건수' 생성 완료")
43
+
44
+ # 요청사항 추가 시작
45
+ logger.info("선택년 데이터 필터링 및 분석 시작")
46
+ # 선택한 연도로 데이터 필터링
47
+ df_selected = df[df['리뷰날짜'].dt.year == selected_year]
48
+ logger.info(f"선택한 연도 {selected_year} 데이터 필터링 완료")
49
+
50
+ # 년월별 리뷰 건수 계산
51
+ df_selected['년월'] = df_selected['리뷰날짜'].dt.strftime('%Y-%m')
52
+ selected_review_counts = df_selected.groupby('년월').size().reset_index(name='리뷰건수')
53
+ logger.info("선택년 월별 리뷰 건수 집계 완료")
54
+
55
  # 새로운 시트에 저장
56
  logger.info("새로운 시트 '선택월별 리뷰건수' 생성 시작")
57
  with pd.ExcelWriter(file_path, engine='openpyxl', mode='a') as writer:
58
+ selected_review_counts.to_excel(writer, sheet_name='선택월별 리뷰건수', index=False)
59
  logger.info("새로운 시트 '선택월별 리뷰건수' 생성 완료")
60
+ # 요청사항 추가 끝
61
 
62
  return file_path
63
  except Exception as e:
 
71
  gr.Markdown("### 리뷰 분석 스페이스")
72
  with gr.Row():
73
  file_input = gr.File(label="원본 엑셀 파일 업로드", file_types=[".xlsx"])
 
 
 
 
74
  file_output = gr.File(label="분석된 엑셀 파일 다운로드", type="filepath")
75
+ with gr.Row():
76
+ # 최근 5년을 라디오 버튼으로 선택
77
+ year_options = [str(year) for year in range(2021, 2026)] # 2021년부터 2025년까지
78
+ year_selection = gr.Radio(label="분석할 연도 선택", choices=year_options, value="2025")
79
  analyze_button = gr.Button("분석")
80
 
81
+ # 버튼 클릭 시 analyze_reviews 함수 호출, 파일과 선택한 연도 전달
82
+ analyze_button.click(fn=analyze_reviews, inputs=[file_input, year_selection], outputs=file_output)
83
 
84
  demo.launch()
85