Está en la página 1de 19

ACTIVIDAD DE APRENDIZAJE AA3_EV2 Y AA4

Estudio de caso: Informe sobre análisis exploratorio de datos

DAVID RODOLFO MURCIA PERALTA


Davidmurcia001@gmail.com
C.C: 14295634
FICHA: 2775830

ANALISIS EXPLORATORIO DE DATOS EN PYTHON


SERVICIO NACIONAL DE APRENDIZAJE SENA
JUNIO DE 2023
Contenido
INTRODUCCION ................................................................................................................................... 3
METODOLOGIA.................................................................................................................................... 4
DESARROLLO ....................................................................................................................................... 4
ANALISIS Y DISEÑO .......................................................................................................................... 4
INICIO DEL PROYECTO ................................................................................................................. 4
ENTENDER EL NEGOCIO .............................................................................................................. 5
DESCUBRIMIENTO DE LOS DATOS............................................................................................... 6
CONFIGURACION Y EJECUCION ....................................................................................................... 7
PREPARANDO LOS DATOS ........................................................................................................... 7
CONSTRUIR MODELOS ................................................................................................................ 9
Fig12. Grafica multivariable. ......................................................................................................... 15
DESPLIEGUE Y OPTIMIZACION ...................................................................................................... 16
EVALUAR EL MODELO ............................................................................................................... 16
CONCLUCIONES ................................................................................................................................. 16
BIBLIOGRAFIA. ................................................................................................................................... 16
ANEXOS: ............................................................................................................................................ 17
INTRODUCCION
El presente informe busca la presentación del análisis exploratorio de datos para el caso de estudio
de un negocio que trabaja con seguros médicos.

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.

Este informe esta desarrollado de acuerdo a los siguientes requerimientos:


• Procedimiento para la importación del archivo en formato CSV
• Plante una pregunta objetivo
• Total, de Registros
• Total, de columnas
• Detallado de cada columna
• Identificar cuáles de las columnas son categóricas y numéricas
• Identifique en que columnas existen valores nulos
• Identifique si existen registros duplicados
• Realice un reporte estadístico de los datos numéricos (media, moda, mediana, desviación
estándar, cuartiles, entre otros que considere)
• Identifique columnas con valores erróneos
• Utilice gráficos para identificar valores atípicos
• Realice histogramas de frecuencia
• Use la herramienta para gráficos para determinar correlación entre variables
• Realice y explique la eliminación de datos nulos y duplicados
• Agrupe columnas que considere pueden generar información importante
• Cree nuevas columnas a partir de las existentes
• Identifique columnas que no aportan de acuerdo con su pregunta objetivo
• Realice conclusiones sobre las variables que considere tienen mayor relevancia
• Dejar documentado usando gráficos y capturas de pantalla todo el proceso realizado.
METODOLOGIA
Para el desarrollo de este informe se seguirá una metodología utilizada en la ciencia de datos como
buenas prácticas para el análisis de volúmenes de datos grandes, modelos predictivos,
automatización de procesos, entre otros. Es decir, bajo la metodología ASUM-DM de IBM.
ASUM, se desarrolla en 3 ETAPAS PRINCIPALES divididas en un total de 6 fases, así:

1 ANALISIS Y DISEÑO: Se dividirá en 3 fases:


• Inicio del proyecto.
• Entender el negocio
• Descubrimiento de los datos
2. CONFIGURACION Y EJECUCION: Se dividirá en 2 fases
• Preparando los datos
• Construir modelos
3. DESPLIEGUE, OPERACIÓN Y OPTIMIZACIÓN.: se desarrollar en 1 fase.
• Evaluar el modelo

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.

Fuente disponible de datos en:


https://sena.territorio.la/content/index.php/institucion/Complementaria/institution/SENA/Tecnol
ogia/21710112/Contenido/OVA/CF2/downloads/DatosSeguros.csv
Por otra parte, se indaga que los datos tienen un formato estructurado por lo que es pertinente el
uso de herramientas para el análisis de datos basadas en Python en el entorno JupyterLab.
Las herramientas tecnológicas con las que se cuentan, son suficientes para poder proceder con el
estudio, teniendo presente que es un estudio de caso no se reflejan mayor imprevistos ni
impedimentos de costos para la ejecución del análisis. Se procede con equipos y software propios.

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.

Equipo de cómputo 2 Hardware Disponible para ejecutar


portátil los análisis requeridos

Conectividad a internet 1 Servicio Disponible para realizar


consultas y para tareas de
investigación y
comunicación.

Datos 1 Fichero CSV Fuente de datos directa


disponible para el análisis.

Recurso Humano 30 Personas Participantes del curso de


análisis que pueden
colaborar en la ejecución
del estudio de caso.

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:

• ¿Las personas fumadoras representan el mayor potencial para ventas de seguros?


• ¿Cuál es la edad poblacional en la que se debe concentrar la estrategia comercial
teniendo en cuenta el mayor ingreso?
• ¿Cuál es la región con mayor potencial de venta de seguros teniendo en cuenta los
ingresos?

DESCUBRIMIENTO DE LOS DATOS


Una vez adquiridos los datos desde la fuente original, se crea un directorio de trabajo para
almacenar dicha información en bruto, así como también se crea un notebook que permitirá
comenzar con la visualización de la información disponible.

Paso 1: realizamos el pre-alistamiento de las herramientas tecnológicas, estas son:

