Jose Antonio Padron Fernandez
EstudiantePreguntaPlatziDataChallenge Parte 1, las instrucciones y tips las encontrarás en el blog de Platzi cada lunes.
Para resolver este primer reto los pasos son: - Aprobar el Curso de Manipulación y Análisis de Datos con Pandas y Python - Descargar los datos del Titanic desde - Unir los tres CSVs (gender_submission, test y train) - Responder las siguientes preguntas: 1. ¿Cuántas personas iban en el titanic? 2. ¿Cuántos hombres y mujeres sobrevivieron? 3. ¿Cuál fue el top 10 de edad que más sobrevieron y el top 10 de edad que no lo lograron? 4. ¿Cuántos cargos o títulos iban en el barco? Ejemplo: Capitanes, Mrs. Miss, etc. (Acá usarás expresiones regulares) 5. ¿Cuánto es la sumatoria del valor de los tickets en USD (yep en USD)?
- ¿Cuantas personas iban en el titanic?
- ¿Cuantas Mujeres y hombres sobrevivieron?
- ¿Cuál fue el top 10 de edad que más sobrevivieron y de los que no?
- Haciendolo directamente
- Tomar las edades de los niños menores a 1 año como si tuvieran 1 año,
- Cargos o titulos dentro del barco:
- Sumatoria de los tickets en USD
Gabriel Salvador
EstudianteCreo haberlo hecho. Para cargar los archivos usé:
gender =pd.read_csv('/content/gender_submission.csv') test1=pd.read_csv('/content/test.csv') train=pd.read_csv('/content/train.csv')
Para juntarlos utilicé merge 2 veces
x=gender.merge(test,how='inner') y=x.merge(train,how='outer')
1. ¿Cuántas personas iban en el titanic? Usando
y.PassengerId.nunique
tengo que el número de pasajero es de 1309
2. ¿Cuántos hombres y mujeres sobrevivieron? Para crear un dataframe solamente con losque sobrevivieron
vivos = y.loc[y.Survived==1]
Las mujeres que sobrevivieron estan en el siguiente dataframe
v_mujeres = vivos.loc[vivos.Sex=='female']
y los hombres en
v_hombres=vivos.loc[vivos.Sex=='male']
Analizando las dimensiones de cada dataframe, los hombres que sobrevivieron fueron 109 y las mujeres 385.
3. ¿Cuál fue el top 10 de edad que más sobrevieron y el top 10 de edad que no lo lograron?
Usando numpy y la función map transformo los datos al inmediato inferior para evitar tener edades con decimales
import numpy as np vivos['Age']=vivos.Age.map(lambda x: np.floor(x))
Luego con grupby se puede contar las personas que sobrevivieron de acuerdo a sus edades.
x1 =vivos.groupby(['Age'])['Survived'].count() x1=x1.sort_values(ascending=False) x1.head(10)
El top 10 de edades que sobrevivieron fue de 22, 24, 18, 36, 30, 27, 35, 29, 19 y 45.
Los que no sobrevivieron estan en el dataframe siguiente
muertos= y.loc[y.Survived==0]
Smodifica la edad como hice antes
muertos.Age=muertos.Age.map(lambda x : np.floor(x))
Se agrega una columna de "unos" para que sea fácil sumar
muertos['ones']=1
Y se usa groupby de la misma forma que se hizo con los que sobrevivieron
x2= muertos.groupby(['Age'])['ones'].count() x2=x2.sort_values(ascending=False) x2.head(10)
las edades de las personas que no lo lograron fueron de 21, 24, 25, 28, 30, 18, 22, 26, 32 y 36.
4. ¿Cuántos cargos o títulos iban en el barco? Ejemplo: Capitanes, Mrs. Miss, etc. (Acá usarás expresiones regulares)
La verdad no supe cómo hacer. Pueda que me equivoque pero en el curso de pandas no se vió algo relacionado a esto. En este link encontré que se puede hacer de esta forma:
Se define una función que encuentra el título de una persona viendo el texto que está entre una coma y un punto en su nombre
def get_title(name): if '.' in name: return name.split(',')[1].split('.')[0].strip() else: return 'Unknown'
Luego se aplica la función
titles = sorted(set([x for x in y.Name.map(lambda x: get_title(x))])) print('Different titles found on the dataset:') print(len(titles), ':', titles) print()
Se encontraron 18 títulos, los cuales fueron 'Capt', 'Col', 'Don', 'Dona', 'Dr', 'Jonkheer', 'Lady', 'Major', 'Master', 'Miss', 'Mlle', 'Mme', 'Mr', 'Mrs', 'Ms', 'Rev', 'Sir' y 'the Countess'.
5. ¿Cuánto es la sumatoria del valor de los tickets en USD (yep en USD)?
Con
y.Fare.sum()
el resultado fue de 43550.4859
Angello Villanueva Menichetti
EstudianteHola! primero quiero dejar el Github donde subí todo lo que hice (De momento solo esta el reto, pero sin explicaciones). Github
- Importando librerias, los datos requeridos y haciendo los merge correspondientes:
import pandas as pd import numpy as np df_gender = pd.read_csv('gender_submission.csv') df_train = pd.read_csv('train.csv') df_test = pd.read_csv('test.csv')
Merge:
# Realizo un merge del df_test y del df_gender df_1_merge = pd.merge(df_test,df_gender, on = ['PassengerId'], how = 'inner') # Reorganizo las columnas para mi propia comodidad cols = df_1_merge.columns.tolist() col = cols[-1:] + cols[:-1] df_merge = df_1_merge[col] # Realizo una concatenación del df_train y df_merge df = pd.concat([df_train, df_merge], ignore_index = True) df
![]()
Aquí hay dos formas de hacerlo segun mi perspectiva:
Haciendolo directamente quedaria
top_survived= vivos.groupby(['Age'])['Survived'].count().sort_values(ascending=False).head(10) top_survived
![]()
Tomando a los menores de 1 año como de 1 año de edad
df.loc[df['Age'] < 1, 'Age'] = 1 vivos_2 = df.loc[df.Survived== 1] top_survived_r = vivos_2.groupby(['Age'])['Survived'].count().sort_values(ascending=False).head(10) top_survived_r
![]()
Podemos ver claramente que hay el top cambia con esta inclusión
Top 10 no sobrevivientes:
![]()
Investigando un poco acerca de como otros participantes habían realizado esta operación (en Kaggle), encontré que la forma más fácil era generar una nueva columna, en la cual separaríamos primero por ',' con el comando split, ya que si vemos la columna "Name" los nombre siguen el siguiente patrón [Nombre, Titulo. Nombre], al separar por la coma no quedamos con el segundo elemento del string y luego usamos split por '.' y nos quedamos con el primer elemento, es decir el Titulo. Con strip generamos una copia de un string y eliminamos lo que se encuentra hacia a izquierda y derecha
#Titulos df['Title'] = df.Name.apply(lambda name: name.split(',')[1].split('.')[0].strip()) df.groupby(['Title'])['PassengerId'].count().sort_values(ascending=False)
![]()
![]()
Bryan Duarte
EstudianteMuy bueno para repasar lo del curso de pandas, así lo hice yo.
![]()
![]()
![]()
Dashboard rápido de los datos https://datastudio.google.com/reporting/29134ac5-c77f-4c1d-8b79-6d75733fa37e
Julián Andrés Santos Méndez
EstudianteHola a todos.
Mi implementación está acá: PlatziDataChallenge #1 Julian Santos
Juan Camilo Alvarez Jurado
EstudianteReto realizado. Esta es mi solución (instrucciones para Notebook IPython):
import pandas as pd # Importando datos de una carpeta 'data' gender_df = pd.read_csv('data/gender_submission.csv') test_df = pd.read_csv('data/test.csv') train_df = pd.read_csv('data/train.csv') # Mezclando datos de los CSV test_gender_df = pd.merge(test_df, gender_df) full_df = pd.concat([train_df, test_gender_df]).reset_index(drop = True) # 1. ¿Cuántas personas iban en el Titanic? full_df.shape[0] # R. 1309 personas # 2. ¿Cuántos hombres y mujeres sobrevivieron? full_df[full_df['Survived'] == 1]['Sex'].value_counts() # R. Sobrevivieron 385 mujeres y 109 hombres # 3. ¿Cuál es el top 10 de edad de sobrevivientes y top 10 de no sobrevivientes? list(full_df[full_df['Survived'] == 1]['Age'].dropna().value_counts().sort_values().tail(10).sort_index().index) list(full_df[full_df['Survived'] == 0]['Age'].dropna().value_counts().sort_values().tail(10).sort_index().index) # R. El top 10 de edades que sobrevivieron es 18.0, 19.0, 22.0, 24.0, 27.0, 29.0, 30.0, 35.0, 36.0, 45.0 # El top 10 de edades que no sobrevivieron es 18.0, 19.0, 21.0, 22.0, 24.0, 25.0, 26.0, 28.0, 29.0, 30.0 # 4. ¿Cuántos cargos o títulos iban en el barco? (Mr., Miss, Capitán, etc.) def separate_title(name): return name.split('.')[0].split(', ')[-1] titles = full_df['Name'].apply(separate_title) list(titles.unique()) len(titles.unique()) # R. Hay 18 títulos en el dataset: 'Mr', 'Mrs', 'Miss', 'Master', 'Don', 'Rev', 'Dr', 'Mme', 'Ms', 'Major', 'Lady', 'Sir', 'Mlle', 'Col', 'Capt', 'the Countess', 'Jonkheer', 'Dona' 5. Sumatoria del valor de los tickets en USD full_df['Fare'].sum() # La sumatoria de tickets es de $43550.49 (aproximado)
Mauricio Gomez
EstudianteDavid Esteban Solorzano Taborda
EstudianteLa solucion al primer reto https://github.com/estebansolo/DataChallenges/blob/master/Titanic/challenge.ipynb
Emmanuel Guerra Sánchez
EstudiantePrimer reto completado.
Estaré terminando el curso durante el fin de semana.
Mayra Carolina Morataya Guerra
Estudiante1. ¿Cuántas personas iban en el titanic? 1,309
2. ¿Cuántos hombres y mujeres sobrevivieron? 385 Mujeres, 109 Hombres
3. ¿Cuál fue el top 10 de edad que más sobrevieron y el top 10 de edad que no lo lograron?
![]()
![]()
Guillermo Sanchez
EstudianteQue buena iniciativa!! Sin embargo en la tercera pregunta de la edad, al ser variable cuantitativa continua, lo mejor seria asignar rangos no? 0-10, 10-20.....

