dltmdgus commited on
Commit
9ff09ee
ยท
verified ยท
1 Parent(s): 1d516b1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -66
app.py CHANGED
@@ -3,48 +3,34 @@ import pandas as pd
3
  import matplotlib.pyplot as plt
4
  import seaborn as sns
5
  import matplotlib.font_manager as fm
6
- from matplotlib.backends.backend_pdf import PdfPages
7
- from io import BytesIO
8
 
9
  # ํฐํŠธ ์„ค์ •
10
- font_path = r"H2GTRM.TTF"
11
  font_prop = fm.FontProperties(fname=font_path, size=12)
12
  plt.rcParams['font.family'] = font_prop.get_name()
13
  plt.rcParams['axes.unicode_minus'] = False
14
 
15
  # ์‚ฌ์ด๋“œ๋ฐ”์— ๋ชฉ์ฐจ ์ถ”๊ฐ€
16
  st.sidebar.title("๋ชฉ์ฐจ")
17
- page = st.sidebar.radio("ํŽ˜์ด์ง€ ์„ ํƒ", ["๊ฒฐ๊ณผ 1", "๊ฒฐ๊ณผ 2", "๊ฒฐ๊ณผ 3"])
18
 
19
- if page == "๊ฒฐ๊ณผ 1":
20
- st.title("๊ฒฐ๊ณผ 1: ๋ชจ๋“  ๋Œ€์ถœ ๋„์„œ ์ƒ์œ„ 10๊ฐœ")
21
 
22
- # ๋ฐ์ดํ„ฐ ๋กœ๋“œ
23
- file_path = r'book_analysis_final.xlsx'
24
- df = pd.read_excel(file_path, sheet_name=2)
25
-
26
- # ์ „์ฒด ๋„์„œ ๋Œ€์ถœ ๊ฑด์ˆ˜ ์ง‘๊ณ„
27
- book_patterns = df.groupby(['๋„์„œ๋ช…'])['๋Œ€์ถœ๊ฑด์ˆ˜'].sum().reset_index()
28
-
29
- # ์ƒ์œ„ 10๊ฐœ ๋„์„œ ์ถ”์ถœ
30
- top_books = book_patterns.nlargest(10, '๋Œ€์ถœ๊ฑด์ˆ˜')
31
-
32
- # ์ƒ์œ„ 10๊ฐœ์˜ ๋„์„œ ์‹œ๊ฐํ™”
33
- st.write("์ƒ์œ„ 10๊ฐœ ๋Œ€์ถœ ๋„์„œ")
34
- fig, ax = plt.subplots(figsize=(12, 8))
35
- sns.barplot(data=top_books, x='๋„์„œ๋ช…', y='๋Œ€์ถœ๊ฑด์ˆ˜', palette='viridis', ax=ax)
36
- ax.set_title('๋ชจ๋“  ๋Œ€์ถœ ๋„์„œ ์ƒ์œ„ 10๊ฐœ')
37
- ax.set_xlabel('๋„์„œ๋ช…')
38
- ax.set_ylabel('๋Œ€์ถœ๊ฑด์ˆ˜')
39
- plt.xticks(rotation=45, ha='right')
40
- st.pyplot(fig)
41
 
42
- elif page == "๊ฒฐ๊ณผ 2":
43
- st.title("๊ฒฐ๊ณผ 2: ์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 5๊ฐœ ๋Œ€์ถœ ๋„์„œ")
44
 
45
  # ๋ฐ์ดํ„ฐ ๋กœ๋“œ
46
- file_path = r'book_analysis_final.xlsx'
47
- df = pd.read_excel(file_path, sheet_name=2)
 
48
 
49
  # ์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ๋„์„œ ๋Œ€์ถœ ๊ฑด์ˆ˜ ์ง‘๊ณ„
50
  book_patterns = df.groupby(['๋„์„œ๋ช…', '์—ฐ๋ น', '์„ฑ๋ณ„'])['๋Œ€์ถœ๊ฑด์ˆ˜'].sum().reset_index()
@@ -76,12 +62,13 @@ elif page == "๊ฒฐ๊ณผ 2":
76
  plt.xticks(rotation=45, ha='right')
77
  st.pyplot(fig)
78
 
79
- elif page == "๊ฒฐ๊ณผ 3":
80
- st.title("๊ฒฐ๊ณผ 3: ์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 3๊ฐœ ์žฅ๋ฅด")
81
 
82
  # ๋ฐ์ดํ„ฐ ๋กœ๋“œ
83
- file_path = r'book_analysis_final.xlsx'
84
- df = pd.read_excel(file_path, sheet_name=2)
 
85
 
