po5302006 commited on
Commit
5e55a06
โ€ข
1 Parent(s): 0800821

test commit

Browse files
.gitattributes DELETED
@@ -1,35 +0,0 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Overall.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Overall"
6
+ exec_page_home(theme)
README.md CHANGED
@@ -1,12 +1,52 @@
1
- ---
2
- title: ForcaSteam
3
- emoji: ๐Ÿ“Š
4
- colorFrom: red
5
- colorTo: green
6
- sdk: streamlit
7
- sdk_version: 1.29.0
8
- app_file: app.py
9
- pinned: false
10
- ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Predictive Analysis and Feature Importance of Successful Video Games
2
+
3
+ ## Team Details:
4
+ **Team:** KAP Team
5
+ **Members:**
6
+ - Artem Guz
7
+ - Kevin Dsouza
8
+ - Peter Wong
9
+
10
+ ## Overview:
11
+ **Framework:** streamlit
12
+
13
+ **Objective:**
14
+ To analyze various video game datasets to determine the characteristics of successful games and develop a Machine Learning model that can predict the success of a video game based on its features, primarily focusing on Genre.
15
+
16
+ **Datasets:**
17
+ - Popular Video Games
18
+ - Video Games Data
19
+ - Best Year for Video Games
20
+
21
+ ## Project Outline:
22
+ Depending on our final datasets, we will extract and compare the various variables, such as Genre, Developer, Release Date, and compare with variables commonly used to measure success for video games. This would be Total Sales, Region Sales, Ratings and more. Then, we will use this data to develop a model to determine if a game would be successful based on user input and idea.
23
+
24
+ ## Practical Application:
25
+ This project can provide valuable insights to game developers by highlighting the features and genres that are most likely to yield successful games, allowing them to make more informed decisions during the game development process.
26
+
27
+ ### 1.0 Overall Concept:
28
+ Depending on our final datasets, we will extract and compare the various variables, such as Genre, Developer, Release Date, and compare with variables commonly used to measure success for video games. This would be Total Sales, Region Sales, Ratings and more. Then, we will use this data to develop a model to determine if a game would be successful based on user input and idea.
29
+
30
+ ### 1.0.1 Elevator Pitch:
31
+ To analyze various video game datasets to determine the characteristics of successful games and develop a Machine Learning model that can predict the success of a video game based on its features, primarily focusing on Genre.
32
+
33
+ ### 1.0.2 Minimum Viable Product:
34
+ *Details to be added*
35
+
36
+ ### 1.1 Group Members:
37
+ Since the group is just formed, we are still in the progress of finding position.
38
+
39
+ **Group leader:** Artem Guz
40
+
41
+ **Members:**
42
+ - **Artem Guz | College of Staten Island**
43
+ - *Primary role:* Data collector and cleaner
44
+ - *Secondary role:* Model integration and testing
45
+
46
+ - **Kevin Dsouza | College of Staten Island**
47
+ - *Primary role:* Data collector and cleaner
48
+ - *Secondary role:* Model integration and testing
49
+
50
+ - **Peter Wong | Brooklyn College**
51
+ - *Primary role:* Data collector and cleaner
52
+ - *Secondary role:* Documentation and Documentation Review
module/__custom__.py ADDED
@@ -0,0 +1,379 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ########## LIBRARIES ##########
2
+ import streamlit as st
3
+ import pandas as pd
4
+ import numpy as np
5
+ import plotly.graph_objects as go
6
+ from streamlit_searchbox import st_searchbox
7
+ from module.__selectpage__ import st_page_selectbox
8
+
9
+ ########## DATASET ##########
10
+ df = pd.read_csv('./data/join_02.csv')
11
+ df['date'] = pd.to_datetime(df['date']) # Format preparation
12
+ df['release_date'] = pd.to_datetime(df['release_date'])
13
+ df['avg_peak_perc'] = df['avg_peak_perc'].str.rstrip('%').astype('float')
14
+ df = df.dropna()
15
+
16
+
17
+ ########## FUNCTION ##########
18
+ ##### Adding single-player feature
19
+ def add_opp_features(genre):
20
+ df[genre[0]] = (df[genre[1]]==0)*1
21
+
22
+ ##### Adding feature depending on range of a base feature
23
+ """Scenario of using this function
24
+ For example, if we want a feature of price
25
+ between $10 to $30
26
+ """
27
+ def add_range_features(arg):
28
+ lower = arg[0]; upper = arg[1]
29
+ name = arg[2]; genre = arg[3]
30
+
31
+ condition = (df[genre]>=lower) & (df[genre]<upper)
32
+ df[name] = condition*1
33
+
34
+ # Returning title version of feature name
35
+ def name(target):
36
+ return target.replace('_', ' ').title()
37
+
38
+ ##### Searchbox Functions
39
+ # Appending favorite game selected by user to filtered list
40
+ """use after search box
41
+ """
42
+ def add_top_games(top_games, favorite_game, ranges, df_ax):
43
+ if favorite_game in top_games:
44
+ top_games = df_ax.gamename.unique()[ranges[0]-1:ranges[1]+1]
45
+ elif favorite_game!=None:
46
+ top_games = np.append(top_games, favorite_game)
47
+ return top_games
48
+
49
+ # Linear search over all gamenames
50
+ def search(target):
51
+ gamenames = df['gamename'].unique() # all unique gamenames
52
+ result = []
53
+ for gamename in gamenames:
54
+ if target.lower() in gamename.lower(): # games that contains the searching keyword
55
+ result.append(gamename)
56
+ return result
57
+
58
+ # Streamlit search box
59
+ def searchbox():
60
+ selected_game = st_searchbox(
61
+ search_function=search,
62
+ key="gamename_searchbox",
63
+ default_options=None,
64
+ placeholder="Compare with your Favorite Game...",
65
+ )
66
+ return selected_game
67
+
68
+
69
+ ########## PAGE SECTION ##########
70
+ # Datafram Section
71
+ """Dataframe
72
+ together with Title
73
+ """
74
+ def dfbox(ax_name, y_name, df_ax):
75
+ title = f"1.1 Dataset of :blue[{ax_name}] Games Sorted by :blue[{y_name}]:"
76
+ st.subheader(title)
77
+ st.dataframe(df_ax)
78
+
79
+ # plot 1 Section
80
+ """Plot contains the top ranked games
81
+ based on the selected features,
82
+ within selected genre
83
+ """
84
+ def plot1_box(ax, y, order_name, ranges, df_ax, top_games):
85
+ ax_name = name(ax) # formating strings
86
+ y_name = name(y) # formeting strings
87
+
88
+ title = f"1.3 Rank {ranges[0]} to {ranges[1]} :blue[{ax_name}] Games with the :red[{order_name}] :blue[{y_name}]"
89
+ st.subheader(title)
90
+
91
+ # Plot 1 - select box
92
+ favorite_game = searchbox() # search box to add a user favorite game on Plot 1
93
+ top_games = add_top_games(top_games, favorite_game, ranges, df_ax)
94
+ options = top_games
95
+ selected_options = st.multiselect('Select Video Games', options)
96
+
97
+ # Plot 1
98
+ title_names = ','.join(selected_options)
99
+ plot_title = f"Monthly {y_name} of {title_names} Over Time"
100
+ gb = df.sort_values(by='date')
101
+ gb_list = {game: gb[gb["gamename"] == game] for game in selected_options}
102
+
103
+ fig_1 = go.Figure()
104
+ fig_1.update_layout(
105
+ title = plot_title,
106
+ xaxis_title = 'Date',
107
+ yaxis_title = y_name,
108
+ )
109
+ for game, gb in gb_list.items():
110
+ fig_1 = fig_1.add_trace(go.Scatter(x=gb["date"], y=gb[y], name=game, mode='lines'))
111
+ st.plotly_chart(fig_1)
112
+
113
+ def plot2_box(theme, y, genres, df_bx):
114
+ y_name = name(y)
115
+
116
+ title = f"2.0 Comparison Among :blue[{theme}] on Monthly :blue[{y_name}]:"
117
+ st.subheader(title)
118
+
119
+ # Plot 2 - Multiselect box
120
+ options = genres
121
+ selected_options = st.multiselect('Select Comparing Categories', options)
122
+ selected_names = ','.join(selected_options) # formating titles
123
+ plot_title = f"Monthly {y_name} of {selected_names} Over Time"
124
+
125
+
126
+ # Plot 2
127
+
128
+ # Tab 1 - Mean Line Plot
129
+ gb = df_bx.sort_values(by='date') # New copy of df
130
+ mean_list = {genre: gb[gb[genre] == 1].groupby('date').mean(y).reset_index() for genre in selected_options}
131
+
132
+ fig_mean = go.Figure()
133
+ for genre, gb in mean_list.items():
134
+ fig_mean = fig_mean.add_trace(go.Scatter(x=gb['date'], y=gb[y], name=genre, mode='lines'))
135
+ fig_mean.update_layout(
136
+ title = 'Mean of ' + plot_title,
137
+ xaxis_title = 'Date',
138
+ yaxis_title = 'Mean of '+y_name,
139
+ )
140
+
141
+
142
+ # Tab 2 - Sum Line Plot
143
+ gb = df_bx.sort_values(by='date')
144
+ sum_list = {genre: gb[gb[genre] == 1].groupby('date').sum(y).reset_index() for genre in selected_options}
145
+
146
+ fig_sum = go.Figure()
147
+ for genre, gb in sum_list.items():
148
+ fig_sum = fig_sum.add_trace(go.Scatter(x=gb['date'], y=gb[y], name=genre))
149
+ fig_sum.update_layout(
150
+ title = 'Sum of ' + plot_title,
151
+ xaxis_title='Date',
152
+ yaxis_title='Sum of '+y_name,
153
+ )
154
+
155
+ # Tab 3 - Scatter / Marker Plot
156
+ gb = df_bx.sort_values(by='date')
157
+ gb_list = {genre: gb[gb[genre] == 1] for genre in selected_options}
158
+
159
+ fig_sc = go.Figure()
160
+ for genre, gb in gb_list.items():
161
+ fig_sc = fig_sc.add_trace(go.Scatter(x=gb["date"], y=gb[y], name=genre, mode='markers'))
162
+ fig_sc.update_traces(
163
+ marker=dict(size=4, opacity=0.5)
164
+ )
165
+ fig_sc.update_layout(
166
+ title = plot_title,
167
+ xaxis_title='Date',
168
+ yaxis_title=y_name,
169
+ )
170
+
171
+
172
+ # Showing Plot
173
+ tab1, tab2, tab3 = st.tabs(['Line Plot', 'Sum Plot', 'Scatter Plot'])
174
+ with tab1:
175
+ st.plotly_chart(fig_mean)
176
+ with tab2:
177
+ st.plotly_chart(fig_sum)
178
+ with tab3:
179
+ st.plotly_chart(fig_sc)
180
+
181
+
182
+ ##### Execute Page #####
183
+ def exec_page(emoji, theme, page_genres):
184
+ # Select Page
185
+ st_page_selectbox(theme)
186
+
187
+ # Header
188
+ st.header(emoji)
189
+ st.title(f"Customized Plot on :blue[{theme}]")
190
+
191
+ ##### FILTER #####
192
+ # Featuer for both axis
193
+ features = ['avg', 'gain', 'peak', 'avg_peak_perc']
194
+ features += ['metacritic_score', 'positive', 'negative']
195
+ genres = page_genres
196
+ ##################
197
+
198
+
199
+ # User Menu
200
+ order = st.toggle(label='Rank the Worst Games', value=False) # descending order toggle switch
201
+ left_col, right_col = st.columns(2) # Columns dividing
202
+ with left_col: y = st.selectbox("Select a Feature (y-axis)", features) # feature select box (y axis of Plots)
203
+ with right_col: ax = st.selectbox("Select a Genre (legend)", genres) # category select box (filtering game basse on genre)
204
+
205
+ order_name='Worst' if order else 'Highest' # string formating
206
+ y_name = name(y) # string of names that would be used on Plot title
207
+ ax_name = name(ax)
208
+
209
+ # Data - sorting and filtering
210
+ df_ax = df[df[ax]==1]
211
+ df_ax = df_ax[['gamename', 'date', y, ax]].sort_values(by=y, ascending=order).reset_index() # Data for Plot 1
212
+ df_bx = df[['gamename', 'date', y]+genres].sort_values(by=y, ascending=order).reset_index() # Data for Plot 2
213
+
214
+
215
+ # Slider
216
+ max = df_ax.gamename.unique().tolist() # max number of games
217
+ max = len(max)-1
218
+ ranges = st.slider(
219
+ label=f'Select range of the {order_name.lower()} games',
220
+ value = (1, 5),
221
+ min_value=1, max_value=30,
222
+ # min_value=1, max_value=max,
223
+ )
224
+ top_games = df_ax.gamename.unique()[ranges[0]-1:ranges[1]]
225
+
226
+
227
+ # Dataframe preview
228
+ dfbox(ax_name, y_name, df_ax)
229
+
230
+ ##### PLOT 1 #####
231
+ # Plot 1 - markdown
232
+ st.markdown("""***""")
233
+ plot1_box(ax, y, order_name, ranges, df_ax, top_games)
234
+
235
+ ##### PLOT 2 #####
236
+ # Plot 2 - markdown
237
+ st.markdown("""***""")
238
+ plot2_box(theme, y, genres, df_bx)
239
+
240
+ ##### HOME PAGE #####
241
+ def exec_page_home(theme):
242
+ st_page_selectbox(theme)
243
+
244
+ # Header
245
+ st.header(f"๐Ÿ‘‹ ForcaSteam")
246
+ st.title("Customized Plot on :blue[General Features]")
247
+
248
+ ##### FILTER #####
249
+ # Featuer for both axis
250
+ features = ['avg', 'gain', 'peak', 'avg_peak_perc']
251
+ genres = features
252
+
253
+
254
+ left_col, right_col = st.columns(2)
255
+ order = st.toggle(label='Rank the Worst Games', value=False) # descending order toggle switch
256
+ y = st.selectbox("Select a Feature (y-axis)", features) # feature select box
257
+ order_name='Worst' if order else 'Highest' # string formating
258
+ y_name = name(y)
259
+
260
+ # Data - sorting and filtering
261
+ df_ax = df[['gamename', 'date', y]].sort_values(by=y, ascending=order).reset_index() # Data - Plot 1
262
+ # df_bx = df[['gamename', 'date']+features].sort_values(by=y, ascending=order).reset_index() # Data - Plot 2
263
+
264
+ # Slider
265
+ max = df_ax.gamename.unique().tolist()
266
+ max = len(max)-1
267
+ ranges = st.slider(
268
+ label=f'Select range of the {order_name.lower()} games',
269
+ value = (1, 5),
270
+ min_value=1, max_value=30,
271
+ # min_value=1, max_value=max,
272
+ )
273
+ top_games = df_ax.gamename.unique()[ranges[0]-1:ranges[1]]
274
+
275
+ # Dataframe preview
276
+ dfbox("", y_name, df_ax)
277
+
278
+
279
+ ##### PLOT 1 #####
280
+ # Plot 1 - markdown
281
+ st.markdown("""***""")
282
+ title = f"1.3 Rank {ranges[0]} to {ranges[1]} Games with the Overall :red[{order_name}] :blue[{y_name}]"
283
+ st.subheader(title)
284
+
285
+
286
+ # Plot 1 - select box
287
+ favorite_game = searchbox() # search box to add a user favorite game on Plot 1
288
+ top_games = add_top_games(top_games, favorite_game, ranges, df_ax)
289
+ options = top_games
290
+ selected_options = st.multiselect('Select Video Games', options)
291
+
292
+ # Plot 1
293
+ title_names = ','.join(selected_options)
294
+ plot_title = f"Monthly {y_name} of {title_names} Over Time"
295
+ gb = df_ax.sort_values(by='date')
296
+ gb_list = {game: gb[gb["gamename"] == game] for game in selected_options}
297
+
298
+ fig_1 = go.Figure()
299
+ fig_1.update_layout(
300
+ title = plot_title,
301
+ xaxis_title = 'Date',
302
+ yaxis_title = y_name,
303
+ )
304
+ for game, gb in gb_list.items():
305
+ fig_1 = fig_1.add_trace(go.Scatter(x=gb["date"], y=gb[y], name=game, mode='lines'))
306
+ st.plotly_chart(fig_1)
307
+
308
+ ##### PUBLISHERS PAGE #####
309
+ def exec_page_pub(emoji, theme, main_genre):
310
+ st_page_selectbox(theme)
311
+
312
+ # Header
313
+ st.header(emoji)
314
+ st.title(f"Customized Plot on :blue[{theme}]")
315
+
316
+ ##### FILTER #####
317
+ # Featuer for both axis
318
+ features = ['avg', 'gain', 'peak', 'avg_peak_perc']
319
+ features += ['metacritic_score', 'positive', 'negative']
320
+ genres = []
321
+
322
+ left_col, right_col = st.columns(2)
323
+ order = st.toggle(label='Find the Worst Games', value=False) # descending order toggle switch
324
+ with left_col:
325
+ y = st.selectbox("Select a Feature", features) # feature select box
326
+ with right_col:
327
+ if (main_genre=='publishers'):
328
+ genres = df.sort_values(by=y, ascending=order).publishers.unique()[0:5].tolist()
329
+ elif (main_genre=='developers'):
330
+ genres = df.sort_values(by=y, ascending=order).developers.unique()[0:5].tolist()
331
+
332
+ for genre in genres:
333
+ df[genre] = (df[main_genre]==genre)*1
334
+ ax = st.selectbox("Select a Category", genres) # category select box
335
+ order_name='Worst' if order else 'Highest' # string formating
336
+ y_name = y.replace('_', ' ').title()
337
+ ax_name = ax.title().replace('_', ' ')
338
+
339
+ # ### adding best publisher features feature ###
340
+
341
+ # Data - sorting and filtering
342
+ df_ax = df[df[ax]==1]
343
+ df_ax = df_ax[['gamename', 'date', y, ax]].sort_values(by=y, ascending=order).reset_index() # Data - Plot 1
344
+ df_bx = df[['gamename', 'date', y]+genres].sort_values(by=y, ascending=order).reset_index() # Data - Plot 2
345
+
346
+ # Slider
347
+ max = df_ax.gamename.unique().tolist()
348
+ max = len(max)
349
+ if(max < 2):value_r = 0
350
+ elif(max > 4):value_r = 5
351
+ else: value_r = max
352
+
353
+ ranges = st.slider(
354
+ label=f'Select range of the {order_name.lower()} games',
355
+ value = (1, value_r),
356
+ # min_value=0, max_value=30,
357
+ min_value=1, max_value=max,
358
+ )
359
+ top_games = df_ax.gamename.unique()[ranges[0]-1:ranges[1]]
360
+
361
+ # Dataframe preview
362
+ dfbox(ax_name, y_name, df_ax)
363
+
364
+ title = f"1.2 {ranges[1]} :blue[{ax_name}] Games with the :red[{order_name}] Monthly :blue[{y_name}]:"
365
+ st.subheader(title)
366
+ st.write(top_games)
367
+
368
+
369
+
370
+ ##### PLOT 1 #####
371
+ # Plot 1 - markdown
372
+ st.markdown("""***""")
373
+ plot1_box(ax, y, order_name, ranges, df_ax, top_games)
374
+
375
+
376
+ ##### PLOT 2 #####
377
+ # Plot 2 - markdown
378
+ st.markdown("""***""")
379
+ plot2_box(theme, y, genres, df_bx)
module/__pycache__/__custom30__.cpython-310.pyc ADDED
Binary file (8.81 kB). View file
 
