Importación e inspección de datos, valores faltantes, operaciones en columnas y filas y más
Python es un lenguaje popular en la ciencia de los datos, y por supuesto, el lenguaje más popular para el aprendizaje automático en producción.
Sin embargo, si observas todo el panorama de la ciencia de los datos, la analítica y la inteligencia de negocios en las industrias y el mundo académico, te darás cuenta de que hay oportunidades para que Python crezca con nuevas herramientas y técnicas.
Por ejemplo, el análisis de series temporales hizo un gran progreso en el entorno R. Y eso es debido a sus bajas barreras de entrada con bibliotecas ricas como fpp2. Python sigue siendo popular en algunos campos de las series de tiempo, pero todavía falta mucho para que haya un equivalente de fpp2 en el ámbito de los pronósticos
En primer lugar, Python requiere más y más profesionales interesados en hacer ciencia de datos con el. Para los principiantes, lo más importante es asegurar una baja barrera de entrada.
El propósito de este artículo es hablar de las utilidades de la librería Pandas de Python para establecer un entorno para el análisis de datos. Es un esfuerzo para mostrar cómo aprender sólo unos pocos comandos puede dar inicio a un modelado más avanzado.
¿Que es Pandas?
Pandas es una potente, flexible y accesible biblioteca de minería de datos en Python. Fue desarrollada originalmente en una empresa de gestión financiera. Cualquiera que esté familiarizado con el sector financiero sabe que mucha de su ciencia de datos es en realidad análisis de series temporales.
De hecho, el nombre Pandas proviene de Panel Data que es un tipo especial de datos de series temporales utilizados en econometría. Si está interesado en la econometría y sus aplicaciones en la ciencia de los datos, mire esto:
Pandas para la preparación de datos (Data Wrangling)
Los científicos de los datos pasan la mayor parte de su tiempo (algunos dirían que el 80%) en la revisión y preparación de los datos para el análisis. Dado que Pandas fue diseñada específicamente para cumplir con esta parte del proceso de análisis, si sabes cómo funciona y cómo usarla de la mejor forma para la preparación de datos, el resto es fácil.
Así que aquí está el flujo de trabajo para preparar los datos para el análisis, desde el análisis básico hasta el modelado avanzado.
Importar datos
La primera orden del día es instalar la biblioteca de Pandas, por supuesto.
import pandas as pd
Usted puede importar datos de una variedad de fuentes. Puede ser un archivo de su ordenador, texto de la web o consulta de una base de datos SQL.
Los datos también vienen en una variedad de formatos como csv, excel, json etc.
Así que saber de dónde importar y en qué formato eso determinará qué comandos usar. Aquí hay un par de ejemplos.
Importar un csv desde tu máquina local o desde la web
df = pd.read_csv("Ruta-de-su-archivo.csv")
# Importando un archivo de Excel desde tu ordenador
df = pd.read_excel("Ruta-de-su-archivo.xlsx")
Inspección de datos
Después de importar los datos, usted quiere comprobar algunas cosas como la estructura de los datos, el número de filas y columnas, los valores únicos, los valores NaN (Not a number), etc.
# Descripción del índice, entradas, columnas, tipos de datos, información de la memoria
df.info()
# Conocer el número de filas y columnas
df.shape
# Mira las primeras filas
df.head()
# Si hay demasiadas columnas, listarlas todas
df.columns
# Número de valores únicos de una columna
df["nombre_columna"].nunique()
# mostrar todos los valores únicos de UNA columna
df["nombre_columna"].unique()
# Número de valores únicos en TODAS las columnas en total
df.columns.nunique()
Valores faltantes
Tener valores faltantes en un dataset no debería ser una sorpresa. Primero, tienes que comprobar si hay valores faltantes:
# Comprobar el número de valores faltantes en cada columna
df.isnull().sum()
# Número de valores faltantes como porcentaje del total de observaciones
df.isnull().sum()*100/len(df)
Ahora, una vez que haya identificado que hay valores faltantes, algunas cosas que podría hacer - es eliminar las filas de valores faltantes, eliminar una columna entera, sustituir valores - todo dependiendo de las necesidades analíticas o de su modelo. Aquí hay algunos comandos básicos:
# Eliminar todas las columnas que contengan valores nulos
df.dropna()
# Llenar los na con strings
df.fillna("valor faltante")
# Llenar los valores na con la media de las columnas
df.fillna(df.mean())
Operaciones en columnas
Por operaciones en columnas me refiero a una de varias cosas - seleccionar columnas, eliminar columnas, renombrar, añadir nuevas, ordenar, etc. En el análisis avanzado puede que quiera crear una nueva columna, calculada en base a las columnas existentes (por ejemplo, crear una columna "edad" en base a la columna existente "fecha_de_nacimiento").
# Seleccionar una columna por su nombre
df["nombre_columna"]
# Seleccionar varias columnas por su nombre
df[["nombre_columna1", "nombre_columna2"]] # Fíjate en los dobles corchetes
# Seleccionar las 3 primeras columnas en base a su ubicación
df.iloc[:, 0:4]
# Selecciona las columnas 1, 2, 5
df.iloc[:, [1, 2, 5]]
# Eliminar una columna
df.drop("nombre_columna", axis = 1)
# Crear una lista con todas las columnas de un dataframe
df.columns.tolist()
# renombrar una columna
df.rename(columns = {"nombre_antiguo": "nombre_nuevo"})
# Crear una nueva columna multiplicando una antigua columna por 2
df["nuevo_nombre_columna"] = df["columna_existente"] * 2
# ordenando un valor de columna en orden ascendente
df.sort_values(by = "nombre_columna", ascending = True)
Operaciones en filas
Una vez que se hayan ocupado de las columnas, siguen las filas. Necesitas trabajar con las filas por varias razones, sobre todo filtrando o seleccionando parte de los datos. Además, puede que quieras añadir nuevas observaciones en tu Dataframe o eliminar algunas ya existentes. A continuación, se detallan algunos comandos que necesitarías para filtrar los datos:
# Seleccionar las filas de la 3 a 10
df.iloc[3:10, ]
# Seleccionar las filas 3 a 10 Y las columnas 2 a la 4
df.iloc[3:10, 2:5]
# Toma una muestra aleatoria de 10 filas
df.sample(10)
# Seleccionar filas con una string específico en una columna
df[df["nombre_columna"].isin(["Batman"])]
# Filtrado condicional: filtrar filas con valor >5
df.query("nombre_columna > 5")
Caso especial: preparación de datos de series temporales
Las series temporales son un tipo de objeto diferente, a diferencia de cualquier otro Dataframe. Los datos crudos no suelen estar formateados para el análisis de las series temporales, por lo que la biblioteca de Pandas los trata como un Dataframe normal en el que la dimensión tiempo se almacena como string en lugar de un objeto datatime. Así que necesitas transformar el Dataframe a un objeto de series de tiempo.
# Convertir la columna Fecha en un objeto datatime
df["Fecha"] = pd.to_datetime(df["Fecha"])
# Establecer la fecha como el índice
df = df.set_index("Fecha")
# Agregar nuevas columnas dividiendo el índice
df["Año"] = df.idex.year
df["Mes"] = df.index.month
df["Dia"] = df.index.weekday_name
Todo el mundo comienza su viaje de ciencia de los datos desde diferentes puntos de partida. Sin embargo, el nivel de comprensión y el tiempo que se necesita para alcanzar la meta difieren significativamente porque cada uno toma un camino de aprendizaje diferente. Usar Python para aprender lo fundamental de preparación de datos no debería ser difícil si alguien sigue un proceso de aprendizaje lógico.
En este artículo, he esbozado ese orden lógico - importacion de datos, inspección, valores faltantes, operaciones en columnas, operaciones en filas - con algunos de los comandos más utilizados. Espero que eso haya sido útil en su viaje a la ciencia de los datos.