86
  # ์—ฐ๋ น๋Œ€ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ
87
  df['์—ฐ๋ น๋Œ€'] = df['์—ฐ๋ น'].astype(str)
@@ -95,38 +82,9 @@ elif page == "๊ฒฐ๊ณผ 3":
95
  sns.heatmap(genre_age_sex, annot=False, cmap='YlGnBu', linewidths=0.5, ax=ax)
96
  ax.set_title('์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์žฅ๋ฅด ์„ ํ˜ธ๋„')
97
  st.pyplot(fig)
98
-
99
- # ์ƒ์œ„ 3๊ฐœ์˜ ์ฃผ์ œ๋ถ„๋ฅ˜๋ช… ์ถ”์ถœ
100
- top_genres = df.groupby(['์—ฐ๋ น๋Œ€', '์„ฑ๋ณ„', '์ฃผ์ œ๋ถ„๋ฅ˜๋ช…'])['๋Œ€์ถœ๊ฑด์ˆ˜'].sum().reset_index()
101
- top_genres = top_genres.sort_values(by=['์—ฐ๋ น๋Œ€', '์„ฑ๋ณ„', '๋Œ€์ถœ๊ฑด์ˆ˜'], ascending=[True, True, False])
102
- top_3_genres = top_genres.groupby(['์—ฐ๋ น๋Œ€', '์„ฑ๋ณ„']).head(3).reset_index(drop=True)
103
 
104
- # ์—ฐ๋ น๋Œ€์™€ ์„ฑ๋ณ„ ์„ ํƒ
105
- ages = top_3_genres['์—ฐ๋ น๋Œ€'].unique()
106
- genders = top_3_genres['์„ฑ๋ณ„'].unique()
107
 
108
- selected_age = st.selectbox("์—ฐ๋ น๋Œ€ ์„ ํƒ", options=ages)
109
- selected_gender = st.selectbox("์„ฑ๋ณ„ ์„ ํƒ", options=genders)
110
-
111
- filtered_genres = top_3_genres[(top_3_genres['์—ฐ๋ น๋Œ€'] == selected_age) & (top_3_genres['์„ฑ๋ณ„'] == selected_gender)]
112
-
113
- # ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์‹œ๊ฐํ™”
114
- if not filtered_genres.empty:
115
- st.write(f"์ƒ์œ„ 3 ์žฅ๋ฅด (์—ฐ๋ น๋Œ€: {selected_age}, ์„ฑ๋ณ„: {selected_gender})")
116
- fig, ax = plt.subplots(figsize=(10, 6))
117
- sns.barplot(data=filtered_genres, x='์ฃผ์ œ๋ถ„๋ฅ˜๏ฟฝ๏ฟฝ', y='๋Œ€์ถœ๊ฑด์ˆ˜', palette='viridis', ax=ax)
118
- ax.set_title(f'{selected_age} - {selected_gender}์˜ ์ƒ์œ„ 3 ์žฅ๋ฅด')
119
- ax.set_xlabel('์ฃผ์ œ๋ถ„๋ฅ˜๋ช…')
120
- ax.set_ylabel('๋Œ€์ถœ๊ฑด์ˆ˜')
121
- plt.xticks(rotation=45, ha='right')
122
- st.pyplot(fig)
123
-
124
- # ์ƒ์œ„ 3 ์žฅ๋ฅด PDF ๋‹ค์šด๋กœ๋“œ
125
- pdf_path = r'C:\Users\user\Desktop\๋„์„œ๊ด€_๊ณต๋ชจ์ „\์ตœ์ข…\6_๋„์„œ๋Œ€์ถœ ํŒจํ„ด ๋ถ„์„\์ƒ์œ„_3_์žฅ๋ฅด.pdf'
126
- with open(pdf_path, "rb") as f:
127
- st.download_button(
128
- label="์ƒ์œ„ 3 ์žฅ๋ฅด PDF ๋‹ค์šด๋กœ๋“œ",
129
- data=f,
130
- file_name="์ƒ์œ„_3_์žฅ๋ฅด.pdf",
131
- mime="application/pdf"
132
- )
 
3
  import matplotlib.pyplot as plt
4
  import seaborn as sns
5
  import matplotlib.font_manager as fm
6
+ from PIL import Image
 
7
 
8
  # ํฐํŠธ ์„ค์ •
9
+ font_path = r"C:\Users\user\Desktop\๋„์„œ๊ด€_๊ณต๋ชจ์ „\์ตœ์ข…\H2GTRM.TTF"
10
  font_prop = fm.FontProperties(fname=font_path, size=12)
11
  plt.rcParams['font.family'] = font_prop.get_name()
12
  plt.rcParams['axes.unicode_minus'] = False
