Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este informe se realiza en el contexto del curso de análisis exploratorio de datos en Python como
parte de las actividades curriculares, y tiene como objetivo principal lograr identificar las variables
que se pueden presentar en el proceso de recolección de datos, establecer el proceso que debe
realizarse en los casos de que las variables de estudio presenten errores, no contengan información
o se encuentren en formatos distintos. Así mismo, se busca comprender como realizar un análisis
de datos univariado y multivariado implementando elementos propios de a estadística con
herramientas digitales basadas en el lenguaje Python.
DESARROLLO
ANALISIS Y DISEÑO
INICIO DEL PROYECTO
En esta primera fase se tiene como objetivo realizar un levantamiento de información con el fin de
identificar factores sobre tecnologías utilizadas, fuentes de datos, acceso de información, volumen
de información, instalaciones entre otras.
Para el caso de estudio, se tiene que es un negocio de venta de seguros médicos, Los datos se
encuentran disponibles en una URL de datos abiertos en formato CSV lo cual ayuda mucho en el
proceso inicial de análisis.
ROLES DE TRABAJO:
En este caso de estudio se cuenta con:
Un ingeniero (David Murcia) autor del presente informe, quien hará las veces de Científico y
arquitecto de datos y también como Analista de negocio.
Un ingeniero (Luis Alberto Galicia) Quien hará las veces de Arquitecto empresarial, gerente de
analítica y patrocinador del proyecto.
ENTENDER EL NEGOCIO
En esta fase se define los objetivos y posibles beneficios del análisis, por lo cual se plantea la
siguiente evaluación del caso:
Inventario:
Tabla 1: Evaluación del negocio – Inventario inicial.
Elemento Cantidad Tipo Observación.
Requerimientos y restricciones:
No se mencionan restricciones considerables de importancia o de gran impacto para el caso.
Planteamiento del objetivo:
Para un correcto análisis de la información se realizan los siguientes planteamientos de preguntas
objetivos:
CONFIGURACION Y EJECUCION
PREPARANDO LOS DATOS
En esta fase se procede a realizar el alistamiento de los datos, para lo cual se necesita revisar si no
se contienen registros nulos, vacíos o erróneos.
CONSTRUIR MODELOS
fig6- categorías por rangos
Podemos categorizar los
datos, agregando rangos
como una nueva columna de
datos, para esto construimos
con una lista en Python los
“bins” o contenedores que
representan los diferentes
rangos. Así mismo podemos
dar labels o etiquetas a dichos bins, y crear la nueva columna con el siguiente comando:”
df["Rango_edad"] = pd.cut(df["edad"], rangos,labels=nombrerangos)” en
Fig 7. – descripción general de
la información leida.
Con ayuda de la función
“describe()” podemos obtener
de forma muy rápida las
principales mediciones
estadísticas para comenzar con
el análisis de datos. Estas son,
media, mediana, moda,
desviación estándar y los
percentiles.
Fig8- histogramas de las variables, hijos, imc, edad, valor_seguro.
Ahora aprovechando los beneficios de los histogramas, podemos graficar y visualizar de forma más
clara la información que se muestra con cada variable, para eso usamos la función
“df.hist(bins=30,figsize=(20,10))” , hist() es un metodo que permite graficar las variables del
objeto que contiene los datos.
fig. 9 – Graficas con matploit y
Seaborn.
Ahora aprovechando las bondades
de las librerías Matploitlib y
Seaborn, podemos lograr graficas
mas vistosas, que permiten
personalizar mucho mas los
colores, laves y componentes del
histograma. En la primera parte se
visualiza el instograma en función
de la edad, donde podemos
determinar que la mayor
distribución de datos se
encuentran para las edades de
personas mas jóvenes menores a
20 años.
En el histograma de la variables
IMC, podemos deducir que la
mayor parte de las personas
tienen un imc de 30.
sns.countplot(df.Rango_edad)
total_hijos = df["hijos"].groupby(df["hijos"]).count()
etiquetas=[0,1,2,3,4,5]
con el metodo groupby, y count() estamos haciendo un conteo de cada grupo relacionado.
Además con el parámetro autopct, podemos brindar el formato para la visualización del
porcentaje.
autopct="%.0f%%"
Debemos pasar a la
función los valores de “X”
y los valores de “y”,
usando para eso las columnas que queremos analizar
CONCLUCIONES
Con los análisis univariados y multivariados podemos concluir que:
• El 80% de las personas no son fumadores.
• Cerca del 45 % de los clientes no tienen hijos.
• Aproximadamente, el 70 % de los clientes tiene al menos un hijo.
• El rango de edad para el rango A representa cerca del 30 % del total de registros.
• Los valores pagados al seguro por los clientes identificados como fumadores equivalen al 50
% del total.
• A pesar de que los clientes no fumadores equivalen al 80 %, solo representan el 50 % del
valor total del seguro.
• La región no es determinante en el valor del seguro.
• Lo más relevante en los valores pagados al seguro se dio en personas que son fumadores
BIBLIOGRAFIA.
Componente formativo, OVA curso análisis de datos con Python. SENA 2023, recuperado de:
https://sena.territorio.la/content/index.php/institucion/Complementaria/institution/SENA/Tecnol
ogia/21710112/Contenido/OVA/CF2/index.html#/curso/tema5
Anaconda:
https://www.anaconda.com/
[ ]: import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("DatosSeguros.csv")
df.info()
[ ]: df.isnull().sum()
[ ]: df=df.dropna()
[ ]: df.info()
[ ]: df = df.drop_duplicates()
[ ]: df.info()
[ ]: edad = df.sort_values("edad")
[ ]: edad.head(10)
[ ]: edad.head(50)
[ ]: edad = df.sort_values("edad",ascending=False)
edad.head(10)
[ ]: rangos = [17,28,38,48,58,68]
nombrerangos =["A","B","C","D","E"]
df["Rango_edad"] = pd.cut(df["edad"], rangos,labels=nombrerangos)
df.head()
[ ]: df.describe()
[ ]: df.hist(bins=30,figsize=(20,10))
1
[ ]: plt.Figure(figsize=(10,7))
sns.countplot(df.Rango_edad)
plt.show()
[ ]: total_hijos = df["hijos"].groupby(df["hijos"]).count()
etiquetas=[0,1,2,3,4,5]
[ ]: colors=sns.color_palette("pastel")[0:6]
[ ]: total_rango_edad= df["Rango_edad"].groupby(df["Rango_edad"]).count()
labels = ["A","B","C","D","E"]
colors = sns.color_palette("Set2")[0:5]
plt.pie(total_rango_edad, labels=labels,colors=colors,autopct="%.1f%%")
plt.show()
[ ]: RelEdad_Valor = sns.boxplot(x=df["Rango_edad"],y=df["valor_seguro"])