Like A Girl

Pushing the conversation on gender equality.

Code Like A Girl

Análisis y visualización de datos con Pandas & MatPlotLib

Imagina que tienes un csv o un archivo de datos separados por comas; quieres darle un poco de análisis para saber que estrategias serán las mejores y obtener de este modo buenas conclusiones o, si estás entrando a la ola de Machine Learning, comprender sobre sus características y la relación entre ellos.

Podrías emplear cualquier herramienta de ofimática pero también podrías aprovechar la oportunidad para pulir un poco tus habilidades en programación 😉

El stack (o conjunto de herramientas) — para las 3 primeras será mucho más fácil instalar Anaconda para tenerlas ya listas — a emplear para ésta ocasión será:

  • Jupyter Notebooks, lo genial de usar jupyter es que permite integrar la programación con visualización, así te ahorras el estar cambiando entre tu editor de texto, terminal y pantalla de visualización.

¡Empecemos el análisis!

Lo primero es importar la librería de pandas en nuestro código, luego de cargar la base de datos podrás pre-visualizarla, así tendrás una mejor idea de los datos que tienes para trabajar.

Previsualizando mi data

¿Tengo manera de saber cúantos registros(filas) tengo? ¡Claro que sí!

El método shape me permite de manera fácil las dimensiones de mi matriz

Puedes notar que cuando pre-visualizas los datos, la columna Cabin tiene algunos valores en NaN, éste valor se traduce en python como un None y en humano como un valor nulo. Sería súper útil saber que registros por columna tienen datos valores nulos y en un sólo método puedes obtener esa cuenta.

Nota que el valor máximo es 891, el cual es el número de pasajeros en el dataset de Titanic que empleado en el ejemplo

Otra forma de saber la cuenta de valores nulos, es contarlos por columna, ya que con el data.count() lo que estoy obteniendo en realidad es la cuenta de datos no-nulos y esto sale de iterar sobre una lista de columnas y preguntando a cada uno por el método isnull() y obteniendo la suma con sum()

No todo es Pandas, podemos hacer un poquito de programación ❤

Usualmente cuando trabajamos con dataset o colecciones de datos, queremos hacer algún tipo de estandarización a los valores o darles algún formato en particular. Tomemos como ejemplo la columna Sex, que tiene como únicos valores male y female y se me ocurre querer reemplazarlo por M y F respectivamente. Una vez, invocando habilidades de programación podemos hacerlo con diccionarios y funciones lambda — las cuales no siempre son tan fáciles de entender, pero espero que en el ejemplo no sea tan complicado de hacerlo —

Tratar de acceder a cada columna con data[¨nombredelacolumna¨] se vuelve tedioso cuando quieres hacer varias rondas de análisis, afortunadamente hay otra forma de acceder y es la que utilizaré en el resto del análisis del dataset.

También obtener información de los principales indicadores estadísticos sobre nuestro dataset en una sola línea :O

Puedes ver que para Fare, el mínimo valor es 0…¡¿Eso quiere decir que hubo personas que viajaron gratis?!

Algunas personas obtuvieron tickets de cortesía, ¿Quizá algún instagrammer para documentar la travesía? #okno

Algo también genial de pandas es que podemos hacer agrupaciones o tablas de referencia cruzada

Podemos ver, en números, las mujeres sobrevivieron más

¿Y agrupaciones por varias columnas? ¡Es posible! y súper fácil

¿Cúantas mujeres y hombres sobrevivieron por clase?

¡Visualicemos!

¿Cúantas personas sobrevivieron al desastre del Titanic? (Además de Rose)

MatPlotLib es la librería en Python más utilizada para hacer análisis gráfico o ploteo.

Además de importar la librería, lo primero es determinar el tamaño del canvas(área de dibujo) para las gráficas; para el ejemplo agregué el subplot2grid para poder tener los gráficos uno al lado del otro.

La gráfica izquierda muestra los sobrevivientes en número mientras que la de la derecha los muestra en porcentajes. Menos del 40% de nuestro dataset sobrevivió 🙁

¿Quiénes sobrevivieron más, los hombres o las mujeres? Realmente lo que vimos en la película ¿fue cierto?

Nota que podemos filtrar por sobrevivencia data.Sex[data.Survived == 1]

Podemos ver que en nuestro dataset la mayoría de sobrevivientes fueron mujeres

¿El tipo de tiquete (clase de cabina) influyó en la supervivencia de los pasajeros?

Resulta interesante que quienes tenían un tiquete de clase intermedia tuvieron poca chance de sobrevivir, ¡sería un interesante análisis!

Algo que se podría inferir en relación a edad-economía es que probablemente las personas más jóvenes tenían menos dinero y por ende compraron los tiquetes más baratos.

Ésto lo podemos ver con un gráfica de densidad, otro tipo (kind) de gráfica disponible en matplotlib

Si vemos la línea verde (3ra. clase) vemos que el promedio de edad es cerca de los 20 años y en 1ra. clase el promedio de edad es 40, lo que muestra una relación entre edad-economía

Algo interesante de la gráfica anterior es notar que las líneas de edad no empiezan en 0….¡Había infantes!

Afortunadamente todos los bebés de nuestro dataset sobrevivieron, un posterior análisis sería averiguar si sus padres o al menos sus madres sobrevivieron.

Ésta fue una súper breve introducción a Análisis de datos con Pandas, el código completo puede ser encontrado en este repositorio.