edgamer commited on
Commit
cd0c6c3
1 Parent(s): d460b5c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +207 -81
app.py CHANGED
@@ -1,103 +1,229 @@
 
 
1
  import re
2
  import numpy as np
3
  import pandas as pd
4
  import seaborn as sns
5
  import streamlit as st
6
  import matplotlib.pyplot as plt
 
7
 
8
 
 
9
  opcion_general = st.sidebar.selectbox('Selecciona la sección que desees revisar', ['Presentación', 'Resumen', 'Conceptos clave',
10
  'Análisis exploratorio (EDA: Exploratory Data Analysis)', 'Hallazgos', 'Referencias'])
11
 
12
  if opcion_general == 'Presentación':
13
- st.title('Estudio sobre las Industrias Culturales y Creativas en México')
14
- st.write('Por Jesús Eduardo Oliva Abarca')
15
- st.write('Facultad de Artes Visuales, Universidad Autónoma de Nuevo León')
16
  elif opcion_general == 'Resumen':
17
- st.title('Resumen')
18
- st.markdown('''Existen numerosas acepciones del concepto de Industrias Culturales y Creativas -en adelante, ICC, para abreviar-, de igual manera, se han formulado múltiples clasificaciones de este sector productivo que, a partir de la década de los ochenta del siglo pasado, adquiere una mayor relevancia tanto para la economía global, lo mismo que para las discusiones y debates en torno a las políticas de desarrollo de los países. En lo que respecta a México, las ICC han sido objeto de investigaciones muy diversas, que van desde el análisis de su dimensión económica y jurídica (Piedras, 2004), o bien para abordarles desde una óptica sociológica (García Canclini, 2000, y 2006), o para examinar su influjo en la generación en la planeación pública (Mariscal Orozco, 2007). Este proyecto de investigación parte del análisis de los datos referentes a las ICC, disponibles en el Directorio Estadístico Nacional de Unidades Económicas (DENUE), desde el año 2015 y hasta el 2021, con el propósito de identificar características generales de éstas, así como patrones y tendencias de su desarrollo, que posibiliten un entendimiento general de la estructura del campo de producción cultural (Bourdieu, 2002; García Canclini, 2014) en México. Para cumplir con tal objetivo, este estudio se apoya en la análitica cultural (Manovich, 2020), enfoque que combina técnicas y métodos de la ciencia de datos (campo que integra a la estadística, el Aprendizaje Automático, o Machine Learning y la Inteligencia Artificial), con el análisis sociológico y las humanidades digitales para el análisis de grandes volúmenes de datos culturales. El estudio aquí propuesto se realiza en tres etapas: durante la primera, se recolectan y se procesan los datos para conformar los conjuntos a partir de los cuales se realizará un análisis exploratorio (Exploratory Data Analysis); la segunda fase comprende el examen e interpretación de los patrones, tendencias y/o anomalías relativas al desarrollo de las ICC, y la elaboración de recomendaciones para su mejora. En la tercera y última fase, se desarrolla y despliega una aplicación web que permita visualizar los datos examinados en esta investigación para propiciar la socialización de los hallazgos obtenidos, así como para incentivar la reflexión y debate, por parte de las personas u organizaciones interesadas, en torno a las ICC en México.''')
19
- st.markdown('''Palabras clave: analítica cultural, brecha digital, campo cultural, industrias culturales y creativas, innovación cultural''')
20
  elif opcion_general == 'Conceptos clave':
21
- st.title('Conceptos clave')
22
- tema = st.sidebar.radio('Selecciona la temática de tu interés', ['Industrias Culturales y Creativas', 'Analítica Cultural'])
23
- if tema == 'Industrias Culturales y Creativas':
24
- st.header('Industrias Culturales y Culturales')
25
- elif tema == 'Analítica Cultural':
26
- st.header('Analítica Cultural')
27
  elif opcion_general == 'Análisis exploratorio (EDA: Exploratory Data Analysis)':
