Tutorial de Pandas Basado en el Contenido del Vídeo

 

Tutorial de Pandas Basado en el Contenido del Vídeo

Introducción a Pandas

Pandas es una de las librerías más usadas para ciencia de datos en Python. Nos permite trabajar con datos tabulares (como Excel o tablas de bases de datos).

Estructuras principales:

  • Series: Como un vector o columna

  • DataFrame: Tabla completa con múltiples columnas

1. Importar Pandas

python
import pandas as pd  # Convención: importar como pd

2. Crear Series

python
# Crear una Serie básica
serie = pd.Series([1, 2, 3])
print(serie)
"""
0    1
1    2
2    3
dtype: int64
"""

# Serie con nombre
serie_nombrada = pd.Series([1, 2, 3], name='mi_serie')
print(serie_nombrada)

3. Crear DataFrames

python
# Desde diccionario
df = pd.DataFrame({
    'columna1': [1, 2, 3, 4],
    'columna2': ['a', 'b', 'c', 'd']
})

print(df)
"""
   columna1 columna2
0         1        a
1         2        b
2         3        c
3         4        d
"""

# Ver tamaño del DataFrame
print("Forma:", df.shape)  # (4, 2) - 4 filas, 2 columnas

4. Leer Datos desde Archivo

python
# Leer dataset Iris (ejemplo clásico)
df = pd.read_csv('data/iris.data', header=None)

# Ver primeras filas
print(df.head(2))

# Ver últimas filas  
print(df.tail(2))

5. Asignar Nombres a Columnas

python
# Crear lista de nombres de columnas
nombres_columnas = [
    'longitud_sepalo', 
    'ancho_sepalo', 
    'longitud_petalo', 
    'ancho_petalo', 
    'clase'
]

# Asignar nombres
df.columns = nombres_columnas
print(df.columns)

6. Exploración Básica del DataFrame

python
# Información del DataFrame
print(df.info())

# Estadísticas descriptivas
print(df.describe())

# Valores únicos en una columna
print(df['clase'].value_counts())
"""
Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50
Name: clase, dtype: int64
"""

7. Operaciones con DataFrames

Transponer

python
df_transpuesto = df.T  # Filas se convierten en columnas y viceversa
print(df_transpuesto.head())

Ordenar datos

python
# Ordenar por ancho del sépalo (ascendente)
df_ordenado = df.sort_values('ancho_sepalo')

# Orden descendente
df_ordenado_desc = df.sort_values('ancho_sepalo', ascending=False)

8. Selección de Datos

Seleccionar columnas

python
# Seleccionar columnas específicas
columnas_seleccionadas = df[['longitud_sepalo', 'longitud_petalo', 'clase']]

Seleccionar filas por índice

python
# Usando iloc para selección por posición
filas_seleccionadas = df.iloc[[4, 10], [0, 2]]  # Filas 4 y 10, columnas 0 y 2

Filtros

python
# Filtrar por condiciones
filtro1 = df[df['longitud_sepalo'] > 5]
print(f"Casos con sepalo > 5: {len(filtro1)}")

# Múltiples condiciones
filtro2 = df[(df['longitud_sepalo'] > 5) & (df['longitud_petalo'] > 1.4)]

9. Operaciones entre Columnas

python
# Crear nueva columna con operación
df['diferencia'] = df['longitud_sepalo'] - df['longitud_petalo']
print(df[['longitud_sepalo', 'longitud_petalo', 'diferencia']].head())

10. Manejo de Valores Nulos

python
import numpy as np

# Crear valores nulos de ejemplo
df.loc[:1, 'longitud_petalo'] = np.nan

# Verificar valores nulos
print("Valores nulos por columna:")
print(df.isnull().sum())

# Rellenar valores nulos
df['longitud_petalo'] = df['longitud_petalo'].fillna(2)

# Verificar que se llenaron
print("\nDespués de rellenar:")
print(df.isnull().sum())

11. Estadísticas Básicas

python
# Media y mediana
media_petalo = df['longitud_petalo'].mean()
mediana_petalo = df['longitud_petalo'].median()

print(f"Media del pétalo: {media_petalo:.2f}")
print(f"Mediana del pétalo: {mediana_petalo:.2f}")

12. Función Apply

python
# Aplicar función a columna
df['ancho_sepalo_negativo'] = df['ancho_sepalo'].apply(lambda x: -x)

# Cuadrado de los valores
df['ancho_sepalo_cuadrado'] = df['ancho_sepalo'].apply(lambda x: x**2)

print(df[['ancho_sepalo', 'ancho_sepalo_negativo', 'ancho_sepalo_cuadrado']].head())

13. Agrupaciones (GroupBy)

python
# Agrupar por clase y calcular media del ancho del pétalo
df_group = df.groupby('clase')['ancho_petalo'].mean()
df_group.name = 'media_ancho_petalo'

print(df_group)

14. Unir DataFrames

python
# Unir el resultado de groupby al DataFrame original
df_unido = df.join(df_group, on='clase')
print(df_unido[['clase', 'ancho_petalo', 'media_ancho_petalo']].head())

15. Visualización con Matplotlib

python
import matplotlib.pyplot as plt

# Configurar tamaño de gráficos
plt.rcParams['figure.figsize'] = (12, 7)

# Gráfico de línea de la media del ancho del pétalo
df_unido['media_ancho_petalo'].plot()
plt.title('Media del ancho del pétalo por caso')
plt.show()

# Gráfico de la longitud del pétalo
df_unido['longitud_petalo'].plot()
plt.title('Longitud del pétalo por caso')
plt.show()

# Gráfico de barras
df_unido['longitud_petalo'].plot(kind='bar')
plt.title('Longitud del pétalo - Gráfico de barras')
plt.show()

# Scatter plot completo
pd.plotting.scatter_matrix(df_unido, figsize=(12, 7))
plt.show()

16. Ejemplo Completo: Análisis del Dataset Iris

python
# Resumen completo del análisis
print("=== ANÁLISIS COMPLETO DATASET IRIS ===")
print(f"Total de casos: {len(df)}")
print(f"Total de columnas: {len(df.columns)}")
print("\nDistribución por clase:")
print(df['clase'].value_counts())
print("\nEstadísticas descriptivas:")
print(df.describe())

# Agrupaciones por clase
print("\n=== ESTADÍSTICAS POR CLASE ===")
for columna in ['longitud_sepalo', 'ancho_sepalo', 'longitud_petalo', 'ancho_petalo']:
    stats_por_clase = df.groupby('clase')[columna].agg(['mean', 'std', 'min', 'max'])
    print(f"\n{columna.upper()}:")
    print(stats_por_clase)

Consejos Finales

  1. Practica con datasets reales

  2. Explora siempre tus datos con head(), info() y describe()

  3. Aprende a usar groupby para análisis segmentado

  4. Visualiza tus datos para entender patrones

  5. Documenta tu código para futuras referencias

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

Calculadora de edad

Funciones en Python: con y sin paréntesis