LeonardoDPantoja / EDA_Project

Exploratory Data Analysis with INEGI Data from ENIF (Encuesta Nacional de Inclusion Financiera)
MIT License
0 stars 0 forks source link

Comentarios sobre proyecto EDA #2

Open vcuspinera opened 11 months ago

vcuspinera commented 11 months ago

Hola, Leonardo. De forma global veo bien tu proyecto: el repositorio del proyecto tiene la estructura adecuada, realizaste el EDA en Jupyter notebook, compartiste el link del proyecto en el repositorio del curso, agregaste un issue con pendientes del proyecto y la entrega se realizó antes del deadline. Por otro lado, agradecería que me compartieras la liga o evidencia sobre la divulgación del proyecto a través de LinkedIn, redes sociales, revistas de ciencia de datos u otro canal.

A continuación te comparto mis comentarios para algunas secciones, con mayor detalle.

Estructura del repositorio

La estructura es adecuada y seguiste las recomendaciones del paper Good Enough Practices in Scientific Computing.

En el archivo README.md en la carpeta principal del repositorio se incluyó la descripción general del proyecto; sin embargo, faltó incluir un breve resumen de resultados y la liga al Jupyter notebook con el análisis EDA. Veo que en dos carpetas (src y results) se encuentran dos Jupyter notebooks con el nombre “Project.ipynb”, supongo que el archivo de análisis es el que se encuentra en la carpeta src.

Por otro lado, me pareció bien que incluyeras la estructura del repositorio junto con una breve reseña de los archivos principales y las carpetas., así como el detalle expuesto en el archivo CITATION.md

Finalmente, en este mismo README, es decir, el del directorio raíz del repositorio, recomendaría cambiar el título de “EDA_Proyect” a otro más descriptivo sobre el proyecto como el que utilizaste en el enlace “Inclusión financiera” o “Financial inclusion”.

Análisis EDA

Revisé el Jupyter notebook para buscar replicar tus resultados y estos son los comentarios que fueron surgiendo al correr el código:

Para llamar las bases de datos deberías utilizar una ruta relativa que consulte la información que tienes en la carpeta data, podrías utilizar el siguiente código:

dataset = pd.read_csv('../data/Datos 2021.csv')

Algo similar deberís hacer cuando consultas el archivo “Data Final.csv” de la carpeta results:

df = pd.read_csv('../results/Data Final.csv', encoding= 'unicode_escape')

Cuando haces la selección de variable, ¿cómo decidiste seleccionar estas variables? ¿Cuáles variables dummy decidiste conservar?

Cuando revisas sobre la pregunta sobre el banco donde tenía su tarjeta, me llama la atención que el 53% puso 0 (cero), ¿eso significa que “no aplica” o que tiene otro significado? Por otro lado, ¿cuál es la diferencia entre “Otros” y “Otros bancos”?

Sobre el análisis, ¿compartes los calculas para obtener porcentajes a nivel de muestra? ¿O hay forma de expandir los resultados a la población (usando factores de expansión)?

En las gráficas, me da gusto que hayas utilizado Altair en algunas de las gráficas.

Cuando analizas el ingreso eliminas los registros (renglones) cuando son igual a 0 (cero), con lo cual pierdes el 39.2% de tu información. Igual antes de eliminar esta información deberías de decir qué significa que el ingreso sea cero y porqué podría estar sucediendo para identificar si es buena idea o no eliminarlos.

Al analizar los ingresos, si utilizas tooltip (tooltip=["Monto", "Ingreso"]) podrías identificar que los valores que tienen más cantidad son montos redondeados a miles de pesos (como 4000, 6000 y 8000 pesos), mientras que los valores que corresponden a cantidades bajas son montos que no están redondeados a miles de pesos (como 7650 o 4187 pesos) o montos muy elevados (como 98000 pesos).

Sobre la gráfica anterior, recomendaría poner la información por rangos de ingreso, tipo bins, para poder identificar mejor la cantidad de encuestados de acuerdo a rangos de ingreso y no de montos puntuales. A continuación te comparto un ejemplo de código que podrías utilizar para hacer esto:

# manipular base de datos para ponerla por rangos
bins = range(0, max(data_ingreso['Monto']), 2000)
data_ingreso['rangos'] = pd.cut(data_ingreso['Monto'], bins)

df_ejem = pd.pivot_table(data_ingreso, values='Ingreso', index=['rangos'], aggfunc="sum").reset_index()
df_ejem['rangos'] = df_ejem['rangos'].astype('str')
df_ejem

# graficar
alt.Chart(df_ejem).mark_line().encode(
    alt.X("rangos", title = "Rango de ingreso", sort=my_order),
    alt.Y('Ingreso:Q',  title = "Cantidad"),
    tooltip=["rangos", "Ingreso"]
).properties(title="Ingreso de Encuestados", width=800, height=400)

Y la gráfica es la siguiente:

image

Comentarios finales

Me pareció interesante el análisis realizado con información del ENIF, la estructura del repositorio es adecuada, el análisis, visualizaciones y comentarios me parecieron adecuados. Cuando realizas el análisis por monto, recomendaría usar rangos de ingreso en vez de montos puntuales para poder mostrar de forma más eficiente la información. ¡Muy buen esfuerzo, muchas felicidades!

Saludos, Víctor Cuspinera

vcuspinera commented 11 months ago

Link proyecto https://github.com/LeonardoDPantoja/EDA_Project

Divulgación por redes sociales PENDIENTE

LeonardoDPantoja commented 11 months ago

Hola Victor, buen día

Se me paso poner el link en los resultados, yo lo publique en X [Twitter] (https://twitter.com/leonardo_dpm/status/1713739634843230347?t=dLy6qOOIFSThsEEoPs498Q&s=19)

vcuspinera commented 11 months ago

De acuerdo, muchas gracias, Leonardo.

vcuspinera commented 11 months ago

De acuerdo, gracias por compartirlo, Leonardo. Saludos, Víctor

On Oct 24, 2023, at 10:49 AM, LeonardoDPantoja @.***> wrote:

Hola Victor, buen día

Se me paso poner el link en los resultados, yo lo publique en X [Twitter] (https://twitter.com/leonardo_dpm/status/1713739634843230347?t=dLy6qOOIFSThsEEoPs498Q&s=19)

— Reply to this email directly, view it on GitHub https://github.com/LeonardoDPantoja/EDA_Project/issues/2#issuecomment-1777637222, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM3K7AOO74RXJW2534ZU3UDYA7WQVAVCNFSM6AAAAAA6NFCPYWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZXGYZTOMRSGI. You are receiving this because you authored the thread.