Laboratorio 2 Estadística en Python - Parte 1
Laboratorio 2 Estadística en Python - Parte 1
Laboratorio 2 Estadística en Python - Parte 1
Introducción
La función disruptiva del BIG DATA ha transformado el papel de la ESTADÍSTICA en los
últimos años, en efecto, la explosión del BIG DATA claramente presenta nuevos retos: un
mayor volumen, velocidad y variedad de datos, nunca antes vistos. Por ejemplo, se estima que
el 90% de los datos en el mundo de hoy se han creado en los últimos 2 años. La cantidad de
datos recopilados desde los albores de la humanidad hasta 2003 era el equivalente al volumen
que ahora producimos cada 2 días (director ejecutivo de Google, Eric Schmidt).
Hoy en día necesitamos más que nunca la alfabetización ESTADÍSTICA, para entender el
mundo que nos rodea y evitar la proliferación de afirmaciones engañosas o falsas (ya sea por
políticos, publicistas, vendedores, etc.).
Cuanta más información tenemos más probable es que encontremos relaciones entre
variables, aunque no necesariamente estas serán reales. Discernir una relación causal de una
correlación espuria es y será un punto clave. Es aquí donde la ESTADÍSTICA tiene mucho para
ofrecernos, nos permitirá separar la “paja” del “trigo”.
Estos métodos gráficos son de mucha utilidad para entender con claridad un fenómeno
analizado. La evolución de la inflación, el tipo de cambio, del PIB u otros indicadores macro
pueden ser analizados, por ejemplo, con gráficos de tendencia.
Ejercicio
Se dispone de una muestra de 10 personas para las que se han medido las variables:
EDAD (en años)
SEXO (codificada como 0: “Hombre”; 1:“Mujer”)
NIVEL DE ESTUDIOS ( 0: “Sin estudios”; 1: “Estudios Primarios”; 2: “Estudios
Secundarios”; 3:“Estudios Superiores”)
Los datos se muestran en la tabla siguiente:
edadsexoestudios
18 0 1
19 1 2
0 0
18 0 1
24 1 3
17 0 2
22 0 3
15 1 1
22 1 2
25 0 3
Con estos datos se desea:
1) Construir tablas de frecuencias unidimensionales para las tres variables.
2) Construir una tabla de frecuencias cruzadas con las variables “sexo” y “nivel de
estudios”.
3) Construir una tabla de frecuencias de la variable edad agrupada en intervalos.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'edad': [18, 19, None, 18, 24, 17, 22, 15, 22, 25],
'sexo': [0, 1, 0, 0, 1, 0, 0, 1, 1, 0],
'estudios': [1, 2, 0, 1, 3, 2, 3, 1, 2, 3]})
Dado que los valores asociados a las variables “sexo” y “estudios” son categorías,
recodificamos dichas variables, asignando las etiquetas adecuadas:
Una vez que hemos introducido los datos procedemos a resolver la tarea solicitada
inicialmente.
Tablas de frecuencias unidimensionales
1. Construir las tablas de frecuencias unidimensionales para las variables edad, sexo y
nivel de estudios. Aquí se muestra como ejemplo el caso de edad y de forma análoga
se construyen para las otras dos variables
En Python los comandos para el reporte de frecuencias absolutas se puede hacer mediante el
método value_counts() y el de frecuencias relativas mediante value_counts(normalize=True).
df['edad'].value_counts(dropna=False)
Debemos notar que, por defecto, Python no muestra cuantos valores perdidos hay en los datos.
Para ello debemos utilizar la opción dropna=False, como se hizo en el caso anterior.
df['edad'].value_counts(dropna=False, normalize=True)
df['edad'].value_counts(dropna=False).cumsum()
Al comando hecho para frecuencia absoluta, basta con aplicar el método cumsum(), el cual irá
haciendo la suma acumulada.
De la misma forma, podemos también mostrar la frecuencia relativa acumulada de cada valor
de la variable edad:
df['edad'].value_counts(dropna=False, normalize=True).cumsum()
Incluso, es posible crear una tabla con los distintos tipos de frecuencias:
fa =
df['edad'].value_counts(dropna=False).rename_axis('edad').reset_index(name='f
a')
fr = df['edad'].value_counts(dropna=False,
normalize=True).rename_axis('edad').reset_index(name='fr').drop(columns=['eda
d'])
faa =
df['edad'].value_counts(dropna=False).cumsum().rename_axis('edad').reset_inde
x(name='faa').drop(columns=['edad'])
fra = df['edad'].value_counts(dropna=False,
normalize=True).cumsum().rename_axis('edad').reset_index(name='fra').drop(col
umns=['edad'])
fa.join(fr.join(faa.join(fra))) tablafrecuencias
pd.crosstab(df['estudios'], df['sexo'])
df['edad'].value_counts(bins=10)
Como se aprecia, se decidió por hacer 10 bins. Si se quiere hacer de forma gráfica, y que se
nos recomiende una cantidad de bins, se puede hacer mediante un histograma.
Vamos a hacer uso de una librería gráfica de Python, llamada matplotlib (la cual importamos al
principio del ejercicio). Mediante el comando a continuación, se puede construir un histograma
de la variable edad:
plt.hist(df['edad'].dropna())
plt.title('Histograma Edad')
plt.xlabel('Edad')
plt.ylabel('Frecuencia')
plt.show()
Notar que al construir el histograma, pasamos los datos de edad, aplicando el método
dropna(). Esto se hace dado que edad tiene datos nulos, y este método los descarta.