13
 
14
  # ์‚ฌ์ด๋“œ๋ฐ”์— ๋ชฉ์ฐจ ์ถ”๊ฐ€
15
  st.sidebar.title("๋ชฉ์ฐจ")
16
+ page = st.sidebar.radio("ํŽ˜์ด์ง€ ์„ ํƒ", ["๋ชจ๋“  ๋Œ€์ถœ ๋„์„œ ์ƒ์œ„ 10๊ฐœ", "์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 5๊ฐœ ๋Œ€์ถœ ๋„์„œ", "์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 3๊ฐœ ์žฅ๋ฅด"])
17
 
18
+ if page == "๋ชจ๋“  ๋Œ€์ถœ ๋„์„œ ์ƒ์œ„ 10๊ฐœ":
19
+ st.title("๋ชจ๋“  ๋Œ€์ถœ ๋„์„œ ์ƒ์œ„ 10๊ฐœ")
20
 
21
+ # ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
22
+ image_path = r'C:\Users\user\Desktop\๋„์„œ๊ด€_๊ณต๋ชจ์ „\์ตœ์ข…\6_๋„์„œ๋Œ€์ถœ ํŒจํ„ด ๋ถ„์„\top_books_plot_page-0001.jpg'
23
+
24
+ # ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ํ‘œ์‹œ
25
+ st.image(image_path, caption="๋ชจ๋“  ๋Œ€์ถœ ๋„์„œ ์ƒ์œ„ 10๊ฐœ", use_column_width=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
+ elif page == "์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 5๊ฐœ ๋Œ€์ถœ ๋„์„œ":
28
+ st.title("์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 5๊ฐœ ๋Œ€์ถœ ๋„์„œ")
29
 
30
  # ๋ฐ์ดํ„ฐ ๋กœ๋“œ
31
+ file_path = r'C:\Users\user\Desktop\๋„์„œ๊ด€_๊ณต๋ชจ์ „\์ตœ์ข…\6_๋„์„œ๋Œ€์ถœ ํŒจํ„ด ๋ถ„์„\์ƒ์œ„_5_๋„์„œ.xlsx'
32
+ df = pd.read_excel(file_path, sheet_name=None)
33
+ df = pd.concat(df.values()) # ๋ชจ๋“  ์‹œํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉ
34
 
35
  # ์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ๋„์„œ ๋Œ€์ถœ ๊ฑด์ˆ˜ ์ง‘๊ณ„
36
  book_patterns = df.groupby(['๋„์„œ๋ช…', '์—ฐ๋ น', '์„ฑ๋ณ„'])['๋Œ€์ถœ๊ฑด์ˆ˜'].sum().reset_index()
 
62
  plt.xticks(rotation=45, ha='right')
63
  st.pyplot(fig)
64
 
65
+ elif page == "์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 3๊ฐœ ์žฅ๋ฅด":
66
+ st.title("์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์ƒ์œ„ 3๊ฐœ ์žฅ๋ฅด")
67
 
68
  # ๋ฐ์ดํ„ฐ ๋กœ๋“œ
69
+ file_path = r'C:\Users\user\Desktop\๋„์„œ๊ด€_๊ณต๋ชจ์ „\์ตœ์ข…\6_๋„์„œ๋Œ€์ถœ ํŒจํ„ด ๋ถ„์„\์ƒ์œ„_3_์žฅ๋ฅด.xlsx'
70
+ df = pd.read_excel(file_path, sheet_name=None)
71
+ df = pd.concat(df.values()) # ๋ชจ๋“  ์‹œํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉ
72
 
73
  # ์—ฐ๋ น๋Œ€ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ
74
  df['์—ฐ๋ น๋Œ€'] = df['์—ฐ๋ น'].astype(str)
 
82
  sns.heatmap(genre_age_sex, annot=False, cmap='YlGnBu', linewidths=0.5, ax=ax)
83
  ax.set_title('์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์žฅ๋ฅด ์„ ํ˜ธ๋„')
84
  st.pyplot(fig)
 
 
 
 
 
85
 
86
+ # ํžˆํŠธ๋งต ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
87
+ heat_map_image_path = r'C:\Users\user\Desktop\๋„์„œ๊ด€_๊ณต๋ชจ์ „\์ตœ์ข…\6_๋„์„œ๋Œ€์ถœ ํŒจํ„ด ๋ถ„์„\heat_map_page-0001.jpg'
 
88
 
89
+ # ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ํ‘œ์‹œ
90
+ st.image(heat_map_image_path, caption="์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ์žฅ๋ฅด ์„ ํ˜ธ๋„ ํžˆํŠธ๋งต", use_column_width=True)