DataFrame¶
Estudiante: Alexander Oviedo Fadul
Asignatura: NRC-198 Deep Learning - Semana 3
Fecha: Marzo 2026
Instrucciones¶
- Cargue las librerías que necesite: numpy, matplotlib.pyplot, etc.
- Para cargar las librerías utilice
importseguido del nombre de la librería y de un alias (as) - Ejecute de forma secuencial de arriba hacia abajo las celdas de código
- Al ejecutar la celda debe marcar un check en color verde
- El símbolo
#es para comentarios dentro del código - Para subir un archivo a Google Colab se puede hacer click en la carpeta del panel izquierdo
Carga de librerías y datos¶
import pandas as pd
import numpy as np
Ejemplo: Lectura del archivo california_housing_test.csv¶
# Leer el archivo CSV de prueba
data_frame = pd.read_csv('sample_data/california_housing_test.csv')
data_frame
| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | -122.05 | 37.37 | 27.0 | 3885.0 | 661.0 | 1537.0 | 606.0 | 6.6085 | 344700.0 |
| 1 | -118.30 | 34.26 | 43.0 | 1510.0 | 310.0 | 809.0 | 277.0 | 3.5990 | 176500.0 |
| 2 | -117.81 | 33.78 | 27.0 | 3589.0 | 507.0 | 1484.0 | 495.0 | 5.7934 | 270500.0 |
| 3 | -118.36 | 33.82 | 28.0 | 67.0 | 15.0 | 49.0 | 11.0 | 6.1359 | 330000.0 |
| 4 | -119.67 | 36.33 | 19.0 | 1241.0 | 244.0 | 850.0 | 237.0 | 2.9375 | 81700.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2995 | -119.86 | 34.42 | 23.0 | 1450.0 | 642.0 | 1258.0 | 607.0 | 1.1790 | 225000.0 |
| 2996 | -118.14 | 34.06 | 27.0 | 5257.0 | 1082.0 | 3496.0 | 1036.0 | 3.3906 | 237200.0 |
| 2997 | -119.70 | 36.30 | 10.0 | 956.0 | 201.0 | 693.0 | 220.0 | 2.2895 | 62000.0 |
| 2998 | -117.12 | 34.10 | 40.0 | 96.0 | 14.0 | 46.0 | 14.0 | 3.2708 | 162500.0 |
| 2999 | -119.63 | 34.42 | 42.0 | 1765.0 | 263.0 | 753.0 | 260.0 | 8.5608 | 500001.0 |
3000 rows × 9 columns
data_frame.head(5) # Primeras 5 filas
| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | -122.05 | 37.37 | 27.0 | 3885.0 | 661.0 | 1537.0 | 606.0 | 6.6085 | 344700.0 |
| 1 | -118.30 | 34.26 | 43.0 | 1510.0 | 310.0 | 809.0 | 277.0 | 3.5990 | 176500.0 |
| 2 | -117.81 | 33.78 | 27.0 | 3589.0 | 507.0 | 1484.0 | 495.0 | 5.7934 | 270500.0 |
| 3 | -118.36 | 33.82 | 28.0 | 67.0 | 15.0 | 49.0 | 11.0 | 6.1359 | 330000.0 |
| 4 | -119.67 | 36.33 | 19.0 | 1241.0 | 244.0 | 850.0 | 237.0 | 2.9375 | 81700.0 |
data_frame.tail() # Últimas 5 filas
| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | |
|---|---|---|---|---|---|---|---|---|---|
| 2995 | -119.86 | 34.42 | 23.0 | 1450.0 | 642.0 | 1258.0 | 607.0 | 1.1790 | 225000.0 |
| 2996 | -118.14 | 34.06 | 27.0 | 5257.0 | 1082.0 | 3496.0 | 1036.0 | 3.3906 | 237200.0 |
| 2997 | -119.70 | 36.30 | 10.0 | 956.0 | 201.0 | 693.0 | 220.0 | 2.2895 | 62000.0 |
| 2998 | -117.12 | 34.10 | 40.0 | 96.0 | 14.0 | 46.0 | 14.0 | 3.2708 | 162500.0 |
| 2999 | -119.63 | 34.42 | 42.0 | 1765.0 | 263.0 | 753.0 | 260.0 | 8.5608 | 500001.0 |
print('Shape: ', data_frame.shape)
print('Columnas: ', data_frame.columns)
Shape: (3000, 9)
Columnas: Index(['longitude', 'latitude', 'housing_median_age', 'total_rooms',
'total_bedrooms', 'population', 'households', 'median_income',
'median_house_value'],
dtype='object')
data_frame['median_house_value'].describe()
| median_house_value | |
|---|---|
| count | 3000.00000 |
| mean | 205846.27500 |
| std | 113119.68747 |
| min | 22500.00000 |
| 25% | 121200.00000 |
| 50% | 177650.00000 |
| 75% | 263975.00000 |
| max | 500001.00000 |
Responda las siguientes preguntas:¶
Pregunta 1¶
Utilice el archivo california_housing_train.csv, conviértalo a DataFrame. Muestre las primeras 10 filas y las 10 últimas del DataFrame.
# Cargar california_housing_train.csv
df_train = pd.read_csv('sample_data/california_housing_train.csv')
print(f'Archivo cargado. Registros: {len(df_train)}, Columnas: {len(df_train.columns)}')
Archivo cargado. Registros: 17000, Columnas: 9
# Primeras 10 filas
df_train.head(10)
| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | -114.31 | 34.19 | 15.0 | 5612.0 | 1283.0 | 1015.0 | 472.0 | 1.4936 | 66900.0 |
| 1 | -114.47 | 34.40 | 19.0 | 7650.0 | 1901.0 | 1129.0 | 463.0 | 1.8200 | 80100.0 |
| 2 | -114.56 | 33.69 | 17.0 | 720.0 | 174.0 | 333.0 | 117.0 | 1.6509 | 85700.0 |
| 3 | -114.57 | 33.64 | 14.0 | 1501.0 | 337.0 | 515.0 | 226.0 | 3.1917 | 73400.0 |
| 4 | -114.57 | 33.57 | 20.0 | 1454.0 | 326.0 | 624.0 | 262.0 | 1.9250 | 65500.0 |
| 5 | -114.58 | 33.63 | 29.0 | 1387.0 | 236.0 | 671.0 | 239.0 | 3.3438 | 74000.0 |
| 6 | -114.58 | 33.61 | 25.0 | 2907.0 | 680.0 | 1841.0 | 633.0 | 2.6768 | 82400.0 |
| 7 | -114.59 | 34.83 | 41.0 | 812.0 | 168.0 | 375.0 | 158.0 | 1.7083 | 48500.0 |
| 8 | -114.59 | 33.61 | 34.0 | 4789.0 | 1175.0 | 3134.0 | 1056.0 | 2.1782 | 58400.0 |
| 9 | -114.60 | 34.83 | 46.0 | 1497.0 | 309.0 | 787.0 | 271.0 | 2.1908 | 48100.0 |
# Últimas 10 filas
df_train.tail(10)
| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value | |
|---|---|---|---|---|---|---|---|---|---|
| 16990 | -124.22 | 41.73 | 28.0 | 3003.0 | 699.0 | 1530.0 | 653.0 | 1.7038 | 78300.0 |
| 16991 | -124.23 | 41.75 | 11.0 | 3159.0 | 616.0 | 1343.0 | 479.0 | 2.4805 | 73200.0 |
| 16992 | -124.23 | 40.81 | 52.0 | 1112.0 | 209.0 | 544.0 | 172.0 | 3.3462 | 50800.0 |
| 16993 | -124.23 | 40.54 | 52.0 | 2694.0 | 453.0 | 1152.0 | 435.0 | 3.0806 | 106700.0 |
| 16994 | -124.25 | 40.28 | 32.0 | 1430.0 | 419.0 | 434.0 | 187.0 | 1.9417 | 76100.0 |
| 16995 | -124.26 | 40.58 | 52.0 | 2217.0 | 394.0 | 907.0 | 369.0 | 2.3571 | 111400.0 |
| 16996 | -124.27 | 40.69 | 36.0 | 2349.0 | 528.0 | 1194.0 | 465.0 | 2.5179 | 79000.0 |
| 16997 | -124.30 | 41.84 | 17.0 | 2677.0 | 531.0 | 1244.0 | 456.0 | 3.0313 | 103600.0 |
| 16998 | -124.30 | 41.80 | 19.0 | 2672.0 | 552.0 | 1298.0 | 478.0 | 1.9797 | 85800.0 |
| 16999 | -124.35 | 40.54 | 52.0 | 1820.0 | 300.0 | 806.0 | 270.0 | 3.0147 | 94600.0 |
Pregunta 2¶
Utilice el archivo mnist_test.csv, conviértalo a DataFrame. Muestre las 10 primeras y las 10 últimas filas.
# Cargar mnist_test.csv
df_mnist = pd.read_csv('sample_data/mnist_test.csv')
print(f'MNIST cargado. Registros: {len(df_mnist)}, Columnas: {len(df_mnist.columns)}')
MNIST cargado. Registros: 9999, Columnas: 785
# Primeras 10 filas - MNIST
df_mnist.head(10)
| 7 | 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | ... | 0.658 | 0.659 | 0.660 | 0.661 | 0.662 | 0.663 | 0.664 | 0.665 | 0.666 | 0.667 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 5 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 6 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 8 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
10 rows × 785 columns
# Últimas 10 filas - MNIST
df_mnist.tail(10)
| 7 | 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | ... | 0.658 | 0.659 | 0.660 | 0.661 | 0.662 | 0.663 | 0.664 | 0.665 | 0.666 | 0.667 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 9989 | 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9990 | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9991 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9992 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9993 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9994 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9995 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9996 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9997 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9998 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
10 rows × 785 columns
Pregunta 3¶
Muestre dimensión, columnas y estadísticos descriptivos de median_house_value de california_housing_train.csv.
# Dimensión
print(f'Dimensión: {df_train.shape}')
print(f'Filas: {df_train.shape[0]}, Columnas: {df_train.shape[1]}')
Dimensión: (17000, 9) Filas: 17000, Columnas: 9
# Nombres de las columnas
print('Columnas:')
for i, col in enumerate(df_train.columns, 1):
print(f' {i}. {col}')
Columnas: 1. longitude 2. latitude 3. housing_median_age 4. total_rooms 5. total_bedrooms 6. population 7. households 8. median_income 9. median_house_value
# Estadísticos descriptivos de median_house_value
df_train['median_house_value'].describe()
| median_house_value | |
|---|---|
| count | 17000.000000 |
| mean | 207300.912353 |
| std | 115983.764387 |
| min | 14999.000000 |
| 25% | 119400.000000 |
| 50% | 180400.000000 |
| 75% | 265000.000000 |
| max | 500001.000000 |
Pregunta 4¶
Elimine la fila 2999 y la columna population, renombre columnas a español.
# Copia del DataFrame de test
df_mod = data_frame.copy()
print(f'Original: {df_mod.shape}')
Original: (3000, 9)
# Eliminar fila 2999
df_mod = df_mod.drop(index=2999)
print(f'Sin fila 2999: {df_mod.shape}')
Sin fila 2999: (2999, 9)
# Eliminar columna population
df_mod = df_mod.drop(columns=['population'])
print(f'Sin columna population: {df_mod.shape}')
Sin columna population: (2999, 8)
# Renombrar columnas a español
nombres_es = {
'longitude': 'longitud',
'latitude': 'latitud',
'housing_median_age': 'edad_mediana_vivienda',
'total_rooms': 'total_habitaciones',
'total_bedrooms': 'total_dormitorios',
'households': 'hogares',
'median_income': 'ingreso_mediano',
'median_house_value': 'valor_mediano_vivienda'
}
df_mod = df_mod.rename(columns=nombres_es)
# Resultado final
print(f'Dimensión final: {df_mod.shape}')
print(f'Columnas:')
for i, col in enumerate(df_mod.columns, 1):
print(f' {i}. {col}')
print('\nPrimeras 5 filas:')
df_mod.head()
Dimensión final: (2999, 8) Columnas: 1. longitud 2. latitud 3. edad_mediana_vivienda 4. total_habitaciones 5. total_dormitorios 6. hogares 7. ingreso_mediano 8. valor_mediano_vivienda Primeras 5 filas:
| longitud | latitud | edad_mediana_vivienda | total_habitaciones | total_dormitorios | hogares | ingreso_mediano | valor_mediano_vivienda | |
|---|---|---|---|---|---|---|---|---|
| 0 | -122.05 | 37.37 | 27.0 | 3885.0 | 661.0 | 606.0 | 6.6085 | 344700.0 |
| 1 | -118.30 | 34.26 | 43.0 | 1510.0 | 310.0 | 277.0 | 3.5990 | 176500.0 |
| 2 | -117.81 | 33.78 | 27.0 | 3589.0 | 507.0 | 495.0 | 5.7934 | 270500.0 |
| 3 | -118.36 | 33.82 | 28.0 | 67.0 | 15.0 | 11.0 | 6.1359 | 330000.0 |
| 4 | -119.67 | 36.33 | 19.0 | 1241.0 | 244.0 | 237.0 | 2.9375 | 81700.0 |
Conclusiones¶
DataFrame como estructura fundamental: El DataFrame de Pandas organiza información en filas y columnas, facilitando operaciones esenciales antes de alimentar una red neuronal.
Comandos de exploración:
head(),tail(),shape,columnsydescribe()son herramientas indispensables para comprender la distribución de los datos.Manipulación: Las operaciones
dropyrenameson fundamentales en el preprocesamiento, que representa el 70-80% del trabajo en proyectos de Deep Learning.Conexión con Deep Learning: Los DataFrames son la primera capa de procesamiento: los datos se cargan, limpian y luego se convierten en tensores para las redes neuronales.
Referencias¶
- Fandango, A. (2018). Mastering TensorFlow 1.x, pp. 73-111.
- Galea, A., y Capelo, L. (2018). Applied Deep Learning with Python, pp. 6-61 y pp. 186-194.