module/__pycache__/__custom__.cpython-310.pyc ADDED
Binary file (8.58 kB). View file
 
module/__pycache__/__home__.cpython-310.pyc ADDED
Binary file (2.6 kB). View file
 
module/__pycache__/__homemax__.cpython-310.pyc ADDED
Binary file (2.6 kB). View file
 
module/__pycache__/__selectpage__.cpython-310.pyc ADDED
Binary file (704 Bytes). View file
 
module/__selectpage__.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from streamlit_extras.switch_page_button import switch_page
3
+ import os
4
+
5
+ pages = ["Overall"]
6
+
7
+ files = os.listdir('.\pages')
8
+ for name in files:
9
+ name = name.split()[1].replace('.py', '').replace('_', ' ')
10
+ pages.append(name)
11
+
12
+
13
+ def st_page_selectbox(current_page):
14
+ current_index = pages.index(current_page)
15
+ selected_page = st.selectbox("Select a category", pages, index=current_index)
16
+ if selected_page != current_page:
17
+ switch_page(selected_page)
notebook/.ipynb_checkpoints/03_joined_110623-checkpoint.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebook/.ipynb_checkpoints/04_pageNames_112923-checkpoint.ipynb ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 2,
6
+ "id": "7c7ced02",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import os"
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "code",
15
+ "execution_count": 7,
16
+ "id": "165abc6d",
17
+ "metadata": {},
18
+ "outputs": [
19
+ {
20
+ "data": {
21
+ "text/plain": [
22
+ "['1 Home_max_slidebar.py',\n",
23
+ " '10 Publisher.py',\n",
24
+ " '11 ForcaSteam.py',\n",
25
+ " '12 Tensorflow.py',\n",
26
+ " '13 switch_page_text.py',\n",
27
+ " '2 Category.py',\n",
28
+ " '3 Genre.py',\n",
29
+ " '4 DLC_Counts.py',\n",
30
+ " '5 Price.py',\n",
31
+ " '6 Age_Restriction.py',\n",
32
+ " '7 Settings.py',\n",
33
+ " '8 OS.py',\n",
34
+ " '9 Developer.py']"
35
+ ]
36
+ },
37
+ "execution_count": 7,
38
+ "metadata": {},
39
+ "output_type": "execute_result"
40
+ }
41
+ ],
42
+ "source": [
43
+ "# os.listdir('.\\pages')\n",
44
+ "os.listdir('..\\pages')"
45
+ ]
46
+ },
47
+ {
48
+ "cell_type": "code",
49
+ "execution_count": null,
50
+ "id": "d7b8a756",
51
+ "metadata": {},
52
+ "outputs": [],
53
+ "source": []
54
+ }
55
+ ],
56
+ "metadata": {
57
+ "kernelspec": {
58
+ "display_name": "Python 3 (ipykernel)",
59
+ "language": "python",
60
+ "name": "python3"
61
+ },
62
+ "language_info": {
63
+ "codemirror_mode": {
64
+ "name": "ipython",
65
+ "version": 3
66
+ },
67
+ "file_extension": ".py",
68
+ "mimetype": "text/x-python",
69
+ "name": "python",
70
+ "nbconvert_exporter": "python",
71
+ "pygments_lexer": "ipython3",
72
+ "version": "3.11.5"
73
+ }
74
+ },
75
+ "nbformat": 4,
76
+ "nbformat_minor": 5
77
+ }
notebook/.ipynb_checkpoints/Untitled-checkpoint.ipynb ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [],
3
+ "metadata": {},
4
+ "nbformat": 4,
5
+ "nbformat_minor": 5
6
+ }
notebook/00_test_110323.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebook/01_test_110323.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebook/02_joined_110523.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebook/03_joined_110623.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebook/04_pageNames_112923.ipynb ADDED
@@ -0,0 +1,1043 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "12d5e6b1",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import os\n",
11
+ "import pandas as pd"
12
+ ]
13
+ },
14
+ {
15
+ "cell_type": "code",
16
+ "execution_count": 27,
17
+ "id": "c1bf2ce1",
18
+ "metadata": {},
19
+ "outputs": [
20
+ {
21
+ "data": {
22
+ "text/plain": [
23
+ "['01 Home_max_slidebar.py',\n",
24
+ " '02 Category.py',\n",
25
+ " '03 Genre.py',\n",
26
+ " '04 DLC_Counts.py',\n",
27
+ " '05 Price.py',\n",
28
+ " '06 Age_Restriction.py',\n",
29
+ " '07 Settings.py',\n",
30
+ " '08 OS.py',\n",
31
+ " '09 Developer.py',\n",
32
+ " '10 Publisher.py',\n",
33
+ " '11 ForcaSteam.py',\n",
34
+ " '12 Tensorflow.py',\n",
35
+ " '13 switch_page_text.py']"
36
+ ]
37
+ },
38
+ "execution_count": 27,
39
+ "metadata": {},
40
+ "output_type": "execute_result"
41
+ }
42
+ ],
43
+ "source": [
44
+ "# os.listdir('.\\pages')\n",
45
+ "files = os.listdir('..\\pages')\n",
46
+ "files.sort()\n",
47
+ "files"
48
+ ]
49
+ },
50
+ {
51
+ "cell_type": "code",
52
+ "execution_count": 20,
53
+ "id": "e7b90f67",
54
+ "metadata": {},
55
+ "outputs": [
56
+ {
57
+ "data": {
58
+ "text/plain": [
59
+ "['Home max slidebar',\n",
60
+ " 'Publisher',\n",
61
+ " 'ForcaSteam',\n",
62
+ " 'Tensorflow',\n",
63
+ " 'switch page text',\n",
64
+ " 'Category',\n",
65
+ " 'Genre',\n",
66
+ " 'DLC Counts',\n",
67
+ " 'Price',\n",
68
+ " 'Age Restriction',\n",
69
+ " 'Settings',\n",
70
+ " 'OS',\n",
71
+ " 'Developer']"
72
+ ]
73
+ },
74
+ "execution_count": 20,
75
+ "metadata": {},
76
+ "output_type": "execute_result"
77
+ }
78
+ ],
79
+ "source": [
80
+ "names = []\n",
81
+ "for name in files:\n",
82
+ " name = name.split()[1].replace('.py', '').replace('_', ' ')\n",
83
+ " names.append(name)\n",
84
+ " \n",
85
+ "names"
86
+ ]
87
+ },
88
+ {
89
+ "cell_type": "code",
90
+ "execution_count": 24,
91
+ "id": "7372f9fc",
92
+ "metadata": {},
93
+ "outputs": [
94
+ {
95
+ "data": {
96
+ "text/plain": [
97
+ "'ipykernel_launcher.py'"
98
+ ]
99
+ },
100
+ "execution_count": 24,
101
+ "metadata": {},
102
+ "output_type": "execute_result"
103
+ }
104
+ ],
105
+ "source": [
106
+ "import sys\n",
107
+ "os.path.basename(sys.argv[0])"
108
+ ]
109
+ },
110
+ {
111
+ "cell_type": "code",
112
+ "execution_count": 2,
113
+ "id": "59b468b7",
114
+ "metadata": {},
115
+ "outputs": [
116
+ {
117
+ "data": {
118
+ "text/html": [
119
+ "<div>\n",
120
+ "<style scoped>\n",
121
+ " .dataframe tbody tr th:only-of-type {\n",
122
+ " vertical-align: middle;\n",
123
+ " }\n",
124
+ "\n",
125
+ " .dataframe tbody tr th {\n",
126
+ " vertical-align: top;\n",
127
+ " }\n",
128
+ "\n",
129
+ " .dataframe thead th {\n",
130
+ " text-align: right;\n",
131
+ " }\n",
132
+ "</style>\n",
133
+ "<table border=\"1\" class=\"dataframe\">\n",
134
+ " <thead>\n",
135
+ " <tr style=\"text-align: right;\">\n",
136
+ " <th></th>\n",
137
+ " <th>gamename</th>\n",
138
+ " <th>year</th>\n",
139
+ " <th>month</th>\n",
140
+ " <th>avg</th>\n",
141
+ " <th>gain</th>\n",
142
+ " <th>peak</th>\n",
143
+ " <th>avg_peak_perc</th>\n",
144
+ " <th>date</th>\n",
145
+ " <th>release_date</th>\n",
146
+ " <th>required_age</th>\n",
147
+ " <th>...</th>\n",
148
+ " <th>genre_sports</th>\n",
149
+ " <th>genre_racing</th>\n",
150
+ " <th>genre_rpg</th>\n",
151
+ " <th>genre_simulation</th>\n",
152
+ " <th>indie</th>\n",
153
+ " <th>full_audio</th>\n",
154
+ " <th>full_controller_support</th>\n",
155
+ " <th>age_0_plus</th>\n",
156
+ " <th>age_13_plus</th>\n",
157
+ " <th>age_18_plus</th>\n",
158
+ " </tr>\n",
159
+ " </thead>\n",
160
+ " <tbody>\n",
161
+ " <tr>\n",
162
+ " <th>0</th>\n",
163
+ " <td>100% Orange Juice</td>\n",
164
+ " <td>2021</td>\n",
165
+ " <td>February</td>\n",
166
+ " <td>278.67</td>\n",
167
+ " <td>-25.23</td>\n",
168
+ " <td>645</td>\n",
169
+ " <td>43.2047%</td>\n",
170
+ " <td>2021-02-01</td>\n",
171
+ " <td>2014-05-16</td>\n",
172
+ " <td>0</td>\n",
173
+ " <td>...</td>\n",
174
+ " <td>0</td>\n",
175
+ " <td>0</td>\n",
176
+ " <td>0</td>\n",
177
+ " <td>0</td>\n",
178
+ " <td>1</td>\n",
179
+ " <td>1</td>\n",
180
+ " <td>0</td>\n",
181
+ " <td>1</td>\n",
182
+ " <td>0</td>\n",
183
+ " <td>0</td>\n",
184
+ " </tr>\n",
185
+ " <tr>\n",
186
+ " <th>1</th>\n",
187
+ " <td>100% Orange Juice</td>\n",
188
+ " <td>2021</td>\n",
189
+ " <td>January</td>\n",
190
+ " <td>303.89</td>\n",
191
+ " <td>-4.16</td>\n",
192
+ " <td>614</td>\n",
193
+ " <td>49.4935%</td>\n",
194
+ " <td>2021-01-01</td>\n",
195
+ " <td>2014-05-16</td>\n",
196
+ " <td>0</td>\n",
197
+ " <td>...</td>\n",
198
+ " <td>0</td>\n",
199
+ " <td>0</td>\n",
200
+ " <td>0</td>\n",
201
+ " <td>0</td>\n",
202
+ " <td>1</td>\n",
203
+ " <td>1</td>\n",
204
+ " <td>0</td>\n",
205
+ " <td>1</td>\n",
206
+ " <td>0</td>\n",
207
+ " <td>0</td>\n",
208
+ " </tr>\n",
209
+ " <tr>\n",
210
+ " <th>2</th>\n",
211
+ " <td>100% Orange Juice</td>\n",
212
+ " <td>2020</td>\n",
213
+ " <td>December</td>\n",
214
+ " <td>308.05</td>\n",
215
+ " <td>23.02</td>\n",
216
+ " <td>743</td>\n",
217
+ " <td>41.4603%</td>\n",
218
+ " <td>2020-12-01</td>\n",
219
+ " <td>2014-05-16</td>\n",
220
+ " <td>0</td>\n",
221
+ " <td>...</td>\n",
222
+ " <td>0</td>\n",
223
+ " <td>0</td>\n",
224
+ " <td>0</td>\n",
225
+ " <td>0</td>\n",
226
+ " <td>1</td>\n",
227
+ " <td>1</td>\n",
228
+ " <td>0</td>\n",
229
+ " <td>1</td>\n",
230
+ " <td>0</td>\n",
231
+ " <td>0</td>\n",
232
+ " </tr>\n",
233
+ " <tr>\n",
234
+ " <th>3</th>\n",
235
+ " <td>100% Orange Juice</td>\n",
236
+ " <td>2020</td>\n",
237
+ " <td>November</td>\n",
238
+ " <td>285.03</td>\n",
239
+ " <td>-7.41</td>\n",
240
+ " <td>621</td>\n",
241
+ " <td>45.8986%</td>\n",
242
+ " <td>2020-11-01</td>\n",
243
+ " <td>2014-05-16</td>\n",
244
+ " <td>0</td>\n",
245
+ " <td>...</td>\n",
246
+ " <td>0</td>\n",
247
+ " <td>0</td>\n",
248
+ " <td>0</td>\n",
249
+ " <td>0</td>\n",
250
+ " <td>1</td>\n",
251
+ " <td>1</td>\n",
252
+ " <td>0</td>\n",
253
+ " <td>1</td>\n",
254
+ " <td>0</td>\n",
255
+ " <td>0</td>\n",
256
+ " </tr>\n",
257
+ " <tr>\n",
258
+ " <th>4</th>\n",
259
+ " <td>100% Orange Juice</td>\n",
260
+ " <td>2020</td>\n",
261
+ " <td>October</td>\n",
262
+ " <td>292.45</td>\n",
263
+ " <td>46.68</td>\n",
264
+ " <td>900</td>\n",
265
+ " <td>32.4944%</td>\n",
266
+ " <td>2020-10-01</td>\n",
267
+ " <td>2014-05-16</td>\n",
268
+ " <td>0</td>\n",
269
+ " <td>...</td>\n",
270
+ " <td>0</td>\n",
271
+ " <td>0</td>\n",
272
+ " <td>0</td>\n",
273
+ " <td>0</td>\n",
274
+ " <td>1</td>\n",
275
+ " <td>1</td>\n",
276
+ " <td>0</td>\n",
277
+ " <td>1</td>\n",
278
+ " <td>0</td>\n",
279
+ " <td>0</td>\n",
280
+ " </tr>\n",
281
+ " </tbody>\n",
282
+ "</table>\n",
283
+ "<p>5 rows ร— 42 columns</p>\n",
284
+ "</div>"
285
+ ],
286
+ "text/plain": [
287
+ " gamename year month avg gain peak avg_peak_perc \\\n",
288
+ "0 100% Orange Juice 2021 February 278.67 -25.23 645 43.2047% \n",
289
+ "1 100% Orange Juice 2021 January 303.89 -4.16 614 49.4935% \n",
290
+ "2 100% Orange Juice 2020 December 308.05 23.02 743 41.4603% \n",
291
+ "3 100% Orange Juice 2020 November 285.03 -7.41 621 45.8986% \n",
292
+ "4 100% Orange Juice 2020 October 292.45 46.68 900 32.4944% \n",
293
+ "\n",
294
+ " date release_date required_age ... genre_sports genre_racing \\\n",
295
+ "0 2021-02-01 2014-05-16 0 ... 0 0 \n",
296
+ "1 2021-01-01 2014-05-16 0 ... 0 0 \n",
297
+ "2 2020-12-01 2014-05-16 0 ... 0 0 \n",
298
+ "3 2020-11-01 2014-05-16 0 ... 0 0 \n",
299
+ "4 2020-10-01 2014-05-16 0 ... 0 0 \n",
300
+ "\n",
301
+ " genre_rpg genre_simulation indie full_audio full_controller_support \\\n",
302
+ "0 0 0 1 1 0 \n",
303
+ "1 0 0 1 1 0 \n",
304
+ "2 0 0 1 1 0 \n",
305
+ "3 0 0 1 1 0 \n",
306
+ "4 0 0 1 1 0 \n",
307
+ "\n",
308
+ " age_0_plus age_13_plus age_18_plus \n",
309
+ "0 1 0 0 \n",
310
+ "1 1 0 0 \n",
311
+ "2 1 0 0 \n",
312
+ "3 1 0 0 \n",
313
+ "4 1 0 0 \n",
314
+ "\n",
315
+ "[5 rows x 42 columns]"
316
+ ]
317
+ },
318
+ "execution_count": 2,
319
+ "metadata": {},
320
+ "output_type": "execute_result"
321
+ }
322
+ ],
323
+ "source": [
324
+ "df = pd.read_csv('../data/join_02.csv')\n",
325
+ "df.head()"
326
+ ]
327
+ },
328
+ {
329
+ "cell_type": "code",
330
+ "execution_count": 3,
331
+ "id": "6e7bbe77",
332
+ "metadata": {},
333
+ "outputs": [],
334
+ "source": [
335
+ "# Format preparation\n",
336
+ "df['date'] = pd.to_datetime(df['date'])\n",
337
+ "df['release_date'] = pd.to_datetime(df['release_date'])\n",
338
+ "df['avg_peak_perc'] = df['avg_peak_perc'].str.rstrip('%').astype('float') \n",
339
+ "df = df.dropna()"
340
+ ]
341
+ },
342
+ {
343
+ "cell_type": "code",
344
+ "execution_count": 16,
345
+ "id": "a4482277",
346
+ "metadata": {},
347
+ "outputs": [
348
+ {
349
+ "data": {
350
+ "text/plain": [
351
+ "'100% Orange Juice'"
352
+ ]
353
+ },
354
+ "execution_count": 16,
355
+ "metadata": {},
356
+ "output_type": "execute_result"
357
+ }
358
+ ],
359
+ "source": [
360
+ "gamenames = df['gamename'].unique()\n",
361
+ "\n",
362
+ "def search(target):\n",
363
+ " result = []\n",
364
+ " for gamename in gamenames:\n",
365
+ " if target.lower() in gamename.lower():\n",
366
+ " result.append(gamename)\n",
367
+ " return result \n",
368
+ "\n",
369
+ "favorite_game = search(\"orange\")[0]\n",
370
+ "favorite_game"
371
+ ]
372
+ },
373
+ {
374
+ "cell_type": "code",
375
+ "execution_count": 20,
376
+ "id": "00cf591f",
377
+ "metadata": {},
378
+ "outputs": [
379
+ {
380
+ "data": {
381
+ "text/html": [
382
+ "<div>\n",
383
+ "<style scoped>\n",
384
+ " .dataframe tbody tr th:only-of-type {\n",
385
+ " vertical-align: middle;\n",
386
+ " }\n",
387
+ "\n",
388
+ " .dataframe tbody tr th {\n",
389
+ " vertical-align: top;\n",
390
+ " }\n",
391
+ "\n",
392
+ " .dataframe thead th {\n",
393
+ " text-align: right;\n",
394
+ " }\n",
395
+ "</style>\n",
396
+ "<table border=\"1\" class=\"dataframe\">\n",
397
+ " <thead>\n",
398
+ " <tr style=\"text-align: right;\">\n",
399
+ " <th></th>\n",
400
+ " <th>gamename</th>\n",
401
+ " <th>year</th>\n",
402
+ " <th>month</th>\n",
403
+ " <th>avg</th>\n",
404
+ " <th>gain</th>\n",
405
+ " <th>peak</th>\n",
406
+ " <th>avg_peak_perc</th>\n",
407
+ " <th>date</th>\n",
408
+ " <th>release_date</th>\n",
409
+ " <th>required_age</th>\n",
410
+ " <th>...</th>\n",
411
+ " <th>genre_sports</th>\n",
412
+ " <th>genre_racing</th>\n",
413
+ " <th>genre_rpg</th>\n",
414
+ " <th>genre_simulation</th>\n",
415
+ " <th>indie</th>\n",
416
+ " <th>full_audio</th>\n",
417
+ " <th>full_controller_support</th>\n",
418
+ " <th>age_0_plus</th>\n",
419
+ " <th>age_13_plus</th>\n",
420
+ " <th>age_18_plus</th>\n",
421
+ " </tr>\n",
422
+ " </thead>\n",
423
+ " <tbody>\n",
424
+ " <tr>\n",
425
+ " <th>0</th>\n",
426
+ " <td>100% Orange Juice</td>\n",
427
+ " <td>2021</td>\n",
428
+ " <td>February</td>\n",
429
+ " <td>278.67</td>\n",
430
+ " <td>-25.23</td>\n",
431
+ " <td>645</td>\n",
432
+ " <td>43.2047</td>\n",
433
+ " <td>2021-02-01</td>\n",
434
+ " <td>2014-05-16</td>\n",
435
+ " <td>0</td>\n",
436
+ " <td>...</td>\n",
437
+ " <td>0</td>\n",
438
+ " <td>0</td>\n",
439
+ " <td>0</td>\n",
440
+ " <td>0</td>\n",
441
+ " <td>1</td>\n",
442
+ " <td>1</td>\n",
443
+ " <td>0</td>\n",
444
+ " <td>1</td>\n",
445
+ " <td>0</td>\n",
446
+ " <td>0</td>\n",
447
+ " </tr>\n",
448
+ " <tr>\n",
449
+ " <th>1</th>\n",
450
+ " <td>100% Orange Juice</td>\n",
451
+ " <td>2021</td>\n",
452
+ " <td>January</td>\n",
453
+ " <td>303.89</td>\n",
454
+ " <td>-4.16</td>\n",
455
+ " <td>614</td>\n",
456
+ " <td>49.4935</td>\n",
457
+ " <td>2021-01-01</td>\n",
458
+ " <td>2014-05-16</td>\n",
459
+ " <td>0</td>\n",
460
+ " <td>...</td>\n",
461
+ " <td>0</td>\n",
462
+ " <td>0</td>\n",
463
+ " <td>0</td>\n",
464
+ " <td>0</td>\n",
465
+ " <td>1</td>\n",
466
+ " <td>1</td>\n",
467
+ " <td>0</td>\n",
468
+ " <td>1</td>\n",
469
+ " <td>0</td>\n",
470
+ " <td>0</td>\n",
471
+ " </tr>\n",
472
+ " <tr>\n",
473
+ " <th>2</th>\n",
474
+ " <td>100% Orange Juice</td>\n",
475
+ " <td>2020</td>\n",
476
+ " <td>December</td>\n",
477
+ " <td>308.05</td>\n",
478
+ " <td>23.02</td>\n",
479
+ " <td>743</td>\n",
480
+ " <td>41.4603</td>\n",
481
+ " <td>2020-12-01</td>\n",
482
+ " <td>2014-05-16</td>\n",
483
+ " <td>0</td>\n",
484
+ " <td>...</td>\n",
485
+ " <td>0</td>\n",
486
+ " <td>0</td>\n",
487
+ " <td>0</td>\n",
488
+ " <td>0</td>\n",
489
+ " <td>1</td>\n",
490
+ " <td>1</td>\n",
491
+ " <td>0</td>\n",
492
+ " <td>1</td>\n",
493
+ " <td>0</td>\n",
494
+ " <td>0</td>\n",
495
+ " </tr>\n",
496
+ " <tr>\n",
497
+ " <th>3</th>\n",
498
+ " <td>100% Orange Juice</td>\n",
499
+ " <td>2020</td>\n",
500
+ " <td>November</td>\n",
501
+ " <td>285.03</td>\n",
502
+ " <td>-7.41</td>\n",
503
+ " <td>621</td>\n",
504
+ " <td>45.8986</td>\n",
505
+ " <td>2020-11-01</td>\n",
506
+ " <td>2014-05-16</td>\n",
507
+ " <td>0</td>\n",
508
+ " <td>...</td>\n",
509
+ " <td>0</td>\n",
510
+ " <td>0</td>\n",
511
+ " <td>0</td>\n",
512
+ " <td>0</td>\n",
513
+ " <td>1</td>\n",
514
+ " <td>1</td>\n",
515
+ " <td>0</td>\n",
516
+ " <td>1</td>\n",
517
+ " <td>0</td>\n",
518
+ " <td>0</td>\n",
519
+ " </tr>\n",
520
+ " <tr>\n",
521
+ " <th>4</th>\n",
522
+ " <td>100% Orange Juice</td>\n",
523
+ " <td>2020</td>\n",
524
+ " <td>October</td>\n",
525
+ " <td>292.45</td>\n",
526
+ " <td>46.68</td>\n",
527
+ " <td>900</td>\n",
528
+ " <td>32.4944</td>\n",
529
+ " <td>2020-10-01</td>\n",
530
+ " <td>2014-05-16</td>\n",
531
+ " <td>0</td>\n",
532
+ " <td>...</td>\n",
533
+ " <td>0</td>\n",
534
+ " <td>0</td>\n",
535
+ " <td>0</td>\n",
536
+ " <td>0</td>\n",
537
+ " <td>1</td>\n",
538
+ " <td>1</td>\n",
539
+ " <td>0</td>\n",
540
+ " <td>1</td>\n",
541
+ " <td>0</td>\n",
542
+ " <td>0</td>\n",
543
+ " </tr>\n",
544
+ " <tr>\n",
545
+ " <th>...</th>\n",
546
+ " <td>...</td>\n",
547
+ " <td>...</td>\n",
548
+ " <td>...</td>\n",
549
+ " <td>...</td>\n",
550
+ " <td>...</td>\n",
551
+ " <td>...</td>\n",
552
+ " <td>...</td>\n",
553
+ " <td>...</td>\n",
554
+ " <td>...</td>\n",
555
+ " <td>...</td>\n",
556
+ " <td>...</td>\n",
557
+ " <td>...</td>\n",
558
+ " <td>...</td>\n",
559
+ " <td>...</td>\n",
560
+ " <td>...</td>\n",
561
+ " <td>...</td>\n",
562
+ " <td>...</td>\n",
563
+ " <td>...</td>\n",
564
+ " <td>...</td>\n",
565
+ " <td>...</td>\n",
566
+ " <td>...</td>\n",
567
+ " </tr>\n",
568
+ " <tr>\n",
569
+ " <th>63848</th>\n",
570
+ " <td>theHunter Classic</td>\n",
571
+ " <td>2014</td>\n",
572
+ " <td>November</td>\n",
573
+ " <td>844.43</td>\n",
574
+ " <td>-65.03</td>\n",
575
+ " <td>1683</td>\n",
576
+ " <td>50.1741</td>\n",
577
+ " <td>2014-11-01</td>\n",
578
+ " <td>2014-06-03</td>\n",
579
+ " <td>0</td>\n",
580
+ " <td>...</td>\n",
581
+ " <td>1</td>\n",
582
+ " <td>0</td>\n",
583
+ " <td>0</td>\n",
584
+ " <td>1</td>\n",
585
+ " <td>0</td>\n",
586
+ " <td>1</td>\n",
587
+ " <td>0</td>\n",
588
+ " <td>1</td>\n",
589
+ " <td>0</td>\n",
590
+ " <td>0</td>\n",
591
+ " </tr>\n",
592
+ " <tr>\n",
593
+ " <th>63849</th>\n",
594
+ " <td>theHunter Classic</td>\n",
595
+ " <td>2014</td>\n",
596
+ " <td>October</td>\n",
597
+ " <td>909.46</td>\n",
598
+ " <td>258.77</td>\n",
599
+ " <td>2293</td>\n",
600
+ " <td>39.6625</td>\n",
601
+ " <td>2014-10-01</td>\n",
602
+ " <td>2014-06-03</td>\n",
603
+ " <td>0</td>\n",
604
+ " <td>...</td>\n",
605
+ " <td>1</td>\n",
606
+ " <td>0</td>\n",
607
+ " <td>0</td>\n",
608
+ " <td>1</td>\n",
609
+ " <td>0</td>\n",
610
+ " <td>1</td>\n",
611
+ " <td>0</td>\n",
612
+ " <td>1</td>\n",
613
+ " <td>0</td>\n",
614
+ " <td>0</td>\n",
615
+ " </tr>\n",
616
+ " <tr>\n",
617
+ " <th>63850</th>\n",
618
+ " <td>theHunter Classic</td>\n",
619
+ " <td>2014</td>\n",
620
+ " <td>September</td>\n",
621
+ " <td>650.69</td>\n",
622
+ " <td>-63.60</td>\n",
623
+ " <td>1717</td>\n",
624
+ " <td>37.8969</td>\n",
625
+ " <td>2014-09-01</td>\n",
626
+ " <td>2014-06-03</td>\n",
627
+ " <td>0</td>\n",
628
+ " <td>...</td>\n",
629
+ " <td>1</td>\n",
630
+ " <td>0</td>\n",
631
+ " <td>0</td>\n",
632
+ " <td>1</td>\n",
633
+ " <td>0</td>\n",
634
+ " <td>1</td>\n",
635
+ " <td>0</td>\n",
636
+ " <td>1</td>\n",
637
+ " <td>0</td>\n",
638
+ " <td>0</td>\n",
639
+ " </tr>\n",
640
+ " <tr>\n",
641
+ " <th>63851</th>\n",
642
+ " <td>theHunter Classic</td>\n",
643
+ " <td>2014</td>\n",
644
+ " <td>August</td>\n",
645
+ " <td>714.29</td>\n",
646
+ " <td>-337.67</td>\n",
647
+ " <td>1181</td>\n",
648
+ " <td>60.4818</td>\n",
649
+ " <td>2014-08-01</td>\n",
650
+ " <td>2014-06-03</td>\n",
651
+ " <td>0</td>\n",
652
+ " <td>...</td>\n",
653
+ " <td>1</td>\n",
654
+ " <td>0</td>\n",
655
+ " <td>0</td>\n",
656
+ " <td>1</td>\n",
657
+ " <td>0</td>\n",
658
+ " <td>1</td>\n",
659
+ " <td>0</td>\n",
660
+ " <td>1</td>\n",
661
+ " <td>0</td>\n",
662
+ " <td>0</td>\n",
663
+ " </tr>\n",
664
+ " <tr>\n",
665
+ " <th>63852</th>\n",
666
+ " <td>theHunter Classic</td>\n",
667
+ " <td>2014</td>\n",
668
+ " <td>July</td>\n",
669
+ " <td>1051.96</td>\n",
670
+ " <td>-110.53</td>\n",
671
+ " <td>2059</td>\n",
672
+ " <td>51.0908</td>\n",
673
+ " <td>2014-07-01</td>\n",
674
+ " <td>2014-06-03</td>\n",
675
+ " <td>0</td>\n",
676
+ " <td>...</td>\n",
677
+ " <td>1</td>\n",
678
+ " <td>0</td>\n",
679
+ " <td>0</td>\n",
680
+ " <td>1</td>\n",
681
+ " <td>0</td>\n",
682
+ " <td>1</td>\n",
683
+ " <td>0</td>\n",
684
+ " <td>1</td>\n",
685
+ " <td>0</td>\n",
686
+ " <td>0</td>\n",
687
+ " </tr>\n",
688
+ " </tbody>\n",
689
+ "</table>\n",
690
+ "<p>62567 rows ร— 42 columns</p>\n",
691
+ "</div>"
692
+ ],
693
+ "text/plain": [
694
+ " gamename year month avg gain peak \\\n",
695
+ "0 100% Orange Juice 2021 February 278.67 -25.23 645 \n",
696
+ "1 100% Orange Juice 2021 January 303.89 -4.16 614 \n",
697
+ "2 100% Orange Juice 2020 December 308.05 23.02 743 \n",
698
+ "3 100% Orange Juice 2020 November 285.03 -7.41 621 \n",
699
+ "4 100% Orange Juice 2020 October 292.45 46.68 900 \n",
700
+ "... ... ... ... ... ... ... \n",
701
+ "63848 theHunter Classic 2014 November 844.43 -65.03 1683 \n",
702
+ "63849 theHunter Classic 2014 October 909.46 258.77 2293 \n",
703
+ "63850 theHunter Classic 2014 September 650.69 -63.60 1717 \n",
704
+ "63851 theHunter Classic 2014 August 714.29 -337.67 1181 \n",
705
+ "63852 theHunter Classic 2014 July 1051.96 -110.53 2059 \n",
706
+ "\n",
707
+ " avg_peak_perc date release_date required_age ... genre_sports \\\n",
708
+ "0 43.2047 2021-02-01 2014-05-16 0 ... 0 \n",
709
+ "1 49.4935 2021-01-01 2014-05-16 0 ... 0 \n",
710
+ "2 41.4603 2020-12-01 2014-05-16 0 ... 0 \n",
711
+ "3 45.8986 2020-11-01 2014-05-16 0 ... 0 \n",
712
+ "4 32.4944 2020-10-01 2014-05-16 0 ... 0 \n",
713
+ "... ... ... ... ... ... ... \n",
714
+ "63848 50.1741 2014-11-01 2014-06-03 0 ... 1 \n",
715
+ "63849 39.6625 2014-10-01 2014-06-03 0 ... 1 \n",
716
+ "63850 37.8969 2014-09-01 2014-06-03 0 ... 1 \n",
717
+ "63851 60.4818 2014-08-01 2014-06-03 0 ... 1 \n",
718
+ "63852 51.0908 2014-07-01 2014-06-03 0 ... 1 \n",
719
+ "\n",
720
+ " genre_racing genre_rpg genre_simulation indie full_audio \\\n",
721
+ "0 0 0 0 1 1 \n",
722
+ "1 0 0 0 1 1 \n",
723
+ "2 0 0 0 1 1 \n",
724
+ "3 0 0 0 1 1 \n",
725
+ "4 0 0 0 1 1 \n",
726
+ "... ... ... ... ... ... \n",
727
+ "63848 0 0 1 0 1 \n",
728
+ "63849 0 0 1 0 1 \n",
729
+ "63850 0 0 1 0 1 \n",
730
+ "63851 0 0 1 0 1 \n",
731
+ "63852 0 0 1 0 1 \n",
732
+ "\n",
733
+ " full_controller_support age_0_plus age_13_plus age_18_plus \n",
734
+ "0 0 1 0 0 \n",
735
+ "1 0 1 0 0 \n",
736
+ "2 0 1 0 0 \n",
737
+ "3 0 1 0 0 \n",
738
+ "4 0 1 0 0 \n",
739
+ "... ... ... ... ... \n",
740
+ "63848 0 1 0 0 \n",
741
+ "63849 0 1 0 0 \n",
742
+ "63850 0 1 0 0 \n",
743
+ "63851 0 1 0 0 \n",
744
+ "63852 0 1 0 0 \n",
745
+ "\n",
746
+ "[62567 rows x 42 columns]"
747
+ ]
748
+ },
749
+ "execution_count": 20,
750
+ "metadata": {},
751
+ "output_type": "execute_result"
752
+ }
753
+ ],
754
+ "source": [
755
+ "df"
756
+ ]
757
+ },
758
+ {
759
+ "cell_type": "code",
760
+ "execution_count": 21,
761
+ "id": "ad7114d2",
762
+ "metadata": {},
763
+ "outputs": [
764
+ {
765
+ "data": {
766
+ "text/html": [
767
+ "<div>\n",
768
+ "<style scoped>\n",
769
+ " .dataframe tbody tr th:only-of-type {\n",
770
+ " vertical-align: middle;\n",
771
+ " }\n",
772
+ "\n",
773
+ " .dataframe tbody tr th {\n",
774
+ " vertical-align: top;\n",
775
+ " }\n",
776
+ "\n",
777
+ " .dataframe thead th {\n",
778
+ " text-align: right;\n",
779
+ " }\n",
780
+ "</style>\n",
781
+ "<table border=\"1\" class=\"dataframe\">\n",
782
+ " <thead>\n",
783
+ " <tr style=\"text-align: right;\">\n",
784
+ " <th></th>\n",
785
+ " <th>gamename</th>\n",
786
+ " <th>year</th>\n",
787
+ " <th>month</th>\n",
788
+ " <th>avg</th>\n",
789
+ " <th>gain</th>\n",
790
+ " <th>peak</th>\n",
791
+ " <th>avg_peak_perc</th>\n",
792
+ " <th>date</th>\n",
793
+ " <th>release_date</th>\n",
794
+ " <th>required_age</th>\n",
795
+ " <th>...</th>\n",
796
+ " <th>genre_sports</th>\n",
797
+ " <th>genre_racing</th>\n",
798
+ " <th>genre_rpg</th>\n",
799
+ " <th>genre_simulation</th>\n",
800
+ " <th>indie</th>\n",
801
+ " <th>full_audio</th>\n",
802
+ " <th>full_controller_support</th>\n",
803
+ " <th>age_0_plus</th>\n",
804
+ " <th>age_13_plus</th>\n",
805
+ " <th>age_18_plus</th>\n",
806
+ " </tr>\n",
807
+ " </thead>\n",
808
+ " <tbody>\n",
809
+ " <tr>\n",
810
+ " <th>84</th>\n",
811
+ " <td>12 is Better Than 6</td>\n",
812
+ " <td>2021</td>\n",
813
+ " <td>February</td>\n",
814
+ " <td>5.24</td>\n",
815
+ " <td>-0.70</td>\n",
816
+ " <td>13</td>\n",
817
+ " <td>40.3077</td>\n",
818
+ " <td>2021-02-01</td>\n",
819
+ " <td>2015-11-20</td>\n",
820
+ " <td>0</td>\n",
821
+ " <td>...</td>\n",
822
+ " <td>0</td>\n",
823
+ " <td>0</td>\n",
824
+ " <td>0</td>\n",
825
+ " <td>0</td>\n",
826
+ " <td>1</td>\n",
827
+ " <td>0</td>\n",
828
+ " <td>1</td>\n",
829
+ " <td>1</td>\n",
830
+ " <td>0</td>\n",
831
+ " <td>0</td>\n",
832
+ " </tr>\n",
833
+ " <tr>\n",
834
+ " <th>85</th>\n",
835
+ " <td>12 is Better Than 6</td>\n",
836
+ " <td>2021</td>\n",
837
+ " <td>January</td>\n",
838
+ " <td>5.94</td>\n",
839
+ " <td>0.78</td>\n",
840
+ " <td>18</td>\n",
841
+ " <td>33.0000</td>\n",
842
+ " <td>2021-01-01</td>\n",
843
+ " <td>2015-11-20</td>\n",
844
+ " <td>0</td>\n",
845
+ " <td>...</td>\n",
846
+ " <td>0</td>\n",
847
+ " <td>0</td>\n",
848
+ " <td>0</td>\n",
849
+ " <td>0</td>\n",
850
+ " <td>1</td>\n",
851
+ " <td>0</td>\n",
852
+ " <td>1</td>\n",
853
+ " <td>1</td>\n",
854
+ " <td>0</td>\n",
855
+ " <td>0</td>\n",
856
+ " </tr>\n",
857
+ " <tr>\n",
858
+ " <th>86</th>\n",
859
+ " <td>12 is Better Than 6</td>\n",
860
+ " <td>2020</td>\n",
861
+ " <td>December</td>\n",
862
+ " <td>5.16</td>\n",
863
+ " <td>-0.08</td>\n",
864
+ " <td>21</td>\n",
865
+ " <td>24.5714</td>\n",
866
+ " <td>2020-12-01</td>\n",
867
+ " <td>2015-11-20</td>\n",
868
+ " <td>0</td>\n",
869
+ " <td>...</td>\n",
870
+ " <td>0</td>\n",
871
+ " <td>0</td>\n",
872
+ " <td>0</td>\n",
873
+ " <td>0</td>\n",
874
+ " <td>1</td>\n",
875
+ " <td>0</td>\n",
876
+ " <td>1</td>\n",
877
+ " <td>1</td>\n",
878
+ " <td>0</td>\n",
879
+ " <td>0</td>\n",
880
+ " </tr>\n",
881
+ " <tr>\n",
882
+ " <th>87</th>\n",
883
+ " <td>12 is Better Than 6</td>\n",
884
+ " <td>2020</td>\n",
885
+ " <td>November</td>\n",
886
+ " <td>5.24</td>\n",
887
+ " <td>0.89</td>\n",
888
+ " <td>18</td>\n",
889
+ " <td>29.1111</td>\n",
890
+ " <td>2020-11-01</td>\n",
891
+ " <td>2015-11-20</td>\n",
892
+ " <td>0</td>\n",
893
+ " <td>...</td>\n",
894
+ " <td>0</td>\n",
895
+ " <td>0</td>\n",
896
+ " <td>0</td>\n",
897
+ " <td>0</td>\n",
898
+ " <td>1</td>\n",
899
+ " <td>0</td>\n",
900
+ " <td>1</td>\n",
901
+ " <td>1</td>\n",
902
+ " <td>0</td>\n",
903
+ " <td>0</td>\n",
904
+ " </tr>\n",
905
+ " <tr>\n",
906
+ " <th>88</th>\n",
907
+ " <td>12 is Better Than 6</td>\n",
908
+ " <td>2020</td>\n",
909
+ " <td>October</td>\n",
910
+ " <td>4.35</td>\n",
911
+ " <td>0.64</td>\n",
912
+ " <td>38</td>\n",
913
+ " <td>11.4474</td>\n",
914
+ " <td>2020-10-01</td>\n",
915
+ " <td>2015-11-20</td>\n",
916
+ " <td>0</td>\n",
917
+ " <td>...</td>\n",
918
+ " <td>0</td>\n",
919
+ " <td>0</td>\n",
920
+ " <td>0</td>\n",
921
+ " <td>0</td>\n",
922
+ " <td>1</td>\n",
923
+ " <td>0</td>\n",
924
+ " <td>1</td>\n",
925
+ " <td>1</td>\n",
926
+ " <td>0</td>\n",
927
+ " <td>0</td>\n",
928
+ " </tr>\n",
929
+ " </tbody>\n",
930
+ "</table>\n",
931
+ "<p>5 rows ร— 42 columns</p>\n",
932
+ "</div>"
933
+ ],
934
+ "text/plain": [
935
+ " gamename year month avg gain peak avg_peak_perc \\\n",
936
+ "84 12 is Better Than 6 2021 February 5.24 -0.70 13 40.3077 \n",
937
+ "85 12 is Better Than 6 2021 January 5.94 0.78 18 33.0000 \n",
938
+ "86 12 is Better Than 6 2020 December 5.16 -0.08 21 24.5714 \n",
939
+ "87 12 is Better Than 6 2020 November 5.24 0.89 18 29.1111 \n",
940
+ "88 12 is Better Than 6 2020 October 4.35 0.64 38 11.4474 \n",
941
+ "\n",
942
+ " date release_date required_age ... genre_sports genre_racing \\\n",
943
+ "84 2021-02-01 2015-11-20 0 ... 0 0 \n",
944
+ "85 2021-01-01 2015-11-20 0 ... 0 0 \n",
945
+ "86 2020-12-01 2015-11-20 0 ... 0 0 \n",
946
+ "87 2020-11-01 2015-11-20 0 ... 0 0 \n",
947
+ "88 2020-10-01 2015-11-20 0 ... 0 0 \n",
948
+ "\n",
949
+ " genre_rpg genre_simulation indie full_audio full_controller_support \\\n",
950
+ "84 0 0 1 0 1 \n",
951
+ "85 0 0 1 0 1 \n",
952
+ "86 0 0 1 0 1 \n",
953
+ "87 0 0 1 0 1 \n",
954
+ "88 0 0 1 0 1 \n",
955
+ "\n",
956
+ " age_0_plus age_13_plus age_18_plus \n",
957
+ "84 1 0 0 \n",
958
+ "85 1 0 0 \n",
959
+ "86 1 0 0 \n",
960
+ "87 1 0 0 \n",
961
+ "88 1 0 0 \n",
962
+ "\n",
963
+ "[5 rows x 42 columns]"
964
+ ]
965
+ },
966
+ "execution_count": 21,
967
+ "metadata": {},
968
+ "output_type": "execute_result"
969
+ }
970
+ ],
971
+ "source": [
972
+ "df_filter = df[df['gamename']!=favorite_game]\n",
973
+ "df_filter.head()"
974
+ ]
975
+ },
976
+ {
977
+ "cell_type": "code",
978
+ "execution_count": 35,
979
+ "id": "2ceb810a",
980
+ "metadata": {},
981
+ "outputs": [],
982
+ "source": [
983
+ "import numpy"
984
+ ]
985
+ },
986
+ {
987
+ "cell_type": "code",
988
+ "execution_count": 37,
989
+ "id": "073ede90",
990
+ "metadata": {
991
+ "scrolled": true
992
+ },
993
+ "outputs": [
994
+ {
995
+ "data": {
996
+ "text/plain": [
997
+ "array(['100% Orange Juice', '12 is Better Than 6', '140', '60 Seconds!',\n",
998
+ " '7 Days to Die', '100% Orange Juice'], dtype=object)"
999
+ ]
1000
+ },
1001
+ "execution_count": 37,
1002
+ "metadata": {},
1003
+ "output_type": "execute_result"
1004
+ }
1005
+ ],
1006
+ "source": [
1007
+ "top_games = df.gamename.unique()[0:5]\n",
1008
+ "# top_games.append(favorite_game)\n",
1009
+ "top_games = numpy.append(top_games, favorite_game)\n",
1010
+ "top_games"
1011
+ ]
1012
+ },
1013
+ {
1014
+ "cell_type": "code",
1015
+ "execution_count": null,
1016
+ "id": "cc15f96c",
1017
+ "metadata": {},
1018
+ "outputs": [],
1019
+ "source": []
1020
+ }
1021
+ ],
1022
+ "metadata": {
1023
+ "kernelspec": {
1024
+ "display_name": "Python 3 (ipykernel)",
1025
+ "language": "python",
1026
+ "name": "python3"
1027
+ },
1028
+ "language_info": {
1029
+ "codemirror_mode": {
1030
+ "name": "ipython",
1031
+ "version": 3
1032
+ },
1033
+ "file_extension": ".py",
1034
+ "mimetype": "text/x-python",
1035
+ "name": "python",
1036
+ "nbconvert_exporter": "python",
1037
+ "pygments_lexer": "ipython3",
1038
+ "version": "3.11.5"
1039
+ }
1040
+ },
1041
+ "nbformat": 4,
1042
+ "nbformat_minor": 5
1043
+ }
pages/01 Category.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Category"
6
+ page_genres = ['multi_player', 'pvp', 'co-op', 'single_player']
7
+ add_genre = ['single_player', 'multi_player']
8
+
9
+ add_opp_features(add_genre)
10
+ exec_page('๐Ÿคผ', theme, page_genres)
pages/02 Genre.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Genre"
6
+ page_genres = ['genre_action', 'genre_adventure', 'genre_casual',
7
+ 'genre_sexual_content', 'genre_strategy', 'genre_sports',
8
+ 'genre_racing', 'genre_rpg', 'genre_simulation', 'indie', 'mainstream']
9
+ add_genre = ['mainstream', 'indie']
10
+
11
+ add_opp_features(add_genre)
12
+ exec_page('๐Ÿฆนโ€โ™€๏ธ', theme, page_genres)
pages/03 DLC_Counts.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "DLC Counts"
6
+ page_genres = ['dlc_0', 'dlc_5', 'dlc_15', 'dlc_40', 'dlc_100', 'dlc_300', 'dlc_most']
7
+ add_genres = [[0, 1, 'dlc_0', 'dlc_count'],
8
+ [1, 6, 'dlc_5', 'dlc_count'],
9
+ [6, 16, 'dlc_15', 'dlc_count'],
10
+ [16, 41, 'dlc_40', 'dlc_count'],
11
+ [41, 101, 'dlc_100', 'dlc_count'],
12
+ [101, 301, 'dlc_300', 'dlc_count'],
13
+ [301, 9999, 'dlc_most', 'dlc_count']]
14
+
15
+ # ### adding single-player feature ###
16
+ for add in add_genres:
17
+ add_range_features(add)
18
+ exec_page('๐Ÿชœ', theme, page_genres)
pages/04 Price.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Price"
6
+ page_genres = ['price_free', 'price_5', 'price_15', 'price_20', 'price_40', 'price_60', 'price_most']
7
+ add_genres = [[0, 0.001, 'price_free', 'price'],
8
+ [0.001, 5.001, 'price_5', 'price'],
9
+ [5.001, 10.001, 'price_10', 'price'],
10
+ [10.001, 15.001, 'price_15', 'price'],
11
+ [15.001, 20.001, 'price_20', 'price'],
12
+ [20.001, 40.001, 'price_40', 'price'],
13
+ [40.001, 60.001, 'price_60', 'price'],
14
+ [60.001, 9999, 'price_most', 'price']]
15
+
16
+ # ### adding single-player feature ###
17
+ for add in add_genres:
18
+ add_range_features(add)
19
+ exec_page('๐Ÿ’ธ', theme, page_genres)
pages/05 Age_Restriction.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import exec_page
4
+
5
+ theme = "Age Restriction"
6
+ page_genres = ['age_0_plus', 'age_13_plus', 'age_18_plus']
7
+ exec_page('๐Ÿ‘ด', theme, page_genres)
pages/06 Settings.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Settings"
6
+ page_genres = ['full_audio', 'full_controller_support', 'not_full_audio', 'not_full_controller']
7
+ add_genres = [['not_full_audio', 'full_audio'], ['not_full_controller', 'full_controller_support'] ]
8
+
9
+ # ### adding single-player feature ###
10
+ for add in add_genres:
11
+ add_opp_features(add)
12
+ exec_page('๐ŸŽง', theme, page_genres)
pages/07 OS.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "OS"
6
+ page_genres = ['windows', 'mac', 'linux', 'not_windows', 'not_mac', 'not_linux']
7
+ add_genres = [['not_windows', 'windows'], ['not_mac', 'mac'], ['not_linux', 'linux'] ]
8
+
9
+ # ### adding single-player feature ###
10
+ for add in add_genres:
11
+ add_opp_features(add)
12
+ exec_page('๐Ÿ–ฅ', theme, page_genres)
pages/08 Publisher.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Publisher"
6
+ main_genre = "publishers"
7
+
8
+ exec_page_pub('๐Ÿ›’', theme, main_genre)
pages/09 Developer.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from module.__custom__ import *
4
+
5
+ theme = "Developer"
6
+ main_genre = "developers"
7
+
8
+ exec_page_pub('๐Ÿ’ฝ', theme, main_genre)
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ numpy==1.24.4
2
+ pandas==1.5.3
3
+ plotly==5.17.0
4
+ streamlit==1.28.2
5
+ streamlit_extras==0.3.5
6
+ streamlit_searchbox==0.1.6