jcmachicao commited on
Commit
08a1557
·
verified ·
1 Parent(s): 3f8da09

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -9
app.py CHANGED
@@ -1,5 +1,8 @@
1
  # Actualizado por: José Carlos Machicao, Fecha de actualización: 2024_06_24, Taller Lima
 
 
2
 
 
3
  import streamlit as st
4
  import pandas as pd
5
  import numpy as np
@@ -12,6 +15,7 @@ from sklearn.decomposition import PCA
12
  pd.DataFrame.iteritems = pd.DataFrame.items
13
  scaler = StandardScaler()
14
 
 
15
  st.title("Visualización y Clusterización automática de Data de Estudiantes")
16
  st.write("Cargue el archivo PKL para visualizar el análisis de su contenido.")
17
  uploaded_file = st.file_uploader("Cargar archivo: ", type='pkl')
@@ -24,8 +28,10 @@ if uploaded_file is not None:
24
  df_050 = df.dropna(axis=0)
25
  df_050.index = df_050.DNI
26
 
 
27
  st.write(df_050.shape)
28
  MAX_CAT = st.slider('Maximo numero de categorias: ', 10, 30, 20)
 
29
  # Depuración de columnas sólo para aquellas que contribuyen al clustering
30
  col_selec = []
31
  for col in df_050.columns:
@@ -36,6 +42,7 @@ if uploaded_file is not None:
36
  st.header('Lista de variables que será usada para la clusterización')
37
  st.write(' '.join(col_selec))
38
 
 
39
  df_100 = df_050[col_selec]
40
  df_110 = pd.get_dummies(df_100)
41
 
@@ -65,15 +72,13 @@ if uploaded_file is not None:
65
  #st.write(data_200['ESTADO_ESTUDIANTE'].unique())
66
  #VIRTU = st.selectbox('Virtual: ', ['UVIR', 'PCGT'])
67
 
 
68
  INGRE = st.selectbox('Estado: ', ['Abandono', 'Activo'])
69
-
70
  data_210 = data_200[data_200['ESTADO_INGRESANTE']==INGRE]
71
-
72
  fig2 = px.scatter(data_210, x='pca_1', y='pca_2', title='Distribución PCA', width=800, height=800)
73
  st.plotly_chart(fig2)
74
 
75
  st.header('Diagrama de densidades')
76
-
77
  GRIDSIZEX = st.slider('Seleccione la densidad de la grilla de hexágonos: ', 0, 100, 35)
78
 
79
  plt.figure(figsize=(10, 8))
@@ -90,7 +95,7 @@ if uploaded_file is not None:
90
  densidades = pd.DataFrame(plt_extracto.get_array())
91
  densidades.hist(bins=50, log=True)
92
  plt.ylabel('Cantidad de Ocurrencias')
93
- plt.xlabel('Frecuencia')
94
 
95
  plt.title('Histograma de Densidades')
96
  st.pyplot(plt)
@@ -107,14 +112,14 @@ if uploaded_file is not None:
107
 
108
  st.write(patrones_df)
109
 
110
- NUM_CASOS = st.slider("¿Cuántos casos elige explorar?", 1, 10, 3)
111
  st.write('Usted ha elegido ', NUM_CASOS, 'casos.')
112
 
113
  radiohex = (data_210.pca_1.max() - data_210.pca_1.min())/GRIDSIZEX/2
114
 
115
  st.header('Visualización de Caso Particular')
116
 
117
- CASOX = st.selectbox('Elija el caso: ', range(NUM_CASOS))
118
 
119
  a, b = patrones_df.col1[CASOX], patrones_df.col2[CASOX]
