# introduccion-a-la-ciencia-de-datos-con-python
Introducción a la Ciencia de Datos con Python
Volver a la portada del cursoConceptos clave en ciencia de datos
Sección 1 · Introducción a la Ciencia de Datos
Conceptos clave en ciencia de datos
En 1952 la esperanza de vida media de los países del dataset Gapminder era de 49.1 años; en 2007, de 67.0. Ese número sale de una tabla de 1704 filas y una línea de pandas. Lo difícil no es calcularlo, sino saber qué pregunta responde, qué no responde y qué se puede concluir de él. Esta lectura fija el vocabulario que se usa en el resto del curso.
Datos tabulares y datos ordenados
Casi todo el análisis del curso trabaja con datos tabulares: una tabla donde cada fila es una observación y cada columna es una variable. Cuando además cada celda guarda un solo valor, se habla de datos ordenados (tidy data, en el término de Hadley Wickham). En Gapminder, una observación es un país en un año: Mexico en 1952 es una fila y Mexico en 2007 es otra. Por eso hay 142 países, 12 años (de 1952 a 2007, cada 5 años) y 142 × 12 = 1704 filas.
import plotly.express as px
gap = px.data.gapminder().drop(columns=["iso_alpha", "iso_num"])
print(gap.shape) # (1704, 6)
print(gap["country"].nunique()) # 142
print(gap["year"].nunique()) # 12
print(gap.isna().sum().sum()) # 0
print(gap.dtypes)
Las seis columnas son country, continent, year, lifeExp (esperanza de vida al nacer, en años), pop (población) y gdpPercap (PIB per cápita en dólares estadounidenses ajustados por inflación, según la documentación del paquete R gapminder de Jennifer Bryan). Si una tabla tuviera una columna por año, como vida_1952, vida_1957…, estaría en formato «ancho»: es cómoda para leer, pero incómoda para agrupar y graficar.
Tipos de variables
El tipo de una variable decide qué operaciones tienen sentido:
- Numérica continua: puede tomar cualquier valor en un rango, como
lifeExpogdpPercap. Se promedia, se grafica en un histograma. - Numérica discreta: conteos enteros, como
popo el número de personas en una mesa. - Categórica nominal: etiquetas sin orden, como
continent. Se cuenta convalue_counts; promediarla no significa nada. - Categórica ordinal: etiquetas con orden, como «bajo, medio, alto».
- Fecha o tiempo: como
year. Es un número, pero sirve para ordenar y para medir cambios, no para sumar.
pandas no adivina la intención: guarda year como int64 y continent como texto (str en pandas 3). Decidir cómo tratar cada columna es trabajo tuyo.
Población, muestra y alcance
La población es el conjunto sobre el que quieres concluir; la muestra, los datos que tienes. Gapminder cubre 142 países, no todos los del mundo, y termina en 2007. Cualquier conclusión vale para esos países y esos años. En el proyecto final, con 244 propinas registradas por un solo mesero, la pregunta de alcance pesa todavía más.
Tres tipos de preguntas
- Descriptiva: ¿qué pasó? «La vida media en Africa en 2007 fue de 54.8 años».
- Predictiva: ¿qué valor esperar? «Un país con PIB per cápita de 10 000 dólares tendría unos 71 años de vida».
- Causal: ¿qué pasaría si cambio algo? «Si el PIB de un país sube, ¿sube su esperanza de vida?».
Las dos primeras se pueden responder con los datos de este curso. La tercera no: necesita experimentos o métodos causales que quedan fuera de alcance.
Correlación no es causalidad
En 2007, la correlación entre gdpPercap y lifeExp es de 0.679: los países ricos tienden a vivir más. Eso no demuestra que el dinero, por sí solo, alargue la vida. Hay variables que acompañan a la riqueza (agua potable, vacunas, educación, sistemas de salud) y también hay efecto en sentido contrario: una población sana trabaja y produce más. Un modelo puede predecir bien la esperanza de vida a partir del PIB sin decir nada sobre qué la causa.
El ciclo de trabajo
El curso sigue un ciclo parecido a CRISP-DM, un proceso publicado en 1999 con seis fases: entender el problema, entender los datos, prepararlos, modelar, evaluar y desplegar. Aquí la versión práctica es pregunta → datos → limpieza → exploración → visualización → modelo → comunicación. No es lineal: una gráfica rara te regresa a la limpieza y un mal modelo te regresa a la pregunta.
Preparar el entorno
Crea un entorno virtual e instala las bibliotecas del curso:
python -m venv .venv
# Windows: .venv\Scripts\activate | macOS/Linux: source .venv/bin/activate
pip install pandas matplotlib seaborn scikit-learn plotly jupyter
Los dos datasets del curso, Gapminder y tips, vienen dentro de plotly, así que cargan sin internet una vez instalado. Verifica las versiones; el curso se probó con pandas 3.0.3, NumPy 2.4.6, matplotlib 3.10.9, seaborn 0.13.2 y scikit-learn 1.8.0:
import pandas, numpy, matplotlib, seaborn, sklearn
for m in (pandas, numpy, matplotlib, seaborn, sklearn):
print(m.__name__, m.__version__)
Trampas comunes
- Promediar una categoría codificada con números. Si «Asia» se guarda como 3, la media de esa columna no significa nada.
- Olvidar la unidad de observación. Promediar
lifeExpde las 1704 filas mezcla 12 años distintos. - Generalizar fuera de la muestra. Gapminder termina en 2007; no describe el mundo de hoy.
- Leer una correlación como causa. 0.679 dice que dos variables se mueven juntas, no por qué.
Cierre
Antes de escribir código con un dataset nuevo, responde tres cosas por escrito: qué es una fila, qué tipo tiene cada columna y si tu pregunta es descriptiva, predictiva o causal. Esas tres respuestas deciden casi todo lo que sigue.