Justificación y contexto de tu proyecto

1

Cómo crear tu proyecto de ciencia de datos

2

Crea proyectos para afianzar tus conocimientos en ciencia de datos

3

Cada cuánto hacer un proyecto de datos

4

Dónde sacar ideas para proyectos de ciencia de datos

5

Generar y comunicar un proyecto de datos

6

Casos: personas que ya pasaron por este camino

Quiz: Justificación y contexto de tu proyecto

Ejecutando un proyecto de ciencia de datos

7

Plantea una pregunta interesante

8

Obteniendo los datos para tu proyecto

9

Ejecutando: obteniendo los datos

10

Limpieza de la información

11

Ejecutando: limpia tu conjunto de datos

12

Explora y encuentra patrones en la información

13

Ejecutando: exploración de la información

14

Ejecutando: completando la exploración de la información

15

Enriquecimiento de los datos para análisis profundo

16

Ejecutando: enriquecimiento de los datos

17

Aplicando un modelo de machine learning

18

Ejecutando: aplicando un modelo supervisado de machine learning

19

Ejecutando: aplicando un modelo no supervisado de machine learning

20

Ejecutando: aplicando un modelo no supervisado de anomalías

21

Prepara tu trabajo para comunicarlo con el mundo

22

Ejecutando: prepara tu trabajo para comunicarlo con el mundo

Quiz: Ejecutando un proyecto de ciencia de datos

Comunicando los resultados

23

Por qué es importante comunicar los resultados

24

Escribiendo tu primer blogpost técnico

25

Compartiendo en comunidad con tu primera presentación

26

Cómo mejorar tu repositorio en GitHub para ciencia de datos

27

Haciendo deploy de tus modelos

28

Construyendo una aplicación full stack que consuma tu proyecto

Quiz: Comunicando los resultados

Últimos pasos

29

Elige terminar: es mejor terminado que perfecto

30

Recuerda los objetivos del proyecto: practicar y carta de presentación

31

Comparte tu proyecto

32

Share sessions y office hours: comparte y asesorate de tu proyecto

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Ejecutando: limpia tu conjunto de datos

11/32
Recursos

Aportes 9

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Aquí va mi versión de función para crear los distintos dataframes:

def dataframe(file, sheet, rows):
    df=pd.read_excel(file, sheet_name=sheet, skiprows=rows)
    df['SHEET']=sheet
    return df
df_personales=dataframe('12_DICIEMBRE_2020.xlsx', 'SERV. PERS.', 5)
df_personales.head() 

Me tomó un par de días lograrlo (tenía data de gobiernos). Estos fueron algunos retos que tuve y aprendizajes:

  • Fechas: la mayoría de veces hay que pasar del tipo object al tipo datetime. Un reto especial que encontré fue que se debe usar el parámetro dayfirst=True en el método pd.to_datetime() cuando el formato tiene el día primero. Si no se realiza, las fechas se volverán locas y todo saldrá mal (estuve 3 horas trabajando con la data incorrecta). 😂
  • Datos negativos y datos erróneos: una buena práctica si se tiene muchos datos es visualizarlos para ver si todo está bien (tip: usa figsize=[12, 8] o más para que puedas visualizar correctamente y no se te escape nada). Aquí encontré datos que no debían ser negativos como negativos y tuve que transformarlos. Además, encontré datasets que en un solo día tenían la mayoría de registros, así que tuve que buscar otros que tengan la información tomada correctamente.
  • Trasponer: me encontré registros que me hubieran servido mucho como filas, pero estaban como columnas. .transpose() me salvó acá.
  • Crear nuevos datos: había muchas cosas como datos acumulados y datos agrupados que me servirían mucho, no estaban en la data original, pero hice agregaciones y los fui creando para mi análisis futuro.
  • Eliminar columnas: así mismo, muchas columnas no me servirían, así que las eliminé y luego exporté los DataFrames procesados. Funciones como .diff() me ayudaron para agregar con la misma columna pero en diferentes filas.
  • Dividir el trabajo: por último, separé el trabajo en 3 notebooks de limpieza y carga. No sé qué tan buena práctica sea, pero me pareció correcto separarlos por tema (sino hubiera quedado un notebook gigante).

Comparto código que lee y concatena los sheets

import xlrd
import pandas as pd
filename = '12_DICIEMBRE_2020.xlsx'

xls = xlrd.open_workbook(filename, on_demand = True)
sheet_lst = xls.sheet_names()
df = pd.DataFrame()

for i in range(1,len(sheet_lst)):
    df_read = pd.read_excel(filename, sheet_name=sheet_lst[i], skiprows=5)    
    df_read['sheet'] = sheet_lst[i]
    df = df.append(df_read)

Aquí mi función para reutlizar el código

def create_df(sheet_name, data_path , rows = 5):
    df = pd.read_excel(data_path, sheet_name = sheet_name, skiprows = rows)
    string = sheet_name.replace("  ", "_")
    df["SHEET"] = string
    return df

Si queremos obtener los nombres de los sheets en una lista (ya que podrían ser muchos) podemos hacerlo con VBA con el siguiente codigo:

Public Function NombreHojas()
    Dim Arr() As String
    Dim I As Integer
    ReDim Arr(Sheets.Count - 1)
    For I = 0 To Sheets.Count - 1
        Arr(I) = Sheets(I + 1).Name
    Next I
    NombreHojas = Application.WorksheetFunction.Transpose(Arr)
End Function

Esto lo encontré por curiosidad en este link

Análisis de la Movilidad en Bogotá

¿Cuáles son las rutas más críticas de movilidad y sus características en la ciudad de Bogotá?

Se toman los datos de la plataforma:
https://datos.movilidadbogota.gov.co

He tomado los datasets del año 2019, vienen en archivos CSV para cada mes:

Utilicé la siguiente función para tener un solo DF (para mí fue un reto):

'''
Recibe como parámetro de entrada una lista de archivos CSV,
hace la lectura y concatena los dataframes, siendo esta concatenación el retorno.
Los datos en los archivos CSV deben tener la misma estructura.
'''
def df_builder(data_list):
    n_files = len(data_list) - 1
    df_full = pd.read_csv(data_list[n_files])
    
    for i in range(n_files - 2):
        df_i = pd.read_csv(data_list[i])
        df_full = pd.concat([df_full, df_i])
    
    return df_full

La función toma 1 min y medio aprox en su ejecución, entrega un dataframe de 16.2 M filas x 23 columnas, la cantidad de filas depende del listado de archivos CSV que se tiene.

Realicé una comprobación de la columna AÑO, para asegurar que todos los registros sean del 2019, como sorpresa se encontraron 1072981 veces el año 2020:

Archivo de salida:

Repositorio:
https://github.com/IvanJaimesN/Bogota_Mov

El reto de limpieza es una actividad que parece que no va a acabar nunca, pero una vez terminada… FIUF. Se siente como el final de “Harry Potter y las reliquias de la muerte”: no sabes cómo va a terminar, pero el final es maravilloso y lleno de lecciones para la vida.

Para los que tuvieron problemas como yo en pasar de object a datatime les dejo este sencillo tutorial:
https://www.youtube.com/watch?v=9LbslWe9GXc&ab_channel=JohnOrtizOrdoñez

Trate de usar datos de mi trabajo cotidiano para practicar, pero no existian. Así que tuve que crear un ETL para irlos obteniendo. Ahora si puedo realizar el ejercicio.

#Para ver el numero de filas y columnas
df_compras_dic.shape
(1774, 11)