Ciencia de datos, parte 1.

Miguel Angel Díaz Rodríguez
2 min readApr 4, 2020

--

Un proyecto de ciencia de datos tiene varias fases:

  1. Entender el contexto y tener claro el objetivo.
  2. Entender las fuentes y datos.
  3. Transformar los datos. (algoritmos, transformaciones, visualizaciones)
  4. Evaluar los resultados, ¿vamos cumpliendo el objetivo?
  5. Implementar la solución.

Mi intención es crear una guía paso a paso para que cualquiera pueda trabajar en un proyecto de ciencia de datos y lo saque adelante de forma exitosa.

En esta sección voy a hacerle doble click al punto 2, entender las fuentes y datos. Para ello diseñé el siguiente código en python

def madunique(df):
names=list(df.columns)
unique=[]
for var_i in names:
unique.append(len(df[var_i].unique()))
df_unique=pd.DataFrame(unique,index=list(df.columns))
df_unique.columns=['unique']
return df_unique
def madprofiling(df):
profiling=pd.DataFrame(df.dtypes)
profiling.columns=['type']
profiling.loc[profiling.type=='object', 'categorical'] = 1
profiling.loc[profiling.type!='object', 'categorical'] = 0
profiling['total']=(len(df))
profiling=pd.concat([profiling,madunique(df)],axis=1,sort=False)
profiling['null']=pd.DataFrame(df.isnull().sum())
profiling['na']=pd.DataFrame(df.isna().sum())
profiling['null_pcnt']=round(profiling.null/profiling.total,1)
profiling['na_pcnt']=round(profiling.na/profiling.total,1)
profiling=profiling.sort_values(by='null_pcnt')
return profiling

Que recibe un pandas dataframe y hace un perfilamiento de los datos, veamos un ejemplo.

Importamos los datos y cargamos en un pandas dataframe.

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

Usamos la función.

madprofiling(iris)
Output de madprofiling(iris)

Tenemos una vista 360° del data set. Sabemos el formato de cada campo (‘type’), sabemos si el campo es categorico o no (‘categorical’), sabemos el total de registros de cada campo (‘total’), el número de registros únicos por campo (‘unique’), el número de registros nulos por campo (‘null’), el número de registros tipo ‘na’ por campo y finalmente el porcentaje de registros tipo null y tipo na por campo.

--

--

Miguel Angel Díaz Rodríguez

I am a curious person, passionate about learning. More than 1/2 decade in analytics. During my spare time I kitesurf and co-organize ApacheSparkBogota Meetup.