¡Hola a todos y bienvenidos a mi espacio de aprendizaje! Hoy, me emociona guiarlos a través de un viaje práctico en el mundo del análisis de datos con Python. Como saben, la teoría es importante, pero es en la práctica donde realmente consolidamos nuestros conocimientos. Por eso, he preparado este artículo para que, juntos, dominemos los fundamentos del análisis de datos de una manera muy aplicada, utilizando herramientas reales y enfrentando desafíos comunes.
Mi objetivo principal con este artículo es que, al finalizarlo, ustedes se sientan cómodos y capaces de abordar proyectos de análisis de datos desde cero. Aprenderemos a cargar datos, limpiarlos, explorarlos a fondo, crear visualizaciones impactantes y, lo más importante, interpretar nuestros hallazgos para tomar decisiones informadas.
Metodología: Nuestros Compañeros de Viaje – Los Datasets
Para hacer este aprendizaje lo más realista posible, he seleccionado dos datasets que nos permitirán explorar diferentes facetas del análisis de datos. Nuestro primer compañero será el famoso dataset del Titanic, ideal para sumergirnos en el mundo de la limpieza y el preprocesamiento de datos. Luego, nos aventuraremos con el dataset de California Housing, perfecto para desarrollar nuestras habilidades en el análisis exploratorio, la visualización y la interpretación de resultados.
He estructurado este artículo para que cada sección sea un pequeño proyecto en sí mismo, con objetivos de aprendizaje claros:
- Carga y Limpieza con el Titanic: Aprenderemos a identificar y manejar datos faltantes, duplicados y a transformar variables para que estén listas para el análisis.
- Exploración y Visualización con California Housing: Descubriremos patrones, relaciones y anomalías en los datos a través de diversas técnicas de visualización.
- Interpretación y Conclusión: Traduciremos nuestros hallazgos técnicos en conocimientos accionables.
Cada línea de código que verán está pensada para ser clara, comentada y reproducible. Mi idea es que ustedes puedan replicar todo el proceso en sus propias máquinas y experimentar de primera mano el poder de Python en el análisis de datos.
Códigos: Manos a la Obra
Proyecto 1: Limpieza y Preprocesamiento del Dataset del Titanic
El primer paso en cualquier proyecto de análisis de datos es cargar nuestros datos. Para este proyecto, utilizaremos la librería pandas, que es una herramienta indispensable para trabajar con datos tabulares en Python.
Objetivo de Aprendizaje: Cargar un dataset y realizar una inspección inicial para entender su estructura y la presencia de datos faltantes.
import pandas as pd
import numpy as np
# Cargar el dataset del Titanic
try:
titanic_df = pd.read_csv('https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')
print("Dataset del Titanic cargado exitosamente.")
except Exception as e:
print(f"Error al cargar el dataset: {e}")
# Inspección inicial
print("\nPrimeras 5 filas del dataset:")
print(titanic_df.head())
print("\nInformación general del dataset:")
print(titanic_df.info())
print("\nConteo de valores nulos por columna:")
print(titanic_df.isnull().sum())
Dataset del Titanic cargado exitosamente.
Primeras 5 filas del dataset:
PassengerId Survived Pclass ... Fare Cabin Embarked
0 1 0 3 ... 7.2500 NaN S
1 2 1 1 ... 71.2833 C85 C
2 3 1 3 ... 7.9250 NaN S
3 4 1 1 ... 53.1000 C123 S
4 5 0 3 ... 8.0500 NaN S
[5 rows x 12 columns]
Información general del dataset:
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null str
4 Sex 891 non-null str
5 Age 714 non-null float64
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null str
9 Fare 891 non-null float64
10 Cabin 204 non-null str
11 Embarked 889 non-null str
dtypes: float64(2), int64(5), str(5)
memory usage: 118.9 KB
None
Conteo de valores nulos por columna:
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
Como pueden observar, las columnas ‘Age’, ‘Cabin’ y ‘Embarked’ tienen valores nulos. ‘Cabin’ tiene un porcentaje muy alto de valores nulos, lo que sugiere que podríamos considerar eliminarla o imputarla con mucho cuidado. ‘Age’ y ‘Embarked’ tienen menos nulos, y podemos manejarlos de forma más sencilla.
Objetivo de Aprendizaje: Manejar valores faltantes en diferentes columnas, incluyendo imputación y eliminación, y transformar variables categóricas.
# Imputar valores faltantes en 'Age' con la media
titanic_df['Age'].fillna(titanic_df['Age'].mean(), inplace=True)
# Imputar valores faltantes en 'Embarked' con la moda (el valor más frecuente)
titanic_df['Embarked'].fillna(titanic_df['Embarked'].mode()[0], inplace=True)
# Eliminar la columna 'Cabin' debido a la gran cantidad de valores nulos
titanic_df.drop('Cabin', axis=1, inplace=True)
# Verificar nuevamente los valores nulos
print("\nConteo de valores nulos después de la limpieza:")
print(titanic_df.isnull().sum())
# Transformar 'Sex' y 'Embarked' a valores numéricos (One-Hot Encoding)
titanic_df = pd.get_dummies(titanic_df, columns=['Sex', 'Embarked'], drop_first=True)
# Mostrar las primeras filas con las transformaciones
print("\nDataset después de la transformación de variables categóricas:")
print(titanic_df.head())
Conteo de valores nulos después de la limpieza:
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Embarked 2
dtype: int64
Dataset después de la transformación de variables categóricas:
PassengerId Survived Pclass ... Sex_male Embarked_Q Embarked_S
0 1 0 3 ... True False True
1 2 1 1 ... False False False
2 3 1 3 ... False False True
3 4 1 1 ... False False True
4 5 0 3 ... True False True
[5 rows x 12 columns]
¡Excelente! Ahora nuestro dataset del Titanic está mucho más limpio y listo para un análisis más profundo. Hemos abordado los valores faltantes y hemos transformado nuestras variables categóricas en un formato numérico, lo cual es esencial para muchos modelos de aprendizaje automático.
Proyecto 2: Análisis Exploratorio de Datos y Visualización con el Dataset de California Housing
Para nuestro segundo proyecto, nos centraremos en el análisis exploratorio de datos (EDA) y la visualización, utilizando el dataset de California Housing. Este dataset es perfecto para explorar relaciones entre variables y entender la distribución de los datos.
Objetivo de Aprendizaje: Cargar un dataset y realizar un análisis exploratorio inicial para comprender las estadísticas descriptivas y las distribuciones de las variables.
from sklearn.datasets import fetch_california_housing
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar el dataset de California Housing
try:
california_housing = fetch_california_housing(as_frame=True)
housing_df = california_housing.frame
housing_df['MedHouseVal'] = california_housing.target # Añadir la variable objetivo al DataFrame
print("Dataset de California Housing cargado exitosamente.")
except Exception as e:
print(f"Error al cargar el dataset: {e}")
# Inspección inicial
print("\nPrimeras 5 filas del dataset de California Housing:")
print(housing_df.head())
print("\nInformación general del dataset:")
print(housing_df.info())
print("\nEstadísticas descriptivas del dataset:")
print(housing_df.describe())
Error al cargar el dataset: HTTP Error 403: Forbidden
Primeras 5 filas del dataset de California Housing:
Con la función .describe(), obtenemos un resumen estadístico de cada columna numérica, lo que nos da una idea rápida de la media, desviación estándar, valores mínimos y máximos, y los cuartiles. Esto es crucial para identificar posibles valores atípicos o distribuciones sesgadas.
Objetivo de Aprendizaje: Crear visualizaciones clave para entender las distribuciones de las variables y las relaciones entre ellas.
# Distribución de la variable objetivo (Median House Value)
plt.figure(figsize=(10, 6))
sns.histplot(housing_df['MedHouseVal'], kde=True, bins=50)
plt.title('Distribución del Valor Medio de las Viviendas en California')
plt.xlabel('Valor Medio de la Vivienda')
plt.ylabel('Frecuencia')
plt.show()
# Matriz de correlación para entender las relaciones entre variables
plt.figure(figsize=(12, 10))
sns.heatmap(housing_df.corr(), annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Matriz de Correlación de Variables en California Housing')
plt.show()
# Diagrama de dispersión de "MedInc" (Ingreso Medio) vs "MedHouseVal" (Valor Medio de la Vivienda)
plt.figure(figsize=(10, 7))
sns.scatterplot(x='MedInc', y='MedHouseVal', data=housing_df, alpha=0.6)
plt.title('Relación entre Ingreso Medio y Valor Medio de la Vivienda')
plt.xlabel('Ingreso Medio (en decenas de miles de dólares)')
plt.ylabel('Valor Medio de la Vivienda (en cientos de miles de dólares)')
plt.show()
Estas visualizaciones nos ofrecen información muy valiosa. El histograma nos muestra la distribución de los precios de las casas, notando una concentración en ciertos rangos. La matriz de correlación es una herramienta poderosa para identificar rápidamente qué variables están más relacionadas entre sí. Por ejemplo, podemos ver una fuerte correlación positiva entre MedInc (ingreso medio) y MedHouseVal (valor medio de la vivienda), lo cual es intuitivo. El diagrama de dispersión de MedInc vs MedHouseVal visualiza claramente esta relación, mostrando cómo a medida que el ingreso medio aumenta, el valor de la vivienda también tiende a aumentar.
Conclusiones: Lo que Hemos Aprendido y Próximos Pasos
Hemos recorrido un camino fascinante a través de dos proyectos de análisis de datos prácticos. Con el dataset del Titanic, enfrentamos el desafío de la limpieza y el preprocesamiento, aprendiendo a manejar datos faltantes y a preparar nuestras variables para el análisis. Con el dataset de California Housing, exploramos el poder del análisis exploratorio de datos y la visualización, descubriendo patrones y relaciones importantes en nuestros datos.
Estos ejercicios son solo la punta del iceberg. El análisis de datos es un campo vasto y en constante evolución. Los conocimientos y habilidades que hemos adquirido hoy son fundamentales, pero siempre hay más que aprender.
Para seguir profundizando, les recomiendo explorar:
- Modelado Predictivo: Una vez que los datos están limpios y entendidos, el siguiente paso lógico es construir modelos que puedan predecir resultados futuros.
- Bases de Datos y SQL: Aprender a extraer datos de bases de datos es una habilidad esencial para cualquier analista de datos.
- Herramientas de BI: Familiarizarse con herramientas como Tableau o Power BI para crear dashboards interactivos.
- Más Datasets: Practicar con diferentes tipos de datos les ayudará a desarrollar su intuición y sus habilidades de resolución de problemas.
Recuerda que siempre siempre vas a aprender un bit a la vez!
🤖 Automatiza tu trading en 5 días con Python
Únete a mi Mini-Curso gratuito por email. Aprende a extraer datos reales, crear indicadores cuantitativos y hacer backtesting profesional.