28
- st.title('Análisis exploratorio (EDA: Exploratory Data Analysis)')
29
- opcion = st.sidebar.selectbox('Selecciona el año que deseas examinar', ('2015', '2016', '2017', '2018', '2019', '2020',
30
- '2021'))
31
- df_cargado = pd.read_csv('datos_procesados/datos_denue_icc_' + opcion + '.csv')
32
- st.write('Seleccionaste el año', opcion)
33
- st.dataframe(df_cargado)
34
- opcion_grafico = st.sidebar.radio('Selecciona el gráfico para visualizar los datos', ('Pie', 'De barras horizontales'))
35
- if opcion_grafico == 'Pie':
36
- opcion_variable = st.sidebar.selectbox('Selecciona la variable categórica que deseas graficar',
37
- ['Razon social', 'Rango de personal ocupado', 'Cuenta con correo electrónico',
38
- 'Cuenta con sitio de Internet', 'Tipo de establecimiento'])
39
- if opcion_variable == 'Razon social':
40
- figura, eje = plt.subplots()
41
- eje.pie(df_cargado['razon_social'].notna().value_counts(),
42
- labels= ['No cuentan con razón social', ' cuentan con razón social'],
43
- autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
44
- eje.axis('equal')
45
- st.pyplot(figura)
46
- elif opcion_variable == 'Rango de personal ocupado':
47
- figura, eje = plt.subplots()
48
- eje.pie(df_cargado['rango_personal_ocupado'].value_counts(),
49
- labels= ['0 a 5 personas', '6 a 10 personas', '11 a 30 personas', '31 a 50 personas',
50
- '51 a 100 personas', '101 a 250 personas', '251 y más personas'],
51
- autopct= '%1.1f%%', explode= [0.1, 0, 0, 0, 0.3, 0.6, 0.9], shadow= True)
52
- eje.axis('equal')
53
- st.pyplot(figura)
54
- elif opcion_variable == 'Cuenta con correo electrónico':
55
- figura, eje = plt.subplots()
56
- eje.pie(df_cargado['correo_electronico'].notna().value_counts(),
57
- labels= ['No cuentan con correo electrónico', 'Sí cuentan con correo electrónico'],
58
- autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
59
- eje.axis('equal')
60
- st.pyplot(figura)
61
- elif opcion_variable == 'Cuenta con sitio de Internet':
62
- figura, eje = plt.subplots()
63
- eje.pie(df_cargado['sitio_internet'].notna().value_counts(),
64
- labels= ['No cuentan con sitio en Internet', 'Sí cuentan con sitio en Internet'],
65
- autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
66
- eje.axis('equal')
67
- st.pyplot(figura)
68
- elif opcion_variable == 'Tipo de establecimiento':
69
- figura, eje = plt.subplots()
70
- eje.pie(df_cargado['tipo_establecimiento'].value_counts(),
71
- labels= ['Fijo', 'Semifijo'],
72
- autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
73
- eje.axis('equal')
74
- st.pyplot(figura)
75
- if opcion_grafico == 'De barras horizontales':
76
- opcion_estado = st.sidebar.selectbox('Escoge una entidad federativa para explorar',
77
- [i for i in df_cargado.groupby(by= 'entidad_federativa').groups])
78
- df_entidad_federativa = df_cargado.groupby(by= 'entidad_federativa').get_group(opcion_estado)
79
- #st.table(pd.crosstab(df_entidad_federativa['nombre_clase_actividad'],
80
- #[df_entidad_federativa['sitio_internet'].notna()]))
81
- #st.bar_chart(df_entidad_federativa['nombre_clase_actividad'].value_counts())
82
- #figura, eje = plt.subplots()
83
- #eje.hist(pd.crosstab([df_entidad_federativa['sitio_internet'].notna()],
84
- #df_entidad_federativa['nombre_clase_actividad']))
85
- #st.pyplot(figura)
86
- #st.pyplot(pd.crosstab(df_entidad_federativa['nombre_clase_actividad'],
87
- #[df_entidad_federativa['sitio_internet'].notna()]).plot(kind= 'barh'))
88
-
89
-
90
- fig3 = plt.figure()
91
- sns.heatmap(df_entidad_federativa[['nombre_clase_actividad',
92
- 'rango_personal_ocupado']].apply(lambda x : pd.factorize(x)[0]).corr(method= 'pearson',
93
- min_periods= 1), annot= True)
94
- st.pyplot(fig3)
95
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  elif opcion_general == 'Hallazgos':
97
  st.title('Hallazgos')
98
  elif opcion_general == 'Referencias':
99
  st.title('Referencias')
100
 
101
 
 
102
 
103
-
 
 
 
 
 
 
1
+ import imp
2
+ import io
3
  import re
4
  import numpy as np
5
  import pandas as pd
6
  import seaborn as sns
7
  import streamlit as st
8
  import matplotlib.pyplot as plt
9
+ from sklearn.preprocessing import LabelEncoder
10
 
11
 
12
+ st.sidebar.title('Secciones')
13
  opcion_general = st.sidebar.selectbox('Selecciona la sección que desees revisar', ['Presentación', 'Resumen', 'Conceptos clave',
14
  'Análisis exploratorio (EDA: Exploratory Data Analysis)', 'Hallazgos', 'Referencias'])
15
 
16
  if opcion_general == 'Presentación':
17
+ st.title('Estudio sobre las Industrias Culturales y Creativas en México')
18
+ st.write('Por Jesús Eduardo Oliva Abarca')
19
+ st.write('Facultad de Artes Visuales, Universidad Autónoma de Nuevo León')
20
  elif opcion_general == 'Resumen':
21
+ st.title('Resumen')
22
+ st.markdown('''Existen numerosas acepciones del concepto de Industrias Culturales y Creativas -en adelante, ICC, para abreviar-, de igual manera, se han formulado múltiples clasificaciones de este sector productivo que, a partir de la década de los ochenta del siglo pasado, adquiere una mayor relevancia tanto para la economía global, lo mismo que para las discusiones y debates en torno a las políticas de desarrollo de los países. En lo que respecta a México, las ICC han sido objeto de investigaciones muy diversas, que van desde el análisis de su dimensión económica y jurídica (Piedras, 2004), o bien para abordarles desde una óptica sociológica (García Canclini, 2000, y 2006), o para examinar su influjo en la generación en la planeación pública (Mariscal Orozco, 2007). Este proyecto de investigación parte del análisis de los datos referentes a las ICC, disponibles en el Directorio Estadístico Nacional de Unidades Económicas (DENUE), desde el año 2015 y hasta el 2021, con el propósito de identificar características generales de éstas, así como patrones y tendencias de su desarrollo, que posibiliten un entendimiento general de la estructura del campo de producción cultural (Bourdieu, 2002; García Canclini, 2014) en México. Para cumplir con tal objetivo, este estudio se apoya en la análitica cultural (Manovich, 2020), enfoque que combina técnicas y métodos de la ciencia de datos (campo que integra a la estadística, el Aprendizaje Automático, o Machine Learning y la Inteligencia Artificial), con el análisis sociológico y las humanidades digitales para el análisis de grandes volúmenes de datos culturales. El estudio aquí propuesto se realiza en tres etapas: durante la primera, se recolectan y se procesan los datos para conformar los conjuntos a partir de los cuales se realizará un análisis exploratorio (Exploratory Data Analysis); la segunda fase comprende el examen e interpretación de los patrones, tendencias y/o anomalías relativas al desarrollo de las ICC, y la elaboración de recomendaciones para su mejora. En la tercera y última fase, se desarrolla y despliega una aplicación web que permita visualizar los datos examinados en esta investigación para propiciar la socialización de los hallazgos obtenidos, así como para incentivar la reflexión y debate, por parte de las personas u organizaciones interesadas, en torno a las ICC en México.''')
23
+ st.markdown('''Palabras clave: analítica cultural, brecha digital, campo cultural, industrias culturales y creativas, innovación cultural''')
24
  elif opcion_general == 'Conceptos clave':
25
+ st.title('Conceptos clave')
26
+ tema = st.sidebar.radio('Selecciona la temática de tu interés', ['Industrias Culturales y Creativas', 'Analítica Cultural'])
27
+ if tema == 'Industrias Culturales y Creativas':
28
+ st.header('Industrias Culturales y Creativas')
29
+ elif tema == 'Analítica Cultural':
30
+ st.header('Analítica Cultural')
31
  elif opcion_general == 'Análisis exploratorio (EDA: Exploratory Data Analysis)':
32
+ st.title('Análisis exploratorio (EDA: Exploratory Data Analysis)')
33
+ opcion = st.sidebar.selectbox('Selecciona el año que deseas examinar', ('2015', '2016', '2017', '2018', '2019', '2020', '2021'))
34
+ df_cargado = pd.read_csv('datos_procesados/datos_denue_icc_' + opcion + '.csv')
35
+ st.sidebar.write('Seleccionaste el año', opcion)
36
+
37
+ copia_df = df_cargado.copy()
38
+ datos_binarios = df_cargado[['razon_social', 'correo_electronico', 'sitio_internet']].notna()
39
+ copia_df.insert(2, '_razon_social', datos_binarios['razon_social'])
40
+ copia_df.insert(13, '_correo_electronico', datos_binarios['correo_electronico'])
41
+ copia_df.insert(15, '_sitio_internet', datos_binarios['sitio_internet'])
42
+ copia_df['_razon_social'] = copia_df['_razon_social'].astype(str)
43
+ copia_df['_razon_social'] = copia_df['_razon_social'].replace('False', 'No tiene')
44
+ copia_df['_razon_social'] = copia_df['_razon_social'].replace('True', 'Sí tiene')
45
+ copia_df['_correo_electronico'] = copia_df['_correo_electronico'].astype(str)
46
+ copia_df['_correo_electronico'] = copia_df['_correo_electronico'].replace('False', 'No tiene')
47
+ copia_df['_correo_electronico'] = copia_df['_correo_electronico'].replace('True', 'Sí tiene')
48
+ copia_df['_sitio_internet'] = copia_df['_sitio_internet'].astype(str)
49
+ copia_df['_sitio_internet'] = copia_df['_sitio_internet'].replace('False', 'No tiene')
50
+ copia_df['_sitio_internet'] = copia_df['_sitio_internet'].replace('True', ' tiene')
51
+
52
+ opcion_actividad = st.sidebar.radio('Selecciona la actividad que deseas realizar sobre el conjunto de datos seleccionado', ['Exploración descriptiva',
53
+ 'Visualización'])
54
+ if opcion_actividad == 'Exploración descriptiva':
55
+ opcion_tarea = st.sidebar.selectbox('Selecciona la tarea exploratoria', ['Descripción general', 'Marco de datos completo',
56
+ 'Agrupación', 'Análisis de segmentación', 'Correlaciones'])
57
+ if opcion_tarea == 'Descripción general':
58
+ buffer = io.StringIO()
59
+ df_cargado.info(buf= buffer)
60
+ info_df = buffer.getvalue()
61
+ st.text(info_df)
62
+ elif opcion_tarea == 'Marco de datos completo':
63
+ st.dataframe(df_cargado)
64
+ elif opcion_tarea == 'Agrupación':
65
+ st.subheader('Selecciona la variable categórica en torno a la cual deseas agrupar los demás valores:')
66
+ if st.sidebar.checkbox('Razón social'):
67
+ df_grupo = df_cargado['razon_social'].notna().value_counts()
68
+ st.table(df_grupo)
69
+ elif st.sidebar.checkbox('Clase de actividad'):
70
+ df_grupo = df_cargado['nombre_clase_actividad'].value_counts()
71
+ st.table(df_grupo)
72
+ elif st.sidebar.checkbox('Rango de personal ocupado'):
73
+ df_grupo = df_cargado['rango_personal_ocupado'].value_counts()
74
+ st.table(df_grupo)
75
+ elif st.sidebar.checkbox('Entidad federativa'):
76
+ df_grupo = df_cargado['entidad_federativa'].value_counts()
77
+ st.table(df_grupo)
78
+ elif st.sidebar.checkbox('Correo electrónico'):
79
+ df_grupo = df_cargado['correo_electronico'].notna().value_counts()
80
+ st.table(df_grupo)
81
+ elif st.sidebar.checkbox('Sitio en Internet'):
82
+ df_grupo = df_cargado['sitio_internet'].notna().value_counts()
83
+ st.table(df_grupo)
84
+ elif st.sidebar.checkbox('Tipo de establecimiento'):
85
+ df_grupo = df_cargado['tipo_establecimiento'].value_counts()
86
+ st.table(df_grupo)
87
+ elif opcion_tarea == 'Análisis de segmentación':
88
+ try:
89
+ opcion_estado = st.sidebar.selectbox('Selecciona la entidad federativa', [i for i in copia_df.groupby(by= 'entidad_federativa').groups])
90
+ opcion_razon_social = st.sidebar.selectbox('Selecciona el estatus de registro legal', [i for i in copia_df.groupby(by= '_razon_social').groups])
91
+ opcion_actividad = st.sidebar.selectbox('Selecciona la clase de actividad', [i for i in copia_df.groupby(by= 'nombre_clase_actividad').groups])
92
+ opcion_rango_ocupacion = st.sidebar.selectbox('Selecciona el rango de ocupación laboral', [i for i in copia_df.groupby(by= 'rango_personal_ocupado').groups])
93
+ opcion_correo = st.sidebar.selectbox('Selecciona según posea o no correo electrónico', [i for i in copia_df.groupby(by= '_correo_electronico').groups])
94
+ opcion_sitio = st.sidebar.selectbox('Selecciona según posea o no sitio en Internet', [i for i in copia_df.groupby(by= '_sitio_internet').groups])
95
+ opcion_tipo_establecimiento = st.sidebar.selectbox('Selecciona el tipo de establecimiento', [i for i in copia_df.groupby(by= 'tipo_establecimiento').groups])
96
+ df_segmentado = copia_df.groupby(['entidad_federativa', '_razon_social', 'nombre_clase_actividad', 'rango_personal_ocupado', '_correo_electronico',
97
+ '_sitio_internet', 'tipo_establecimiento']).get_group((opcion_estado, opcion_razon_social, opcion_actividad,
98
+ opcion_rango_ocupacion, opcion_correo, opcion_sitio, opcion_tipo_establecimiento))
99
+ df_segmentado.drop(columns= 'entidad_federativa', inplace= True)
100
+ st.dataframe(df_segmentado)
101
+ except KeyError:
102
+ st.warning('No existen entradas u observaciones para las categorías seleccionadas')
103
+ elif opcion_tarea == 'Correlaciones':
104
+ etiquetador = LabelEncoder()
105
+ copia_df = df_cargado.copy()
106
+ for columna in copia_df.columns:
107
+ copia_df[columna] = etiquetador.fit_transform(copia_df[columna])
108
+ copia_df.drop(columns= ['nombre_unidad_economica', 'tipo_vialidad', 'nombre_vialidad', 'numero', 'tipo_asentamiento_humano', 'nombre_asentamiento_humano',
109
+ 'codigo_postal', 'entidad_federativa', 'municipio', 'fecha_incorporacion_denue'], inplace= True)
110
+ st.table(copia_df.corr(method= 'pearson'))
111
+ elif opcion_actividad == 'Visualización':
112
+ opcion_grafico = st.sidebar.radio('Selecciona el gráfico para visualizar los datos', ('Pie', 'De barras', 'Mapa de calor'))
113
+ if opcion_grafico == 'Pie':
114
+ if st.sidebar.checkbox('Gráfico general'):
115
+ opcion_variable = st.sidebar.selectbox('Selecciona la variable categórica que deseas graficar',
116
+ ['Razon social', 'Rango de personal ocupado', 'Cuenta con correo electrónico', 'Cuenta con sitio de Internet', 'Tipo de establecimiento'])
117
+ if opcion_variable == 'Razon social':
118
+ figura, eje = plt.subplots()
119
+ eje.pie(df_cargado['razon_social'].notna().value_counts(), labels= ['No cuentan con razón social', 'Sí cuentan con razón social'],
120
+ autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
121
+ eje.axis('equal')
122
+ st.pyplot(figura)
123
+ elif opcion_variable == 'Rango de personal ocupado':
124
+ figura, eje = plt.subplots()
125
+ eje.pie(df_cargado['rango_personal_ocupado'].value_counts(), labels= ['0 a 5 personas', '6 a 10 personas', '11 a 30 personas', '31 a 50 personas',
126
+ '51 a 100 personas', '101 a 250 personas', '251 y más personas'],
127
+ autopct= '%1.1f%%', explode= [0.1, 0, 0, 0, 0.3, 0.6, 0.9], shadow= True)
128
+ eje.axis('equal')
129
+ st.pyplot(figura)
130
+ elif opcion_variable == 'Cuenta con correo electrónico':
131
+ figura, eje = plt.subplots()
132
+ eje.pie(df_cargado['correo_electronico'].notna().value_counts(),
133
+ labels= ['No cuentan con correo electrónico', 'Sí cuentan con correo electrónico'], autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
134
+ eje.axis('equal')
135
+ st.pyplot(figura)
136
+ elif opcion_variable == 'Cuenta con sitio de Internet':
137
+ figura, eje = plt.subplots()
138
+ eje.pie(df_cargado['sitio_internet'].notna().value_counts(),
139
+ labels= ['No cuentan con sitio en Internet', 'Sí cuentan con sitio en Internet'], autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
140
+ eje.axis('equal')
141
+ st.pyplot(figura)
142
+ elif opcion_variable == 'Tipo de establecimiento':
143
+ figura, eje = plt.subplots()
144
+ eje.pie(df_cargado['tipo_establecimiento'].value_counts(), labels= ['Fijo', 'Semifijo'], autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
145
+ eje.axis('equal')
146
+ st.pyplot(figura)
147
+ elif st.sidebar.checkbox('Gráfico por entidad federativa'):
148
+ opcion_estado = st.sidebar.selectbox('Selecciona la entidad federativa', [i for i in copia_df.groupby(by= 'entidad_federativa').groups])
149
+ opcion_variable = st.sidebar.selectbox('Selecciona la variable categórica que deseas graficar',
150
+ ['Razon social', 'Rango de personal ocupado', 'Cuenta con correo electrónico', 'Cuenta con sitio de Internet', 'Tipo de establecimiento'])
151
+ df_segmentado = copia_df.groupby('entidad_federativa').get_group(opcion_estado)
152
+ if opcion_variable == 'Razon social':
153
+ figura, eje = plt.subplots()
154
+ eje.pie(df_segmentado['razon_social'].notna().value_counts(), labels= ['No cuentan con razón social', 'Sí cuentan con razón social'],
155
+ autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
156
+ eje.axis('equal')
157
+ st.pyplot(figura)
158
+ elif opcion_variable == 'Rango de personal ocupado':
159
+ figura, eje = plt.subplots()
160
+ eje.pie(df_segmentado['rango_personal_ocupado'].value_counts(), labels= ['0 a 5 personas', '6 a 10 personas', '11 a 30 personas', '31 a 50 personas',
161
+ '51 a 100 personas', '101 a 250 personas', '251 y más personas'],
162
+ autopct= '%1.1f%%', explode= [0.1, 0, 0, 0, 0.3, 0.6, 0.9], shadow= True)
163
+ eje.axis('equal')
164
+ st.pyplot(figura)
165
+ elif opcion_variable == 'Cuenta con correo electrónico':
166
+ figura, eje = plt.subplots()
167
+ eje.pie(df_segmentado['correo_electronico'].notna().value_counts(),
168
+ labels= ['No cuentan con correo electrónico', 'Sí cuentan con correo electrónico'], autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
169
+ eje.axis('equal')
170
+ st.pyplot(figura)
171
+ elif opcion_variable == 'Cuenta con sitio de Internet':
172
+ figura, eje = plt.subplots()
173
+ eje.pie(df_segmentado['sitio_internet'].notna().value_counts(),
174
+ labels= ['No cuentan con sitio en Internet', 'Sí cuentan con sitio en Internet'], autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
175
+ eje.axis('equal')
176
+ st.pyplot(figura)
177
+ elif opcion_variable == 'Tipo de establecimiento':
178
+ figura, eje = plt.subplots()
179
+ eje.pie(df_segmentado['tipo_establecimiento'].value_counts(), labels= ['Fijo', 'Semifijo'], autopct= '%1.1f%%', explode= [0, 0.1], shadow= True)
180
+ eje.axis('equal')
181
+ st.pyplot(figura)
182
+ elif opcion_grafico == 'De barras':
183
+ opcion_estado = st.sidebar.selectbox('Escoge una entidad federativa para explorar', [i for i in copia_df.groupby(by= 'entidad_federativa').groups])
184
+ df_segmentado = copia_df.groupby(by= 'entidad_federativa').get_group(opcion_estado)
185
+ st.subheader('Selecciona la variable categórica en torno a la cual deseas agrupar los demás valores:')
186
+ if st.sidebar.checkbox('Razón social'):
187
+ figura = plt.figure()
188
+ eje = sns.countplot(y= 'nombre_clase_actividad', hue= '_razon_social', data= df_segmentado)
189
+ st.pyplot(figura)
190
+ elif st.sidebar.checkbox('Rango de personal ocupado'):
191
+ figura = plt.figure()
192
+ eje = sns.countplot(y= 'nombre_clase_actividad', hue= 'rango_personal_ocupado', data= df_segmentado)
193
+ st.pyplot(figura)
194
+ elif st.sidebar.checkbox('Correo electrónico'):
195
+ figura = plt.figure()
196
+ eje = sns.countplot(y= 'nombre_clase_actividad', hue= '_correo_electronico', data= df_segmentado)
197
+ st.pyplot(figura)
198
+ elif st.sidebar.checkbox('Sitio en Internet'):
199
+ figura = plt.figure()
200
+ eje = sns.countplot(y= 'nombre_clase_actividad', hue= '_sitio_internet', data= df_segmentado)
201
+ st.pyplot(figura)
202
+ elif st.sidebar.checkbox('Tipo de establecimiento'):
203
+ figura = plt.figure()
204
+ eje = sns.countplot(y= 'nombre_clase_actividad', hue= 'tipo_establecimiento', data= df_segmentado)
205
+ st.pyplot(figura)
206
+ elif opcion_grafico == 'Mapa de calor':
207
+ etiquetador = LabelEncoder()
208
+ copia_df = df_cargado.copy()
209
+ for columna in copia_df.columns:
210
+ copia_df[columna] = etiquetador.fit_transform(copia_df[columna])
211
+ copia_df.drop(columns= ['nombre_unidad_economica', 'tipo_vialidad', 'nombre_vialidad', 'numero', 'tipo_asentamiento_humano', 'nombre_asentamiento_humano',
212
+ 'codigo_postal', 'entidad_federativa', 'municipio', 'fecha_incorporacion_denue'], inplace= True)
213
+ figura = plt.figure()
214
+ eje = sns.heatmap(copia_df.corr(), annot= True)
215
+ st.pyplot(figura)
216
  elif opcion_general == 'Hallazgos':
217
  st.title('Hallazgos')
218
  elif opcion_general == 'Referencias':
219
  st.title('Referencias')
220
 
221
 
222
+
223
 
224
+
225
+
226
+
227
+
228
+
229
+