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:
- 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.