• Equipo de cómputo con sistema operativo Linux Ubuntu 22.


• Entorno configurado para el análisis de datos con Anaconda 3
• Python 3.10.9
• Numpy 1.23.5
• Jupyter 1.0.0
• Matploitlib 3.7.0
• Pandas 1.5.3
• Seaborn 0.11.2

Paso 2: importamos librerías necesarias y creamos objeto


tipo pandas como variable de almacenamiento de los datos.

Paso 3: se analiza el tipo de información contenida, usamos el


comando “df.info()”:

Fig1. Lectura de fichero CSV

De la anterior imagen se identifica que:

• Existe un total de 1349 registros originales.


• Existe un total de 7 columnas.
• Las columnas tienen la siguiente distribución: (ver tabla 2)

Tabla 2, tipos de datos contenidos.


Categóricas Numéricas

Sexo, fumador, region Edad, imc, valor_seguro, hijos

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.

fig2. Uso de isnull


Con la función “isnull()” podemos validar si hay registros
vacíos o nulos dentro del objeto “df” que contiene toda la
data. Para este caso se identifica que:

• La columna “imc” contiene 2 registros vacíos


• La columna “fumador” contiene 2 registros vacíos
Fig3. Uso de dropna()
Usamos el método, “df.dropna()” para
eliminar los registros vacíos, el resultado se
almacena nuevamente en el objeto df, con
esto tenemos la variable de datos sin
registros nulos.

En la grafica podemos ver que se redujo el


numero de entradas a 1345, después de
haber eliminado los registros nulos.

fig4. Eliminando duplicados


Utilizando el comando
“Drop_duplicates()” podemos
eliminar cualquier registro que
tenga exactamente el mismo dato
en todas las columnas, también
podemos usarlo con la función
sum() para contar previamente
cuantos registros duplicados
tenemos. Si aplicamos el método en
el caso de estudio, vemos que los
registros duplicados eliminados
dejan ahora un total de 1333
registros únicos en el objeto df.
Ahora, podemos también ordenar
los datos de forma ascendente o
descendente en función de
cualquiera de las variables, en la
grafica visualizamos el ordenamiento
en función de la “edad”.

Con el comando “sort_values()”


podemos aplicar ordenamiento de
datos, si agregamos el parámetro
“ascending=False”, podemos
ordenar en orden invertido.

Fgi5- ordenamiento de datos

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.

Como vemos las graficas pueden


personalizarse con los parámetros,
color, Kde, bin. Entre otros.

“sns.histplot(df.imc, color="c", bins=30,kde=True)”


figura10. Grafico de barras

Como creamos categorias para la


variables “edad” podemos visualizar l
distribución de las edades por las
categorías creadas en un diagrama de
barra, para ello podemos hacer uso de
la función:

sns.countplot(df.Rango_edad)

Con el parámetro figsize del método


Figure podemos dar las medidas del eje
X y Y.

A continuación utilizamos un agrupamiento de la variable hijos y de la variable rango_edad, para


poder ver de forma porcentual como están distribuidos estos grupos en relación al total.

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.

La grafica de torta se logra, con el metodo :

plt.pie(total_hijos, labels =etiquetas, colors=colors, autopct="%.0f%%")

Además con el parámetro autopct, podemos brindar el formato para la visualización del
porcentaje.

autopct="%.0f%%"

El resultado se visualiza en al figura siguiente:


Fig 11 – Graficos de torta de las variables hijos, rango_edad.
Fig12. Grafica
multivariable.

En los graficos de caja o


bigote podemos
correlacionar mas de una
variable para poder
asociar la afectación que
tiene una columna sobre
otra.

Para el ejemplo se utiliza


la función sns.boxplot
para generar la grafica. Es
decir estamos haciendo
uso de la librería
Seaborn.

Debemos pasar a la
función los valores de “X”
y los valores de “y”,
usando para eso las columnas que queremos analizar

La grafica anterior se logra ejecutando:

RelEdad_Valor = sns.boxplot(x=df["Rango_edad"],y=df["valor_seguro"]) primera grafica

fumador_valor = sns.boxplot(x=df["fumador"], y=df["valor_seguro"]) segunda grafica


DESPLIEGUE Y OPTIMIZACION
EVALUAR EL MODELO
Con toda la información recolectada y analizada se proceden a las tomas de decisiones que
permitan evaluar la efectividad del modelo, para esto se trata de dar respuestas a las preguntas
planteadas desde un inicio, se plantean modificaciones para un nuevo estudio o se plantean
nuevos y diferentes interrogantes, se dejan a continuación las conclusiones del presente estudio
donde se evalúa la pertinencia del modelo implementado.

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/

Análisis exploratorio de datos con Python


https://www.kaggle.com/code/abonaplata/analisis-exploratorio-de-datos-con-python/notebook
ANEXOS:
AnalisisDatos

June 26, 2023

[ ]: 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))

[ ]: sns.histplot(df.edad, color="b", bins=30,kde=True)

[ ]: sns.histplot(df.imc, color="c", bins=30,kde=True)

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]

[ ]: plt.pie(total_hijos, labels =etiquetas, colors=colors, autopct="%.0f%%")


plt.show()

[ ]: 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"])

[ ]: fumador_valor = sns.boxplot(x=df["fumador"], y=df["valor_seguro"])

También podría gustarte