# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # Resumen de los datos: dimensiones y estructuras

import pandas as pd
import os

mainpath= "/Users/mario/Documents/Coding/Machine Learning/Curso/python-ml-course/datasets"
filename="titanic/titanic3.csv"
titanic=pd.read_csv(os.path.join(mainpath,filename))

titanic.head(10)

titanic.tail(3)#Cola

titanic.shape

titanic.columns.values #Obtener nombres de las columnas a partir del data frame

# ## Resumen de los estadísticos básicos de las variables númericas

#     cantidad(cuantos no nulos),promedio,media,quantiles

titanic.describe()#summary de R

titanic.dtypes#tipo de datos de las columnas

# # Missing values

pd.isnull(titanic["body"]).values.ravel().sum()#Total de valores nulos de la columna

pd.notnull(titanic["body"]).values.ravel().sum()#Total de valores no nulos de la columna

# Los valores que faltan en un data set pueden venir por dos razones:
# * Extracción de los datos de la base de datos
# * Recolección de los datos

# ### Borrado de valores que faltan

titanic.dropna(axis=0,how="all").head()
#Borraria la fila. axis=1 borraria toda la columna; how => columnas que deben tener NaN para ser borrada la fila

data=titanic
data.dropna(axis=0,how="any")#Si alguna columna tiene NaN se borra la fila

# ### Cómputo de los valores faltantes 
#
# Consiste en sustituir los valores NaN por algún valor determinado

data.fillna(0).head()#Rellenar columnas NaN con un 0

data.fillna("Desconocido").head()

#Con sobre escritura del data frame 'data':
data=titanic
data["body"]=data["body"].fillna(0)#Sustituye solo la columna de body
data["home.dest"]=data["home.dest"].fillna("Desconocido")
data.tail(3)

data["age"].fillna(data["age"].mean()).head()#Sustituir por la media

data["age"][1291]

data["age"].fillna(method="ffill")[1291]#Sustituye por el primer valor conocido hacia atras

data["age"].fillna(method="backfill")[1291]#Sustituye por el primer valor conocido hacia delante 

# # Variables Dummy

data=titanic
data["sex"].head(3)#Variable categorica de la que se obtendran dos variables dummy(male y female)

dummy_sex=pd.get_dummies(data["sex"],prefix="sex")
dummy_sex.head(3)

#Eliminar la columna categorica sex y crear dos nuevas columnas generadas de las variables dummy:
data2=data.drop(["sex"],axis=1)#Eliminar columna
pd.concat([data2,dummy_sex],axis=1).head(2)#Concatenar las nuevas columnas


def createDummies(dataFrame,var_name,axis):
    #pd => pandas library
    dummy=pd.get_dummies(dataFrame[var_name],prefix=var_name)
    dataFrame=dataFrame.drop(var_name,axis)
    dataFrame=pd.concat([dataFrame,dummy],axis)
    return dataFrame


createDummies(titanic,"sex",1).head(3)

StarcoderdataJupyterScriptsDedupFiltered