5. Pandas: Compres de pantalons

El fitxer pantalons.csv conté les dades de les compres de pantalons realitzades per una botiga al llarg d’un període de diversos anys. 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('pantalons.csv', parse_dates=['Data'])
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 800 entries, 0 to 799
Data columns (total 8 columns):
 #   Column   Non-Null Count  Dtype         
---  ------   --------------  -----         
 0   Data     800 non-null    datetime64[ns]
 1   Venedor  800 non-null    object        
 2   Gènere   800 non-null    object        
 3   Talla    800 non-null    object        
 4   Unitats  800 non-null    int64         
 5   Preu     800 non-null    float64       
 6   Color    681 non-null    object        
 7   País     800 non-null    object        
dtypes: datetime64[ns](1), float64(1), int64(1), object(5)
memory usage: 50.1+ KB

Descarregueu-vos el fitxer pantalons.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é. Fixeu-vos que els valors de la columna Preu és el preu total de la compra, no el preu per unitat.

Les funcions que es demanen a continuació han de treballar amb qualsevol DataFrame que tingui la mateixa estructura , però no necessàriament el mateix de l’exemple, poden correspondre a les compres de pantalons de qualsevol altra botiga.

5.1. Funció Preu_mitja (2 punts)

Al mòdul preum (fitxer preum.py), implementeu-hi la funció següent:

preum.preu_mitja(df, t, g, v)
Paràmetres:
  • df (DataFrame) – Dataframe amb les dades de compres de pantalons

  • t (str) – Talla de pantalons

  • g (str) – Gènere

  • v (str) – Venedor

Retorna:

Preu mitjà per unitat a què s’han comprat pantalons de la talla t i gènere g al venedor v. Si no s’han comprat pantalons de la talla i gènere indicat al venedor, cal retornar 0.0.

Essent df el Dataframe amb les dades del fitxer d’exemple obtenim:


>>> from preum import preu_mitja
>>> p = preu_mitja(df, 'XL', 'home', 'Centric Brands LLC')
>>> print(f"{p:.2f}")
22.67
>>> p = preu_mitja(df, 'M', 'dona', 'POPPYS KNITWEAR PRIVATE LIMITED')
>>> print(f"{p:.2f}")
17.82
>>> p = preu_mitja(df[:10], 'S', 'unisex', 'TCE JEANS CO.LTD')
>>> print(f"{p:.2f}")
0.00

Disposeu dels jocs de proves al fitxer tests-preum.txt.