3. Dades d’un naufragi¶
El fitxer titanic.csv conté les dades dels passatgers del Titanic, el famós vaixell transatlàntic que l’any 1912 es va enfonsar en el seu viatge inaugural en xocar amb un iceberg. Si llegim aquest fitxer mitjançant la següent comanda de pandas, obtenim un pandas.DataFrame com aquest:
>>> import pandas as pd
>>> df = pd.read_csv('titanic.csv').set_index('PassengerId')
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Survived 891 non-null bool
1 Pclass 891 non-null int64
2 Name 891 non-null object
3 Sex 891 non-null object
4 Age 714 non-null float64
5 Ticket 891 non-null object
6 Fare 891 non-null float64
7 Cabin 204 non-null object
dtypes: bool(1), float64(2), int64(1), object(4)
memory usage: 56.6+ KB
Descarregueu-vos el fitxer titanic.csv, proveu de llegir-lo en l’intèrpret de Python tal com s’indica en l’exemple de més amunt i examineu les columnes que conté. Observeu que les columnes Age i Cabin contenen valors desconeguts. La columna Pclass conté un nombre entre 1 i 3 que indica la classe en la qual viatjaven els passatgers i la columna Fare conté el preu del bitllet.
Les funcions que es demanen a continuació han de treballar amb un DataFrame qualsevol amb la mateixa estructura (índex numèric ordenat i columnes), però no necessàriament el mateix de l’exemple, poden correspondre a les dades dels passatgers de qualsevol vaixell.
3.1. Funció preu_max (2 punts)¶
Al mòdul naufragi (fitxer naufragi.py), implementeu-hi la funció següent:
- naufragi.preu_max(df, pclass)¶
Per exemple,
>>> df = pd.read_csv('titanic.csv').set_index('PassengerId')
>>> preu_max(df, 1)
('Ward, Miss. Anna', 512.3292)
>>> preu_max(df, 2)
('Hood, Mr. Ambrose Jr', 73.5)
>>> preu_max(df, 3)
('Sage, Master. Thomas Henry', 69.55)
Disposeu de més jocs de proves al fitxer tests-preumax.txt.
3.2. Funció supervivencia (1.5 punts)¶
Al mateix mòdul naufragi (fitxer naufragi.py), implementeu-hi la funció següent:
- naufragi.supervivencia(df, sex, pclass, edat1, edat2)¶
- Paràmetres:
- Retorna:
Tupla amb tres enters:
nombre de passatgers del sexe sex, classe pclass i edat compresa entre edat1 i edat2 (ambdues incloses)
total de supervivents d’aquestes característiques
nombre de passatgers d’aquestes característiques que no van sobreviure
Com deveu haver observat, pot haver-hi passatgers de qui se’n desconegui l’edat. En previsió, en el cas que edat1 sigui un nombre negatiu, aquesta funció retornarà aquests tres valors (nombre total de passatgers, supervivents i morts) del sexe i classe indicats però d’edat desconeguda.
Per exemple,
>>> df = pd.read_csv('titanic.csv').set_index('PassengerId')
>>> supervivencia(df, 'female', 1, 20, 50)
(58, 56, 2)
>>> supervivencia(df, 'male', 3, 30, 61)
(85, 10, 75)
>>> supervivencia(df, 'female', 3, -1, 0)
(42, 25, 17)
Disposeu de més jocs de proves al fitxer tests-supervivencia.txt.