120
  enfoqueX = data_210[
@@ -136,7 +141,7 @@ if uploaded_file is not None:
136
 
137
  st.subheader('Poblaciones por Hexágonos Elegidos')
138
 
139
- for c in range(NUM_CASOS):
140
  a, b = patrones_df.col1[c], patrones_df.col2[c]
141
  enfoqueX = data_210[
142
  (data_210.pca_1 > a - radiohex) &
@@ -149,7 +154,7 @@ if uploaded_file is not None:
149
  st.header('Descarga de Items de Hexagonos Densos Elegidos')
150
 
151
  enfoques = pd.DataFrame()
152
- for c in range(NUM_CASOS):
153
  a, b = patrones_df.col1[c], patrones_df.col2[c]
154
  enfoqueX = data_210[
155
  (data_210.pca_1 > a - radiohex) &
@@ -162,7 +167,7 @@ if uploaded_file is not None:
162
 
163
  st.write(enfoques.columns)
164
 
165
- enfoques2 = enfoques.drop(columns=['pca_1', 'pca_2'])
166
  csv = enfoques2.to_csv(encoding='iso-8859-1')
167
 
168
  st.download_button(
 
1
  # Actualizado por: José Carlos Machicao, Fecha de actualización: 2024_06_24, Taller Lima
2
+ # Actualizado por: José Carlos Machicao, Fecha de actualización: 2024_06_28, Taller Arequipa
3
+ # Esta vinculado a los PKL de https://sites.google.com/continental.edu.pe/edusights/inicio
4
 
5
+ # Importacion de librerias
6
  import streamlit as st
7
  import pandas as pd
8
  import numpy as np
 
15
  pd.DataFrame.iteritems = pd.DataFrame.items
16
  scaler = StandardScaler()
17
 
18
+ # Títulos y carga de archivo
19
  st.title("Visualización y Clusterización automática de Data de Estudiantes")
20
  st.write("Cargue el archivo PKL para visualizar el análisis de su contenido.")
21
  uploaded_file = st.file_uploader("Cargar archivo: ", type='pkl')
 
28
  df_050 = df.dropna(axis=0)
29
  df_050.index = df_050.DNI
30
 
31
+ # Seleccion de categorias
32
  st.write(df_050.shape)
33
  MAX_CAT = st.slider('Maximo numero de categorias: ', 10, 30, 20)
34
+
35
  # Depuración de columnas sólo para aquellas que contribuyen al clustering
36
  col_selec = []
37
  for col in df_050.columns:
 
42
  st.header('Lista de variables que será usada para la clusterización')
43
  st.write(' '.join(col_selec))
44
 
45
+ # Conversion a dummies
46
  df_100 = df_050[col_selec]
47
  df_110 = pd.get_dummies(df_100)
48
 
 
72
  #st.write(data_200['ESTADO_ESTUDIANTE'].unique())
73
  #VIRTU = st.selectbox('Virtual: ', ['UVIR', 'PCGT'])
74
 
75
+ # Diagramacion de Scatter con resultado PCA
76
  INGRE = st.selectbox('Estado: ', ['Abandono', 'Activo'])
 
77
  data_210 = data_200[data_200['ESTADO_INGRESANTE']==INGRE]
 
78
  fig2 = px.scatter(data_210, x='pca_1', y='pca_2', title='Distribución PCA', width=800, height=800)
79
  st.plotly_chart(fig2)
80
 
81
  st.header('Diagrama de densidades')
 
82
  GRIDSIZEX = st.slider('Seleccione la densidad de la grilla de hexágonos: ', 0, 100, 35)
83
 
84
  plt.figure(figsize=(10, 8))
 
95
  densidades = pd.DataFrame(plt_extracto.get_array())
96
  densidades.hist(bins=50, log=True)
97
  plt.ylabel('Cantidad de Ocurrencias')
98
+ plt.xlabel('Densidad Estudiantes por Area')
99
 
100
  plt.title('Histograma de Densidades')
101
  st.pyplot(plt)
 
112
 
113
  st.write(patrones_df)
114
 
115
+ NUM_CASOS = st.slider("¿Qué rango de valores elige explorar?", 1, 10, value=(3,7))
116
  st.write('Usted ha elegido ', NUM_CASOS, 'casos.')
117
 
118
  radiohex = (data_210.pca_1.max() - data_210.pca_1.min())/GRIDSIZEX/2
119
 
120
  st.header('Visualización de Caso Particular')
121
 
122
+ CASOX = st.selectbox('Elija el caso: ', NUM_CASOS)
123
 
124
  a, b = patrones_df.col1[CASOX], patrones_df.col2[CASOX]
125
  enfoqueX = data_210[
 
141
 
142
  st.subheader('Poblaciones por Hexágonos Elegidos')
143
 
144
+ for c in NUM_CASOS:
145
  a, b = patrones_df.col1[c], patrones_df.col2[c]
146
  enfoqueX = data_210[
147
  (data_210.pca_1 > a - radiohex) &
 
154
  st.header('Descarga de Items de Hexagonos Densos Elegidos')
155
 
156
  enfoques = pd.DataFrame()
157
+ for c in NUM_CASOS:
158
  a, b = patrones_df.col1[c], patrones_df.col2[c]
159
  enfoqueX = data_210[
160
  (data_210.pca_1 > a - radiohex) &
 
167
 
168
  st.write(enfoques.columns)
169
 
170
+ enfoques2 = enfoques.drop(columns=['pca_1', 'pca_2', 'HexDens', 'ESTADO_INGRESANTE'])
171
  csv = enfoques2.to_csv(encoding='iso-8859-1')
172
 
173
  st.download_button(