Actividade 1: Exploración inicial dos datos
Abre o teu Caderno de programación
🖥️ Paso 1: Importar as librarías necesarias
Antes de traballar co dataset, asegurémonos de importar as librarías necesarias. No teu caderno de Colab, executa o seguinte código:
Código Python: Cargar librerías necesarias
import pandas as pd # Incluímos pandas para traballar con datos import seaborn as sns #E seaborn para gráficos
📂 Paso 2: Cargar os datos
Hai varias formas de obter o dataset do Titanic. Aquí propoñoche dúas opcións(hai máis):
- Usando Seaborn (máis sinxelo, xa que Seaborn inclúe o dataset integrado):
Código Python: Dataset Titanic con seaborn
df = sns.load_dataset('titanic')
df.head(10) # Mostra as 10 primeiras filas do DataFrame -
Descargando desde Kaggle (se prefires un dataset máis completo):
Ir a Kaggle Titanic Dataset e descargar o arquivo trainTitanic.csv (csv - 61194 B).
. Descargando dataset (CC BY-SA)
No menú da esquerda do teu caderno de Colab, fai clic en Arquivos (icono de carpeta).Fai clic en Subir e selecciona o ficheiro trainTitanic(ou o nome co que o gardaras).csv desde o teu computador. Se precisas volver acceder ao ficheiro despois de pechar Colab, terás que subilo de novo, porque os ficheiros cargados non se gardan permanentemente.
. Subir dataset a Colab (CC BY-SA) Código Python: Dataset Titanic desde Kaggle subido a Colab
df = pd.read_csv("/content/trainTitanic.csv") # Ruta do ficheiro en Colab
df.head(10) # Mostra as 10 primeiras filas do DataFrame
📋 Paso 3: Explorar a estrutura dos datos
Unha vez cargado o dataset, revisaremos a súa estrutura e as columnas dispoñibles.Vexamos como están organizados os datos. Executade:
Código Python:Estrutura dos datos
df.info()
♦ Este comando devolverá:
✔Cantidade de filas e columnas.
✔Tipo de datos de cada columna (int, float, object).
✔Cantidade de valores nulos en cada columna.
💡 Preguntas para reflexionar:
- Cantas filas e columnas ten o dataset?
- Que tipo de datos aparecen nas columnas?
- Hai columnas categóricas e numéricas? Son todos numéricos ou hai texto?
- Que columnas teñen valores nulos?
- Que variables parecen importantes para prever a supervivencia?
❓ Paso 4: Identificación de valores nulos
A intelixencia artificial precisa datos limpos. Imos ver se hai problemas cos valores en branco. Para saber cantos valores nulos hai en cada columna, executade:
Código Python: Identificación de valores nulos
df.isnull().sum()
♦ Este comando mostra cantos valores están en branco ( faltan) en cada columna.
💡 Preguntas para reflexionar:
- Que columnas teñen máis valores nulos? Cal é a columna con máis valores nulos?
- Como poderiamos tratar os valores nulos para non perder información útil? Crees que é importante conservar eses datos ou debemos eliminalos?
- Que impacto pode ter isto nos resultados do modelo? Como pode afectar a calidade do modelo se hai moitos valores nulos?
🛠️ Paso 5: Tratamento inicial de valores nulos
Agora decidiremos como xestionar os datos ausentes: Se hai moitos valores nulos, quizais sexa mellor eliminar esas filas e se unha columna ten poucos valores nulos, podemos simplemente substituílos cun valor representativo.
- Se queres eliminar filas con valores nulos ou columnas completas , usa:
Código Python: Eliminar todas as filas con valores nulos, dunha columna en concreto ou unha columna enteira en concreto
# Descomenta a opción que queiras usar, ten COIDADO porque o borrado é permanente
#df_cleaned = df.dropna() # elimina todas as filas que conteñen valores nulos en calquera columna
#df_cleaned = df.dropna(subset=['Age']) # Só elimina filas con valores nulos en Age, cambia o nome se queres outra
#df_cleaned = df.drop(columns=['Cabin']) # Elimina toda a columna Cabin, cambia o nome se queres outra
- Se prefires substituílos cos valores máis representativos (como a media ou a moda):
Código Python: Sustituir por un valor
# Substituír os valores nulos en Age pola media. Na columna Age, se queres outra debes cambiar o nome df['Age'] = df['Age'].fillna(df['Age'].mean()) # Substituír valores nulos en Embarked pola categoría máis común df['Embarked'] = df['Embarked'].fillna(df['Embarked'].mode()[0]) #Na columna Embarked, se queres outra debes cambiar o nome
(Se queres limitar o número de decimais que introduce nas idades, podes usar df['Age'] = df['Age'].fillna(round(df['Age'].mean(), 2)) # Arredonda a media a 2 decimais)
Podes volver visualizar os datos cos cambios con df.info() e df.head(10) .
💡 Preguntas para reflexionar:
- É mellor eliminar os valores nulos ou substituílos? Por que pode ser útil substituir valores nulos en vez de eliminar filas?
- Como podemos decidir a mellor estratexia para tratar valores nulos? Que opción pode preservar máis información para o modelo?
✅Feito
Agora xa tendes unha visión clara dos datos cos que traballaredes. Este primeiro paso é fundamental porque un modelo nunca será mellor que os datos que recibe. Se os datos son desordenados, o modelo será erróneo. Se os datos son limpos e ben organizados, o modelo terá mellores predicións.
📂 Paso 2: Cargar os datos
📋 Paso 3: Explorar a estrutura dos datos
🚢 Análise do DataFrame do Titanic 📊
📂 Estrutura dos Datos
O dataset contén 891 filas, cada unha representando un pasaxeiro do Titanic. Inclúe 12 columnas con información sobre cada pasaxeiro.
<class 'pandas.core.frame.DataFrame'> → Indica que df é un DataFrame, a estrutura de datos que usa Pandas para organizar información en táboas.
RangeIndex: 891 entries, 0 to 890→O índice vai de 0 a 890, o que significa que cada fila ten un identificador único.
Data columns (total 12 columns): → Mostra que hai 12 columnas no DataFrame. Cada unha representa unha característica dos pasaxeiros.
🔍 Detalle das Columnas
| # | Columna | Valores Non Nulos | Tipo de Dato | Significado |
|---|---|---|---|---|
| 0 | PassengerId | 891 | int64 | ID único do pasaxeiro |
| 1 | Survived | 891 | int64 | 1=Sobreviviu, 0=Non sobreviviu |
| 2 | Pclass | 891 | int64 | Clase do pasaxeiro (1ª, 2ª, 3ª) |
| 3 | Name | 891 | object | Nome completo |
| 4 | Sex | 891 | object | Sexo (male, female) |
| 5 | Age | 714 | float64 | Idade (177 valores nulos) |
| 6 | SibSp | 891 | int64 | Irmáns/esposo a bordo |
| 7 | Parch | 891 | int64 | Pais ou fillos a bordo |
| 8 | Ticket | 891 | object | Número do billete |
| 9 | Fare | 891 | float64 | Prezo do billete |
| 10 | Cabin | 204 | object | Número de cabina (Moitos valores nulos) |
| 11 | Embarked | 889 | object | Porto de embarque (C, Q, S) |
👉Aspectos Importantes
- Non todas as columnas teñen os 891 valores completos. Age ten 714 valores, polo que hai 177 datos faltantes. Cabin só ten 204 valores, significando que falta información da maioría dos pasaxeiros.Embarked ten 889 valores, faltan 2. Entón, Age, Cabin e Embarked teñen valores nulos, polo que será necesario tratar eses datos antes de adestrar un modelo.
- Name, Sex, Ticket, Cabin e Embarked son texto, debemos convertelos a valores numéricos.
- O resto de columnas son numéricas enteiros ou decimais, as máquinas xa os comprenden
- Usa 83.7 KB de memoria, o que significa que é un dataset pequeno e fácil de manexar en IA.
Resposta ás preguntas de reflexión
Cantas filas e columnas ten o dataset? O dataset ten 891 filas e 12 columnas.
Que tipo de datos aparecen nas columnas? Hai datos numéricos (int64, float64) e datos de texto (object).
Hai columnas categóricas e numéricas? Son todos numéricos ou hai texto? Si, hai ambas. Algunhas columnas son numéricas (Age, Fare, Survived, SibSp, Parch), mentres que outras son categóricas (Sex, Embarked, Cabin, Ticket, Name).
Que columnas teñen valores nulos?
- Age → 177 valores nulos.
- Cabin → 687 valores nulos (a maioría da columna).
- Embarked → 2 valores nulos.
Que variables parecen importantes para prever a supervivencia?
- Pclass (Clase do pasaxeiro).
- Sex (Os datos mostran que as mulleres sobreviviron máis).
- Age (A idade pode influír na probabilidade de supervivencia).
- Fare (O prezo do billete pode estar relacionado coa posición e oportunidades no barco).
❓ Paso 4: Identificación de valores nulos
🚢 Análise de Valores Nulos no Titanic 📊
🔍 Columnas con máis valores nulos
| Columna | Valores Non Nulos | Valores Nulos | Porcentaxe de Valores Nulos |
|---|---|---|---|
| Age | 714 | 177 | 19.87% |
| Cabin | 204 | 687 | 77.14% |
| Embarked | 889 | 2 | 0.22% |
| Resto de columnas | 891 | 0 | 0% |
Resposta ás preguntas de reflexión
Que columnas teñen máis valores nulos? Cal é a columna con máis valores nulos?
🔸 A columna con máis valores nulos é Cabin, con case o 77% dos datos ausentes.
🔸 Age tamén ten bastantes valores nulos (19.87%).
🔸 Embarked ten moi poucos valores nulos (0.22%), polo que é fácil de completar.
Como poderiamos tratar os valores nulos para non perder información útil? Crees que é importante conservar eses datos ou debemos eliminalos?
🔸 Age: Podemos substituír os valores nulos pola media ou mediana das idades.
🔸 Cabin: Dado que ten demasiados datos ausentes, podemos eliminar a columna ou agrupar por zonas do barco.
🔸 Embarked: Como só faltan 2 datos, podemos substituílos pola categoría máis frecuente.
Que impacto pode ter isto nos resultados do modelo? Como pode afectar a calidade do modelo se hai moitos valores nulos?
✔ Conservar ou eliminar Cabin? Se ten demasiados valores nulos, pode crear ruido no modelo e sería mellor eliminala.
✔ Age é importante para prever a supervivencia, polo que debemos tratar os valores nulos con precaución.
✔ Se hai moitos valores nulos, o modelo pode non aprender correctamente, afectando a súa precisión.
A calidade dos datos é esencial! Canto mellor sexa a preparación dos datos, mellores serán as predicións.
🛠️ Paso 5: Tratamento inicial de valores nulos
Decido substituir en Age os valores pola media, Embarked pola máis común e eliminar a columna Cabin porque ten moitos valores nulos.
🚢 Tratamento de Valores Nulos no Titanic 📊
📜 Código empregado
# Substituír valores nulos en Age pola media df['Age'] = df['Age'].fillna(df['Age'].mean()) # Substituír valores nulos en Embarked pola categoría máis común df['Embarked'] = df['Embarked'].fillna(df['Embarked'].mode()[0]) # Eliminar a columna Cabin porque ten demasiados valores nulos df = df.drop(columns=['Cabin']) # Verificar os cambios print(df.isnull().sum()) # Comprobar que xa non hai valores nulos
df.head(10) # Mostra as 10 primeiras filas do DataFrame
🔍 Resultado do Código
| Columna | Valores Non Nulos | Valores Nulos |
|---|---|---|
| PassengerId | 891 | 0 |
| Survived | 891 | 0 |
| Pclass | 891 | 0 |
| Name | 891 | 0 |
| Sex | 891 | 0 |
| Age | 891 | 0 |
| SibSp | 891 | 0 |
| Parch | 891 | 0 |
| Ticket | 891 | 0 |
| Fare | 891 | 0 |
| Embarked | 891 | 0 |
Accións realizadas
🔸Age → Substitúo os valores nulos pola media das idades, mantendo datos representativos para todos os pasaxeiros.
🔸Embarked → Completo os valores nulos coa categoría máis frecuente, evitando perder información relevante.
🔸Cabin → Elimino a columna porque tiña demasiados valores nulos (77%), dificultando a súa utilidade no modelo.
Resposta ás preguntas de reflexión
É mellor eliminar ou substituír valores nulos? Depende da cantidade de datos perdidos. Se hai poucos valores nulos, substituílos é mellor para manter información útil.
Por que pode ser útil substituílos en vez de eliminar filas? Se eliminamos filas con valores nulos, reducimos o tamaño do dataset e podemos perder datos importantes.
Como decidir a mellor estratexia? Analizando a importancia das columnas no modelo e a porcentaxe de valores nulos.
Que opción preserva máis información? Substituír valores nulos con estimacións representativas (media, mediana ou moda) en vez de eliminar filas.
Se eliminamos moitos datos, o modelo pode ter menos información para aprender. Se tratamos ben os valores nulos, melloramos a súa precisión.
Autoavaliación
Lista de Cotexo
📂 Actividade 1: Exploración inicial dos datos
Licenciado baixo a Licenza Creative Commons Atribución Compartir igual 4.0