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
import pandas as pd # Convención: importar como pd
2. Crear Series
# 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
# 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
# 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
# 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
# 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
df_transpuesto = df.T # Filas se convierten en columnas y viceversa print(df_transpuesto.head())
Ordenar datos
# 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
# Seleccionar columnas específicas columnas_seleccionadas = df[['longitud_sepalo', 'longitud_petalo', 'clase']]
Seleccionar filas por índice
# 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
# 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
# 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
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
# 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
# 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)
# 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
# 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
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
# 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
Practica con datasets reales
Explora siempre tus datos con head(), info() y describe()
Aprende a usar groupby para análisis segmentado
Visualiza tus datos para entender patrones
Documenta tu código para futuras referencias
Comentarios
Publicar un comentario