5. Pandas: Més sobre dades d’un naufragi (2 punts)¶
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é.
La funció que es demana a continuació ha 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.
Al mòdul naufragi (fitxer naufragi.py), implementeu-hi la funció següent:
- naufragi.mateixa_edat(df, nom)¶
- Paràmetres:
- Retorna:
Llista, ordenada lexicogràficament, amb els noms dels passatgers de la mateixa edat que el passatger de nom donat. Com al dataframe hi ha passatgers amb edat desconeguda (missing values), en el cas que aquest sigui el cas del passatger de nom donat aquesta funció ha de retornar la llista buida.
Per exemple,
>>> df = pd.read_csv('titanic.csv').set_index('PassengerId')
>>> mateixa_edat(df, 'Duane, Mr. Frank')
['Duane, Mr. Frank', 'Millet, Mr. Francis Davis', 'Ostby, Mr. Engelhart Cornelius']
>>> mateixa_edat(df, 'Madill, Miss. Georgette Alexandra')
['Elias, Mr. Tannous', 'Madill, Miss. Georgette Alexandra', 'McGowan, Miss. Anna "Annie"', 'Najib, Miss. Adele Kiamie "Jane"', 'Yasbeck, Mrs. Antoni (Selini Alexander)']
>>> mateixa_edat(df, 'Laleff, Mr. Kristo')
[]
Disposeu de més jocs de proves al fitxer tests-mateixa-edat.txt.