3. Observació d’esquirols

El fitxer esquirols.csv conté les dades de les observacions d’esquirols als parcs de Nova York durant l’any 2024. 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("esquirols.csv")
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 433 entries, 0 to 432
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   Area         433 non-null    object 
 1   Area_ID      433 non-null    object 
 2   Park_Name    433 non-null    object 
 3   Park_ID      433 non-null    int64  
 4   Squirrel_ID  433 non-null    object 
 5   Color        432 non-null    object 
 6   Highlights   339 non-null    object 
 7   Location     399 non-null    object 
 8   Activities   378 non-null    object 
 9   Day          425 non-null    float64
 10  Month        426 non-null    float64
dtypes: float64(2), int64(1), object(8)
memory usage: 37.3+ KB

Descarregueu-vos el fitxer esquirols.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 i valors que conté. Fixeu-vos algunes columnes contenen valors nuls (missing data).

Les funcions que es demanen a continuació han de treballar amb un DataFrame qualsevol amb la mateixa estructura (índex numèric i columnes), però no necessàriament el mateix de l’exemple, poden correspondre a les observacions en altres parcs o en un altre any. Deseu les dues funcions al mateix mòdul esquirols (fitxer esquirols.py).

3.1. Funció activitat (2 punts)

esquirols.activitat(df, p, a)
Paràmetres:
  • df (DataFrame) – Dataframe amb les observacions d’esquirols com el de l’exemple

  • p (str) – Nom d’un parc de Nova York

  • a (str) – Descripció d’una activitat, com ara 'Running' o 'Eating'

Retorna:

Nombre d’esquirols observats al parc p realitzant l’activitat a

Per exemple,


>>> activitat(df, 'McCarren Park', 'Running')
10
>>> activitat(df, 'Columbus Park', 'Climbing')
2
>>> activitat(df, 'Fort Tryon Park', 'Eating')
4

Observeu que a la columna “Activities” hi pot haver la descripció de més d’una activitat, per exemple 'Running, Chasing, Climbing'. Per tant, caldrà que utilitzeu el mètode pandas.Series.str.contains().

Disposeu de més jocs de proves al fitxer tests-activitat.txt.

3.2. Funció parc_max_color (2 punts)

esquirols.parc_max_color(df, c)
Paràmetres:
  • df (DataFrame) – Dataframe amb les observacions d’esquirols com el de l’exemple

  • c (str) – Color

Retorna:

Parc on s’han observat més esquirols de color c

Per exemple,


>>> parc_max_color(df, 'Gray')
'Tompkins Square Park'
>>> parc_max_color(df, 'Cinnamon')
'McCarren Park'
>>> parc_max_color(df, 'Black')
'Stuyvesant Square Park'

Disposeu de més jocs de proves al fitxer tests-max-color.txt.